diff --git a/客服agent/D2.1-客服Agent执行Todolist.md b/客服agent/D2.1-客服Agent执行Todolist.md index 5199e56..4e214ca 100644 --- a/客服agent/D2.1-客服Agent执行Todolist.md +++ b/客服agent/D2.1-客服Agent执行Todolist.md @@ -1,4 +1,4 @@ -# 客服 Agent 执行 Todolist(执行看板 · v6.24) +# 客服 Agent 执行 Todolist(执行看板 · v6.25) > **体系编号**:`D2.1` · 域:二、对外交付 · 编号体系见 `D1.1` §4.0 @@ -46,6 +46,22 @@ **看板状态更新**:`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 提交合并** ⇒ 「投顾清除」被取代) > **本轮决议**(用户 2026-09-20「**按照你的建议来 然后全部做一遍前端测试 并提交到我的分支 我下午要演示**」)= 按建议执行 + 全跑前端测试 + 推送到 `qyqy_develop`。 diff --git a/开发文档/D1.6-对话上下文提取与开工前补充决策-2026-09-17.md b/开发文档/D1.6-对话上下文提取与开工前补充决策-2026-09-17.md index 561d8ff..2f3aba8 100644 --- a/开发文档/D1.6-对话上下文提取与开工前补充决策-2026-09-17.md +++ b/开发文档/D1.6-对话上下文提取与开工前补充决策-2026-09-17.md @@ -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` 拍板后) ```