docs: 落档本轮(演示一键启动 + 权威文档入库 + 回归复跑)

- `开发文档/D1.6` 新增 **§4.38**:本轮指令原文、`demo.ps1`/`启动演示.bat` 的职责与实测结果、
  两个真实问题(PS 5.1 传参吞双引号 ⇒ 改走 stdin;终端乱码经复核是捕获侧假象)、
  **权威文档入库的关键判断**(仓库内是 2026-09-16 前的过期副本 + 旧文件名,少 49 份 ⇒
  按「权威覆盖过期」入库并复核零差异)、入库前密钥扫描结论、回归复跑全表、推送记录。
- `客服agent/D2.1` 升 **v6.25**:同上要点的执行看板口径,并写明「后续同步文档一律按
  权威副本 -> 仓库 单向覆盖」。
- 两份文件的仓库副本与权威副本**逐字节一致**(已复核)。

回归(入库后跑):pytest 1909 passed / 3 skipped / 0 failed;ruff 20;mypy app 2;
e2e_smoke 31/31;portal_api_check 40 项 35/0/5;http_probe 11/11;_consistency GATE PASS。
This commit is contained in:
张胜宇
2026-09-20 15:09:12 +08:00
parent bc61d5c579
commit 4306326a56
2 changed files with 69 additions and 1 deletions
@@ -2632,6 +2632,58 @@ pytest **2 failed / 1577 passed / 2 skipped**(= `T0` 基线同两项)、ruff
| 1 | ~~是否把 `客服agent/` + `开发文档/` 纳入仓库~~ | ✅ **已决并已执行**(2026-09-20):用户拍板纳入,本轮已提交推送(74 份文本 / 约 2.9 MB)。原建议「建议纳入」被采纳 |
| 2 | **两把 key 轮换**(`DASHSCOPE_API_KEY` / `DEEPSEEK_API_KEY` 已在会话中出现明文) | **答辩后当轮立刻轮换**(答辩前换要付一次"重启 + 复核 11/11"的联调窗口) |
### 4.38 2026-09-20 第三十四轮会话记录(`W12` 下半场:演示一键启动脚本 + **权威文档入库** + 回归复跑)
> **本轮指令(原文)**:「你现在帮我做一个演示的前端一键启动的一个脚本 然后再跑一遍回归测试,把 `客服agent/` + `开发文档/` 一并入库并再推一次」
**一、新增演示一键启动(2 个文件,提交 `e0992c6`)**
| 文件 | 作用 |
|---|---|
| `demo.ps1` | 在 `start.ps1`(已幂等)之上补三件事:① **刷新行情**(下单要求快照落在 15 分钟内,过期即 503,且系统无自动刷新);② **五项自检**(口径与 `D2.5` §1 完全一致:容器三件套 / 向量库三集合计数 / Worker / 行情 / `milvus_local_uri` 开关);③ **打开演示页面**(访客页 + 客户登录页)。另把「登录限流 **10 次 / 60 秒**,不要反复登录」印进「开讲前必看」 |
| `启动演示.bat` | **GBK**(与仓库既有 `.bat` 同编码),双击即用,参数透传 `demo.ps1` |
**实测**:`启动演示.bat -SkipStart -NoBrowser` 与完整路径(含调用 `start.ps1`)均 **五项自检全过、退出码 0**。
**二、边做边修(2 个真实问题,均如实登记)**
| # | 现象 | 根因 | 处置 |
|---|---|---|---|
| 1 | 自检 2/5 报 `unterminated string literal`(集合名的引号被吞) | Windows PowerShell 5.1 **传原生命令参数时会吞掉内嵌双引号**(`& $Python -c $probe`) | 改为经 **stdin** 传给 python(`$probe \| & $Python -`),并在脚本里写明原因,防止后人改回 `-c` |
| 2 | 我这边终端显示中文乱码 | 捕获管道把我读成 UTF-8,而 bat 输出是 GBK 字节 | 复核实为**捕获侧假象**:重定向落盘后按 GBK 解码,中文完全正常 ⇒ 用户双击的控制台无此问题(不改脚本) |
**三、权威文档入库(本轮关键判断,提交 `bc61d5c`)**
- **发现**:仓库里的 `客服agent/`、`开发文档/` 是 **2026-09-16 之前的过期副本,且用旧文件名**(`客服Agent执行Todolist.md`,而非体系编号 `D2.1-...`),并且缺 `D2.5`/`D2.6` 与 `D1.x`/`D3.x`/`D4.x` 等共 **49 份**。
- **处置**:按「**权威覆盖过期**」——移除过期树(客服agent **21** 文件 / 开发文档 **40** 文件),复制权威版(**24** / **50**),入库后**逐文件零差异**(已用集合比对复核)。
- **入库前安全扫描**(规则:`sk-` 类 / `Bearer` 长串 / `password=`、`api_key=` 赋值 / 会话中出现过的两把明文 key 片段):**真实密钥只出现在被 `.gitignore` 命中的 `.env`**;`.env.example` 与 `config/risk.env.example` 只有空占位;文档内唯一命中是 `D3.1` 里一处**截断的示例 JWT**(`eyJ...` 后带省略号,非可用凭据)。
- **规模**:74 文件 / 40415 insertions / 约 2.9 MB 纯文本,最大单文件 397 KB。
**四、回归复跑(在文档入库之后跑,覆盖新文件)**
| 门禁 | 结果 |
|---|---|
| `pytest -q`(全量含集成) | **1909 passed / 3 skipped / 0 failed** |
| `ruff check app tools tests` | 20(与上一轮持平;远端分支本身 22) |
| `mypy app` | 2(= 既有基线) |
| `tools/e2e_smoke_test.py --read-only` | **31/31** |
| `tools/portal_api_check.py` | 40 项:**通过 35 / 失败 0 / 跳过 5** |
| `_eval_harness/http_probe.py` | **11/11 succeeded** |
| `_consistency.py` | **GATE PASS** |
**五、推送**
- `e5b4d02..bc61d5c qyqy_develop -> qyqy_develop`(两次推送均为快进,**未用 `--force`**)。
- 回归的**顺序说明**:先入库、后跑回归 —— 目的是让回归覆盖新增文件(否则新增 74 份文本不进任何门禁的视野)。
**六、仍待你决定(1 项,其余全部已有结论)**
| # | 事项 | 我的最优建议 |
|---|---|---|
| 1 | **两把 key 轮换**(`DASHSCOPE_API_KEY` / `DEEPSEEK_API_KEY` 已在会话中出现明文) | **演示后当轮立刻轮换**(演示前换要付一次「重启 + 复核 11/11」的联调窗口)。4 步:控制台新建 → 改 `group_fqcd_jr\.env` → 重启 API + Worker → 跑 `_eval_harness\http_probe.py` 复核 11/11 → 再吊销旧 key。**任何文档不落 key 值** |
---
## 5. 建议的开工顺序(在 `DEC-11` 拍板后)
```