## 为什么做这一步 权威文档 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...`), 末尾带省略号,是接口文档的示意值,**不是可用凭据**。
31 lines
1.2 KiB
Python
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")
|