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:
@@ -1,4 +1,4 @@
|
|||||||
# 客服 Agent 执行 Todolist(执行看板 · v6.24)
|
# 客服 Agent 执行 Todolist(执行看板 · v6.25)
|
||||||
|
|
||||||
> **体系编号**:`D2.1` · 域:二、对外交付 · 编号体系见 `D1.1` §4.0
|
> **体系编号**:`D2.1` · 域:二、对外交付 · 编号体系见 `D1.1` §4.0
|
||||||
|
|
||||||
@@ -46,6 +46,22 @@
|
|||||||
|
|
||||||
**看板状态更新**:`F-3` → **✅ 已落地**(新增 4 条单测)。批次 H 剩余:`H-05`。新增待办:**三项安全路由缺口收口**(`G-01` 优先,建议排在 `H-05` 前)。
|
**看板状态更新**:`F-3` → **✅ 已落地**(新增 4 条单测)。批次 H 剩余:`H-05`。新增待办:**三项安全路由缺口收口**(`G-01` 优先,建议排在 `H-05` 前)。
|
||||||
|
|
||||||
|
## v6.25 本轮修订要点(2026-09-20 · 演示一键启动脚本 + **权威文档目录入库** + 回归复跑)
|
||||||
|
|
||||||
|
> **本轮决议**(用户 2026-09-20「**你现在帮我做一个演示的前端一键启动的一个脚本 然后再跑一遍回归测试,把 `客服agent/` + `开发文档/` 一并入库并再推一次**」)。
|
||||||
|
|
||||||
|
| # | 修订 | 依据 |
|
||||||
|
|---|---|---|
|
||||||
|
| 1 | ✅ **新增 `demo.ps1` + `启动演示.bat`(一键演示启动)**:在幂等的 `start.ps1` 之上补**刷新行情**(15 分钟窗口)+ **五项自检**(口径 = `D2.5` §1)+ **打开演示页面**;并把「登录限流 10 次/60 秒」印进开讲前提示 | 本轮实测 |
|
||||||
|
| 2 | ✅ **实测 5/5**:`-SkipStart -NoBrowser` 与完整路径(含调用 `start.ps1`)均五项自检全过、退出码 0 | 本轮实测 |
|
||||||
|
| 3 | 📌 **边做边修(如实登记)**:① PS 5.1 传原生命令参数**吞内嵌双引号** ⇒ Milvus 探测改走 **stdin**;② 我这边终端的「中文乱码」经复核是**捕获侧假象**(按 GBK 落盘解码正常),未改脚本 | 本轮实测 |
|
||||||
|
| 4 | 🔴 **发现并纠正一处重大偏差**:仓库里的 `客服agent/`、`开发文档/` 是 **2026-09-16 前的过期副本 + 旧文件名**,比权威版少 **49 份**。按「权威覆盖过期」入库(21→24 / 40→50 文件),入库后**逐文件零差异** | 本轮实测 |
|
||||||
|
| 5 | ✅ **入库前密钥扫描**:真实密钥只在被 ignore 的 `.env`;示例文件为空占位;文档内唯一命中是 `D3.1` 的**截断示例 JWT**(非可用凭据) | 本轮实测 |
|
||||||
|
| 6 | ✅ **回归复跑(在入库之后跑)**:`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** | 本轮实测 |
|
||||||
|
| 7 | ✅ **提交推送**:`e0992c6`(脚本)+ `bc61d5c`(文档 74 文件 / 40415 insertions)⇒ `e5b4d02..bc61d5c qyqy_develop -> qyqy_develop`,两次均为快进、**未用 `--force`** | 本轮实测 |
|
||||||
|
|
||||||
|
**看板状态更新**:客服线交付面**把「演示可复现」也纳入**——现在演示只需双击 `启动演示.bat`(服务拉起 + 五项自检 + 开页面一步完成)。**入库前的判断口径**(权威覆盖过期)已写进 `开发文档\D1.6` §4.38,后续任何人同步文档都按「权威副本 → 仓库」单向覆盖。剩余待决 **1 项**:两把 key 的轮换时点(建议演示后当轮)。
|
||||||
|
|
||||||
## v6.24 本轮修订要点(2026-09-20 · `W12`:**前端全量测试** + 提交推送 + **投顾组 3 提交合并** ⇒ 「投顾清除」被取代)
|
## v6.24 本轮修订要点(2026-09-20 · `W12`:**前端全量测试** + 提交推送 + **投顾组 3 提交合并** ⇒ 「投顾清除」被取代)
|
||||||
|
|
||||||
> **本轮决议**(用户 2026-09-20「**按照你的建议来 然后全部做一遍前端测试 并提交到我的分支 我下午要演示**」)= 按建议执行 + 全跑前端测试 + 推送到 `qyqy_develop`。
|
> **本轮决议**(用户 2026-09-20「**按照你的建议来 然后全部做一遍前端测试 并提交到我的分支 我下午要演示**」)= 按建议执行 + 全跑前端测试 + 推送到 `qyqy_develop`。
|
||||||
|
|||||||
@@ -2632,6 +2632,58 @@ pytest **2 failed / 1577 passed / 2 skipped**(= `T0` 基线同两项)、ruff
|
|||||||
| 1 | ~~是否把 `客服agent/` + `开发文档/` 纳入仓库~~ | ✅ **已决并已执行**(2026-09-20):用户拍板纳入,本轮已提交推送(74 份文本 / 约 2.9 MB)。原建议「建议纳入」被采纳 |
|
| 1 | ~~是否把 `客服agent/` + `开发文档/` 纳入仓库~~ | ✅ **已决并已执行**(2026-09-20):用户拍板纳入,本轮已提交推送(74 份文本 / 约 2.9 MB)。原建议「建议纳入」被采纳 |
|
||||||
| 2 | **两把 key 轮换**(`DASHSCOPE_API_KEY` / `DEEPSEEK_API_KEY` 已在会话中出现明文) | **答辩后当轮立刻轮换**(答辩前换要付一次"重启 + 复核 11/11"的联调窗口) |
|
| 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` 拍板后)
|
## 5. 建议的开工顺序(在 `DEC-11` 拍板后)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user