Files
group_fqcd_jr/客服agent/_build/_normalize_ids.py
T
张胜宇 bc61d5c579 docs: 入库权威文档目录(客服agent/ 24 份 + 开发文档/ 50 份,替换旧命名的过期副本)
## 为什么做这一步

权威文档 74 份此前**只在本机**,评审者 clone 分支后看不到任何设计文档;而仓库里那两份同名目录
是 **2026-09-16 之前的过期副本,连文件名都是旧的**(无体系编号)。本次按「**权威覆盖过期**」入库。

## 入库内容

| 目录 | 文件数 | 体积 | 说明 |
|---|---|---|---|
| `客服agent/` | 24 | 0.77 MB | `D2.1`~`D2.6` 对外交付四件套 + 演示脚本/答辩报告 + `_build` 构建工具 |
| `开发文档/` | 50 | 2.16 MB | `D1.x` 索引与决策、`D3.x` 方案、`D4.x` 清除与重构留痕、`D5.x` 业务流程、`D6.x` 业务事实基座、`D7.x` 交付物、`D8.x` 规范 |

**旧的过期副本整体移除**(`客服Agent执行Todolist.md` → `D2.1-客服Agent执行Todolist.md` 之类
的改名 + 新增 `D2.5`/`D2.6`),入库后目录内容与权威副本**逐文件一致(零差异,已复核)**。

## 入库前的安全扫描(必须留痕)

- 扫描规则:`sk-` 类密钥 / `Bearer` 长串 / `password=`、`api_key=` 赋值 / 会话中出现过的两把明文 key 片段。
- 结论:**真实密钥只出现在 `.env`**(已被 `.gitignore` 命中,未入库);`.env.example` 与
  `config/risk.env.example` 只有**空占位**。
- 文档内唯一命中是 `D3.1` 里一处**截断的示例 JWT**(`Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...`),
  末尾带省略号,是接口文档的示意值,**不是可用凭据**。
2026-09-20 15:03:15 +08:00

31 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
"""把正文里的 h2/h3 id 规范化为「无空格、无中点」的形式(项目既有惯例)。"""
from pathlib import Path
TARGETS = [
Path(r"D:\桌面\金融\_body_plan.html"),
Path(r"D:\桌面\金融\_body_requirements.html"),
Path(r"D:\桌面\金融\_body_kb.html"),
]
MAP = {
'id="3.2-批次 A · 冻结与准备"': 'id="3.2-批次A-冻结与准备"',
'id="3.3-批次 B 至 F 摘要"': 'id="3.3-批次B至F摘要"',
'id="3.4-批次 G · 访客与鉴权"': 'id="3.4-批次G-访客与鉴权"',
'id="4.1-组 1 · 六文件八处"': 'id="4.1-组1-六文件八处"',
'id="4.2-组 2 · 访客与鉴权四文件"': 'id="4.2-组2-访客与鉴权四文件"',
}
log = []
for p in TARGETS:
if not p.exists():
log.append(f"[SKIP] {p.name} 不存在")
continue
t = p.read_text(encoding="utf-8")
changed = 0
for old, new in MAP.items():
if old in t:
t = t.replace(old, new)
changed += 1
p.write_text(t, encoding="utf-8")
log.append(f"[OK] {p.name} 规范化 {changed} 处 id")
Path(r"D:\桌面\金融\_norm.txt").write_text("\n".join(log), encoding="utf-8")