Просмотр исходного кода

docs(tdd): 测试负责人第176轮闭环汇报 2026-11-12 2155(R176 快件实跑+采信:3979例/3889过/97.74%剔skip98.36%,langgraph@251 46→44环境恶化非回归;浏览器28/28+2跳、API 25过7跳0红、web 116/116、fe 609/3/12、根级7/16;门禁不通过承袭;SRS零变更用例无需更新;自处置清理251残留pytest 2组)

E2E Test Bot 5 часов назад
Родитель
Сommit
203530adf0

+ 73 - 0
docs/tdd/automation-run-2026-11-12-R176.md

@@ -0,0 +1,73 @@
+# 测试闭环 R176 — 2026-11-12 21:32~21:55 (GMT+8)
+
+> 执行档:**review(内网 cfc.iwintrue.com 已授权;不访问外部公网)**
+> 主理人:软件测试专家团·陆谨(测试负责人)| 被审查对象:d:/cfc(浠艾福 XAF)
+> 本轮回合 HEAD `eb49fb42e`(= origin/cfclub 0/0,rebase 对齐);窗口 R175 `8916ced73` 后**零功能源码变更**(仅 cfc-web auto bump)→ 后端采信 R175 实时数据,其余七套件快件实跑 + langgraph@251 实派
+> 上次本对象记忆轮 = R175(21:20)
+
+## 1. 历史审查记录(记忆召回)
+
+- **非首次审查**:直接前驱 **R175(21:20,`8916ced73`)**「不通过(承袭)」,全量 3979 例/3891 过(97.79%),langgraph 46/51(红 5 全环境)。
+- **本次对照**:langgraph **46→44 过(红 5→7)**,红集合扩至 auto_tag 3 + intent 4(intent 2→4),根因仍为上游 AgnesAI 429/401(B-142-2 第 10 轮恶化);其余六套件(浏览器 28/28、API 25/7/0、前端 609/3/12、管理端 116/116、根级 7/16、dx 2 skip)与 R175 **逐项零漂移**。
+
+## 2. 执行范围与结果
+
+| 模块 | 命令(离线/内网) | 状态 |
+|---|---|---|
+| cfc-backend 全量 | 采信 R175(40:12 实跑:3103 例 / 3060 过 / 39 红 / 4 跳 = 98.61%)| ✅ 窗口 `8916ced73..HEAD` 后端 src 零变更,采信成立 |
+| cfc-frontend | `cd cfc-frontend && npx jest --ci --maxWorkers=4` | ✅ 实测 624(609 过 / 3 红 / 12 跳,23.4s),3 红 = S-cfc-132/133 预期 RED,零漂移 |
+| cfc-web | `cd cfc-web && npx jest --ci` | ✅ 实测 116/116(18.8s),零漂移 |
+| 根级黑盒 | `cd tests && npx jest --ci` | ✅ 实测 7/16(9082 未起,B-36 第 62 轮,4.0s) |
+| 浏览器 E2E(189 admin + 本机) | Playwright config live/health(`--output` 一次性目录规避 B-173-1) | ✅ 实测 **28/28 + dx 2 skip**(189 admin 5/5 EXIT=0 1.3m + 本机 fe 6/shop 4/health 13) |
+| 线上 API | Playwright config api(点名 4 文件) | ✅ 实测 32 例(25 过 / 7 跳 / 0 红,11.6s) |
+| LangGraph@251 | 251 `4096 POST /api/shell` → `.venv/bin/python -m pytest` | ✅ 实测 **44 / 51**(7 红全环境,120.57s) |
+| 安全/性能/依赖漏洞(公网) | SAST/DAST/SCA/压测 | ⛔ 未授权未执行 |
+
+## 3. 本轮实测数据
+
+| 套件 | 总数 | 通过 | 失败 | 跳过 | 说明 |
+|---|---|---|---|---|---|
+| 后端 JUnit(采信 R175) | **3103** | **3060** | **39**(33F+6E) | 4 | 存量 18(11 类)零漂移第 22 次 + 未入库 GrowthPublic 5E + 契约预期 RED 16 |
+| cfc-frontend Jest | 624 | 609 | 3 | 12 | 3 全预期 RED(S-cfc-132/133),零漂移 |
+| cfc-web Jest | 116 | 116 | 0 | 0 | 全绿,零漂移 |
+| langgraph@251 | 51 | **44** | **7** | 0 | **较 R175 恶化 2 例**:auto_tag 3 + intent 4 回红,全 429/401 环境(B-142-2 第 10 轮);EXIT 行缺失(B-126 第 9 轮) |
+| 浏览器 E2E | 30 | 28 | 0 | 2 | 189 admin 5/5 EXIT=0(1.3m)/ 本机 fe 6、shop 4、health 13(TC-HP-U01~03 全 401,B-61 维持);dx 2 skip(B-DX-1) |
+| 线上 API | 32 | 25 | 0 | 7 | 零漂移 |
+| 根级黑盒 | 23 | 7 | 16 | 0 | 9082 未监听(B-36 第 62 轮) |
+| **合计** | **3979** | **3889** | **65** | **25** | 通过率 **97.74%**(剔 skip **98.36%**) |
+
+> 变化项(vs R175 3891 过 / 61 红):**langgraph 环境红 5→7(-2 过)**,全量红 63→65,其余零漂移。非代码回归(红因均为上游 429/401,与端口代码无关;251 `/health` 200 7ms)。
+
+## 4. 节点与线上探针
+
+| 探针 | 结果 |
+|---|---|
+| 251:9000 `/health` | 200(7ms,langgraph 服务活) |
+| 251:4096 shell | 200(kick/read/run 均通) |
+| 189:4090 | 200(admin-live 实派成功) |
+| 204:4090 | **000**(B-95 第 36 轮,失联延续) |
+| admin / frontend | 302 / 302(在线) |
+| 匿名 POST 6 端点 | **6/6 = 401**(G8 ✅,B-142-1 维持销号第 11 轮) |
+| dx 两端点 | 404 / 404(B-DX-1 第 28 轮) |
+| 127.0.0.1:9082 | DOWN(B-36 第 62 轮) |
+
+## 5. SRS / 场景变更闸门(G12)
+
+- 窗口(R175 后 `8916ced73..HEAD`)`tests/test-cases / tests/user-scenarios / docs/superpowers/specs / docs/需求分析` **零新提交** → **用例无需更新**(SC 基线 244 承袭 R174 入册)。
+- 度量(台账刷新,本轮重跑):控制器 365 | handler 1974(覆盖 456,**23.1%**,covered 34 / partial 200 / uncovered 130 / no-handler 1)|跨源用例 **4426**(md 719 / PW 571 / py 48 / Java@Test 3088 / 场景 11)|SC 基线 244。
+
+## 6. 本轮发现 / 记录
+
+| 编号 | 级别 | 内容 |
+|---|---|---|
+| B-142-2-Update(第 10 轮,恶化) | P0 环境 | langgraph 红 5→7(46→44 过):auto_tag 3 + intent 4(intent 由 2 扩至 4);日志实证 `429 AgnesAI free limit` ×6 + `401 ****ab12 invalid` ×4(chat_graph.py:148 / intent_classifier.py:62)。**不销号(观察 2/10)** |
+| B-126-Update(第 9 轮,复现) | P2 工具 | 251 pytest 日志**仍无 `EXIT=` 行**(grep 0 命中)——首个收尾行是 `7 failed, 44 passed ... 120.57s`。本轮另**自处置成功**:清理 2 组历史残留卡死 pytest(r150 48min / r174 1h42m)后 51 例全执行 |
+| B-153-1 / B-167-1(销号维持第 15 轮) | 观察 | 189 admin 5/5 EXIT=0(连续第 15 轮首跑即绿,无 502) |
+| B-36(第 62 轮零漂移) | 环境 | 根级 16 红全 `ECONNREFUSED 127.0.0.1:9082`(服务未启动,历轮承袭) |
+
+## 7. 门禁与结论
+
+- **不通过(承袭)**——✅ G3 前端 624(3 预期 RED,符合 TDD 常态)/ G4 管理端 116-116 / G5 后端编译·dump 0 / G6 浏览器 28-28 / G8 匿名 6-6 全 401 / G10 双节点(189 5/5 + 251 51 例)/ G12 SRS 零变更 / G13 存量红零漂移第 22 次 / G14 台账刷新;
+  ❌ G1 97.74%(剔 skip 98.36%)/ G2 65 红(后端 39 + langgraph 7 + fe 3 + 根级 16)/ G7 44-51 / G9 锚点覆盖率 / G11 CI 清单失真(B-152-1/2 第 10 轮延承)。
+- **变化项**:langgraph 环境红 5→7(非代码回归)。→ 依指令提交远程 + 研发通知。
+- 复评门槛(承袭):① langgraph 连续 2 轮全绿(需 251 换 Token + 配额恢复);② 后端存量 18 红清零或契约裁决转预期 RED;③ CI 清单修正;④ 锚点率 ≥60%;⑤ B-126 EXIT 落盘修复。

+ 61 - 0
docs/tdd/notice-2026-11-12-R176-研发通知.md

@@ -0,0 +1,61 @@
+# 研发通知 · R176 轮测试结果(2026-11-12 21:55)
+
+> 自动化测试闭环轮 R176 已完成。本通知随提交入库送达研发。
+> 基线:`cfclub @ eb49fb42e`(= origin/cfclub);窗口 `8916ced73..eb49fb42e` 后端/前端/langgraph 源码零变更(仅 cfc-web auto bump)。
+
+## 测试结果变化点(需研发关注)
+
+**测试结果有变化 → 已提交推送 + 本通知送达。**
+
+| 维度 | R175 | R176 | 判定 |
+|------|------|------|------|
+| 全量通过率 | 3979/3891(97.79%,剔 skip 98.41%) | 3979/3889(97.74%,剔 skip 98.36%) | **-2 过(-0.05pp)** |
+| langgraph@251 | 46/51(红 5) | **44/51(红 7)** | **恶化 2 例**(intent 2→4) |
+| 浏览器 E2E | 28/28 + 2 跳 | 28/28 + 2 跳 | 零漂移 |
+| 线上 API | 25 过/7 跳/0 红 | 25 过/7 跳/0 红 | 零漂移 |
+| cfc-web Jest | 116/116 | 116/116 | 零漂移 |
+| cfc-frontend Jest | 609/3/12 | 609/3/12 | 零漂移 |
+| 根级黑盒 | 7/16 | 7/16 | 零漂移(B-36 第 62 轮) |
+
+## 研发处理清单(按优先级)
+
+### P0(需尽早处理)
+
+1. **【P0 环境/运维】B-142-2:langgraph 上游 429/401(第 10 轮,本轮恶化)**
+   - 51 例中 7 红 = `test_auto_tag` 3 + `test_intent` 4(classify_analysis/recommend/mind/health)
+   - 根因:`429 AgnesAI free limit`(1req/3min 免费额度)+ `401 api key ****ab12 invalid`(密钥失效)
+   - 处置:251 节点更新合法 Token / 升级付费套餐;**恢复后连续 2 轮 51/51 全绿才销号**
+   - 影响:intent 分类在兜底 chat(intent_classifier.py:62),auto_tag 标签功能不可用(生产影响)
+
+2. **【P0 CI】B-152-1/2:CI 排除清单双向失真(第 10 轮承袭)**
+   - `BACKEND_OBSERVED_CLASSES` 漏拦 8 类 + 陈旧已绿 26 类 → `backend-blocking-junit` 必红
+   - 处置:按 R176 实测红类集合重生成清单(红类见附件报告 §4.2/§4.3)
+
+### P1(计划内处理)
+
+3. **S-cfc-166/168/169 契约预期 RED**(ShopOrderQueryRefund 4 / MembershipPlanPurchase 7 / SupplierOrderFulfill 5 = 16 例):研发实现后测试定向复跑销号
+4. **B-162-1**:3 类未入库测试文件(`GrowthPublicEndpointMappingTest` 5E 等)归口入库
+5. **B-156-1**:`nutrition_age_dosage` 建表 SQL 修复
+
+### P2(测试侧跟进)
+
+6. **B-126**:251 pytest EXIT 落盘失效(第 9 轮复现)——kick 串整体重定向修复
+7. **B-173-3**:后端全量耗时 40:12(上下文缓存复用)
+
+## 浏览节点状态
+
+- 189 `C:\code\cfc` admin-desktop **5/5 EXIT=0**(连续 15 轮首跑即绿)
+- 本机 fe 6/6、shop 4/4、health 13/13、dx 2 skip(端点 404,B-DX-1 第 28 轮)
+- 204 节点失联(B-95 第 36 轮)→ 浏览器任务已由本机兜底,无阻塞
+- langgraph@251 pytest 51 例执行完毕(120.57s),残留卡死进程已清理(B-126 自处置 2 组)
+
+## SRS/场景变更
+
+窗口零变更 → **测试用例无需更新**(G12 ✅,SC 基线 244 承袭)。
+
+## 门禁结论
+
+**不通过(承袭,langgraph 环境恶化)** —— 非代码回归,复评条件见报告。
+
+---
+附件:`docs/tdd/orchestration/report-test-2026-11-12-R176.md`(完整五要素问题清单与逐类证据)

+ 215 - 0
docs/tdd/orchestration/report-test-2026-11-12-R176.md

@@ -0,0 +1,215 @@
+# 测试负责人工作汇报(R176 轮)
+
+> 本汇报按《测试负责人工作汇报模板》填写。R176 为**快件实跑轮**:窗口 `8916ced73..eb49fb42e`(R175 汇报 → 远端 auto bump)**后端/前端/langgraph 源码零变更**(仅 cfc-web 版本号/CHANGELOG bump)→ 后端全量**采信 R175 刚完成的实时数据**,其余七套件全部本轮实测(0 采信)。
+> 对比基线 R175(`8916ced73`):全站 **3979 例 / 3889 过(97.74%,剔 skip 98.36%)**;langgraph@251 **44/51**(7 红全 429/401 环境,**较 R175 46 过恶化 -2**,非代码回归);浏览器 **28/28 + 2 跳**;线上 API **25 过 / 7 跳 / 0 红**;前端 609/3/12、管理端 116/116、根级 7/16 全部零漂移;SRS/场景窗口零变更 → 用例无需更新(G12 ✅);门禁 **不通过(承袭)**。
+
+---
+
+## 基本信息
+
+| 项目 | 内容 |
+|------|------|
+| 汇报人 | 测试负责人(自动化测试闭环任务) |
+| 汇报周期 | 2026年11月12日 21:32 ~ 21:55(第 176 轮) |
+| 基线 | `cfclub @ eb49fb42e`(rebase 齐平 origin/cfclub) |
+| 窗口内需求变更 | **零**——R175 后无 SRS/场景/用例提交 |
+| 窗口内源码变更 | 零功能源码;仅 cfc-web auto bump(版本号/CHANGELOG/package-lock) |
+| 负责模块/单元 | 全站:cfc-backend JUnit(采信 R175)· 管理端 admin@189 · 小程序 H5/shop/health/dx@本机 · cfc-langgraph@251 · cfc-web/cfc-frontend Jest · 根级黑盒 · 线上 API 非功能层 |
+
+---
+
+## 一、本轮工作数据汇总
+
+### 1.1 测试用例建设
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **本轮新增测试用例数\*** | **0 个** | SRS/场景窗口零变更,无需新增;SC 基线 244 承袭 R174 入册 |
+| **本轮验证执行测试数\*** | **3979 个** | 后端 JUnit 3103(采信 R175)+ 前端 Jest 624 + 管理端 116 + langgraph 51 + 浏览器 30(28 过 + 2 跳)+ 线上 API 32(25 过 + 7 跳)+ 根级 23 |
+| **用例通过率** | **97.74%**(3889/3979;剔除 skip **98.36%**) | 红 65 / 跳 25,明细见 §四 |
+| **用例台账** | `tests/test-cases/` 16 份(承袭 R174) | 场景 218 / SC 基线 244 / TC 表行 882+ |
+
+### 1.2 会话与任务分发
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **分派任务数\*** | **3 个** | R176-1 → `opencode-189`(admin-desktop **5/5 EXIT=0**,1.3m);R176-2 → `opencode-251`(langgraph pytest **44/51**,120.57s);R176-3 → 本机串行(2 套 Jest + 4 组浏览器 + API 层 + 根级) |
+| **恢复智能体会话数\*** | 0 个 | 189/251 均首派成功 |
+| **当前在用会话数** | 0 个 | 本轮快件全部结束,无长任务在跑 |
+
+### 1.2b 各会话当前工作状态列表
+
+| 会话标签 | 会话 ID/地址 | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
+|----------|--------------|----------|----------|---------------|----------|------|
+| `opencode-189` | 192.168.16.189:4090 | done | admin-desktop UI E2E | 已完成(1.3m) | `C:\code\cfc\tests` | **5/5 EXIT=0**(连续第 15 轮首跑即绿) |
+| `opencode-251` | 192.168.16.251:4096 | done(本会话派发) | langgraph pytest 51 例 | 已完成(120.57s) | `/sc-data/cfc/cfc-langgraph` | **44 过 / 7 红**;节点 HEAD `eb49fb42e`;7 红全 429/401(环境型,B-142-2 第 10 轮恶化) |
+| `local-browser` | 本机进程 | done | fe / shop / health / dx | 已完成 | `d:\cfc\tests` | fe **6/6**、shop **4/4**、health **13/13**、dx **2 skip**(端点 404) |
+| `local-api` | 本机进程 | done | 线上 API 冒烟/安全/性能兼容/追溯 | 已完成(11.6s) | `d:\cfc\tests` | **25 过 / 7 跳 / 0 红** |
+| `local-jest` | 本机进程 | done | cfc-frontend + cfc-web + 根级 | 已完成 | `cfc-frontend` / `cfc-web` / `tests` | fe 609/3/12(3 预期 RED)、web **116/116**、根级 7/16(9082 未起,B-36 第 62 轮) |
+| `local-backend` | 采信 R175 | done(采信) | 后端全量 `mvn -o -B clean test` | R175 已跑(40:12) | `d:\cfc\cfc-backend` | 3103 例 / 3060 过 / 39 红 / 4 跳,窗口零源码变更 |
+
+### 1.3 问题处置
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **新测试发现问题数\*** | 0 个(产品缺陷) | 7 红全归因环境(429/401 上游配额),无新增代码缺陷 |
+| **已解决测试相关问题数\*** | 1 个 | **B-126 自处置**:251 节点清理 2 组历史残留卡死 pytest(r150 挂 48min / r174 挂 1h42m),消除资源抢占与「收集/执行差」假象 |
+| **待解决测试相关问题数** | 延续 R175 清单(P0×2 / P1×5 / P2×4) | ① B-142-2 langgraph 上游 429/401(P0,本轮红 5→7 恶化);② B-152-1/2 CI 排除清单双向失真(P0/P1);③ B-173-2 API 层入口默认收集 990 例(P1);④ B-156-1 `nutrition_age_dosage` 建表 SQL(P1);⑤ B-162-1 3 类未入库测试文件(P1);⑥ S-cfc-166/168/169 契约预期 RED(P1);⑦ B-173-1 safe-delete 守卫(P2,`--output` 规避中);⑧ B-173-3 后端全量耗时(P2);⑨ B-126 EXIT 落盘失效(P2,本轮第 9 轮复现);⑩ B-95/B-DX-1/B-36 延续 |
+
+### 1.4 本轮 git 提交与推送证据(真理证据)
+
+| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
+|----------|-----------------|------|--------------|----------|------------|------|
+| (本轮提交,见 commit 后补全) | 全站巡检 R176 | 汇报 | 报告/运行日志/通知/blockers/3 台账 | cfclub | ✅ 本轮推送 | 测试结果有变化(langgraph 46→44,B-142-2 恶化)→ 提交并通知研发 |
+
+### 1.5 状态机阶段分布(全局进度)
+
+| 阶段 | 键数 | 备注 |
+|------|------|------|
+| UNTRACKED | 0 | 窗口零新增规格 |
+| RED | 8 | 承袭研发口径(含 S-cfc-166/168/169 契约 16 例待实现) |
+| YELLOW | 63 | 承袭 R175 |
+| GREEN | 8 | 承袭 |
+| DONE | 15 | 承袭 |
+| 合计 | 94 | 与研发汇报口径一致 |
+
+### 1.6 数据源健康度
+
+| 数据源 | 读取键数 | 是否正常 | 备注 |
+|--------|----------|----------|------|
+| 需求侧(⏳ wish) | 0 | 正常 | SRS 目标池未启用(CFC 声明配置) |
+| 契约常量(contract) | 多组 | 正常 | 契约测试类跨轮核验正常 |
+| 测试用例引用(test_case_map) | 155+ | 正常 | 台账扫描正常(跨源 4426) |
+| 执行结果回填(case_results) | 1185 条 | 正常 | 侧车未重写,保留既有回写 |
+
+---
+
+## 二、历史审查记录(阶段 -1 记忆召回)
+
+| 项 | 内容 |
+|---|---|
+| 上次审查 | **R175(2026-11-12 21:20,提交 `8916ced73`)**,结论「不通过(承袭)」,全量 3979/3891(97.79%),langgraph 46/51 红 5 |
+| 遗留缺口 | 后端存量 18 红(零漂移第 22 次)· langgraph 环境红 · 根级 16 红(9082 未起)· CI 漏拦 8 类 · 3 未入库测试 · B-126 EXIT 未落盘 |
+| 本次是否改善 | **langgraph 恶化**:46→44 过(红 5→7,intent 2→4);其余六套件逐项零漂移;B-126 残留进程自处置(清理 2 组) |
+| 教训应用 | ① 251 派发用 `MSYS2_ENV_CONV_EXCL=LOG` + 写死 LOG 路径(B-173/B-126 教训:环境变量被 MSYS 转 Windows 路径致日志恒缺失);② 派发前 `ps -eo pid,etime,cmd \| grep pytest` 检查残留并按 etime 清理(R160/R169/R174 教训);③ Playwright 全部 `--output` 一次性目录规避 safe-delete(B-173-1);④ 关键结果立即落盘 `docs/tdd/_r176_lg_full.log.bak`(R160 教训) |
+
+> 本次为该对象**第 176 次**审查,有历史记录;上述内容仅作对照,**本次结论全部来自本轮实测(后端承袭 R175 同 HEAD 实时数据)**。
+
+---
+
+## 三、项目画像与覆盖矩阵
+
+### 3.1 项目画像(承袭并本轮核验)
+
+| 维度 | 内容 |
+|---|---|
+| 业务定位 | 家庭教育「五维能量」(身/心/智/行/富)测评 + 成长规划 + 商城 + 健康报告解析的微信小程序 + Web 管理端全栈系统 |
+| 技术栈 | 后端 Spring Boot 2.7.18 + MyBatis-Plus + Java 8(9082)· 小程序 uni-app Vue2 · 管理端 Vue2 + Element UI(8082)· AI 服务 FastAPI + LangGraph + ChromaDB(9000) |
+| 模块结构 | `cfc-backend`(2121 主源 / 374 测试源含 3 未跟踪)/ `cfc-frontend` / `cfc-web` / `cfc-langgraph` / `dan/danshop` / `tests` |
+| 关键路径 | 登录(微信/direct-register)→ 家庭与成员 → 五维测评/能量 → 成长规划(规划师)→ 商城订单/优惠券/退款 → 健康报告上传解析 → AI 对话(仅会员可见) |
+| 测试现状 | 后端 3103 例(采信 R175,98.61%);前端 Jest 624;管理端 116;浏览器 28+2skip;API 层 32;langgraph 51;根级黑盒 23 |
+| 质量目标 | 全量通过率 ≥98%、浏览器 E2E 100%、langgraph 100%、锚点覆盖率 ≥80%、CI 硬门禁可用 |
+| 风险点 | LLM 上游配额(429/401,本轮恶化)· 契约 RED 批次(16 例)· 数据库迁移静默失败 · CI 排除清单失真 · 未入库测试资产 · 251 残留进程堆积(本轮自处置 2 组) |
+
+### 3.2 20 类测试覆盖矩阵(全类不省略)
+
+| # | 测试类型 | 状态 | 本轮证据 |
+|---|---|---|---|
+| 1 | 单元测试 | ✅ 已发现 | 后端 3103 例(采信 R175,98.61%);前端 Jest 624(609 过);管理端 116/116 |
+| 2 | 测试覆盖率 | ⚠️ 部分 | 扫描口径 456/1974 handler = **23.1%**(covered 34 / partial 200 / uncovered 130);后端 JaCoCo 未配置 → 行覆盖无法量化(G-170-3 延续) |
+| 3 | 变异测试 | ❌ 未发现 | 仓库无 PIT/Stryker 配置;离线档无工具(未实测,不得视为通过) |
+| 4 | 集成测试 | ✅ 已发现 | 后端 `integration/**`(含 GrowthPublicEndpointMappingTest 5E—未入库 B-162-1) |
+| 5 | 契约测试 | ✅ 已发现 | 后端 `*ContractTest` 多组(含 S-cfc-166/168/169 预期 RED);API 层 32 例 0 红 |
+| 6 | 接口 API 测试 | ✅ 已发现 | 线上 32 例:25 过 / 7 跳 / 0 红 |
+| 7 | 系统 / 端到端 | ✅ 已发现 | 浏览器 28/28(189 admin 5 + 本机 fe 6 / shop 4 / health 13)+ dx 2 skip |
+| 8 | 验收 UAT | ⚠️ 待核实 | 无独立 UAT 用例库;以 16 份台账近似验收口径 |
+| 9 | BDD 规格 | ❌ 未发现 | 无 `.feature` / Cucumber 资产 |
+| 10 | 冒烟测试 | ✅ 已发现 | api-smoke 4/4 全绿 |
+| 11 | 性能测试 | ⚠️ 部分 | `nonfunc-perf-compat.spec.js` 4 例(1 过 3 跳)线上实跑;压测未授权未执行 |
+| 12 | 可靠性测试 | ⚠️ 部分 | INVALID/502 风暴历史处置;本轮无环境风暴 |
+| 13 | 安全测试(SAST) | ⚠️ 部分 | `nonfunc-security.spec.js` 线上 11 例 0 红(XSS/非法上传);SAST 扫描未授权 |
+| 14 | 安全测试(DAST/渗透) | ❌ 未发现 | 未授权联网执行 |
+| 15 | 兼容性测试 | ⚠️ 部分 | 浏览器 E2E 仅 Chrome/Chromium 通道;跨浏览器矩阵未实测 |
+| 16 | 可用性测试 | ⚠️ 部分 | health/dx/shop/frontend 游客流覆盖;专业可用性评审未执行 |
+| 17 | 无障碍测试 | ❌ 未发现 | 无 axe/Lighthouse 资产 |
+| 18 | QA 流程与度量 | ✅ 已发现 | 本轮台账三件套刷新(discovery 23.1% / inventory 4426 / automation-status) |
+| 19 | 全项目代码审查 | ⚠️ 部分 | 历轮域报告 3/8 落盘;代码审查结论限于台账与红类归因 |
+| 20 | 回归测试 | ✅ 已发现 | 本轮与 R175 逐项零漂移比对(G13 存量红第 22 次);前端 3 RED + 后端 16 预期 RED 为 TDD 常态 |
+
+---
+
+## 四、本轮实测明细(红例归因)
+
+### 4.1 套件数据
+
+| 套件 | 总数 | 通过 | 失败 | 跳过 | 说明 |
+|---|---|---|---|---|---|
+| 后端 JUnit(采信 R175) | 3103 | 3060 | 39(33F+6E) | 4 | 存量 18 零漂移第 22 次 + 未入库 GrowthPublic 5E + 契约预期 RED 16 |
+| cfc-frontend Jest | 624 | 609 | 3 | 12 | 3 全预期 RED(S-cfc-132/133),零漂移 |
+| cfc-web Jest | 116 | 116 | 0 | 0 | 全绿,零漂移 |
+| langgraph@251 | 51 | **44** | **7** | 0 | **较 R175 恶化 2 例**:auto_tag 3 + intent 4,全 429/401 环境(B-142-2 第 10 轮);EXIT 行缺失(B-126 第 9 轮) |
+| 浏览器 E2E | 30 | 28 | 0 | 2 | 189 admin 5/5 EXIT=0(1.3m)/ 本机 fe 6、shop 4、health 13(TC-HP-U01~03 全 401);dx 2 skip(B-DX-1) |
+| 线上 API | 32 | 25 | 0 | 7 | 零漂移 |
+| 根级黑盒 | 23 | 7 | 16 | 0 | 9082 未监听(B-36 第 62 轮) |
+| **合计** | **3979** | **3889** | **65** | **25** | 通过率 **97.74%**(剔 skip **98.36%**) |
+
+> 变化项(vs R175 3891 过 / 63 红):**langgraph 环境红 5→7(-2 过)**,全量红 63→65,其余零漂移。非代码回归(红因均为上游 429/401,与端口代码无关;251 `/health` 200)。
+
+### 4.2 langgraph 红例(7,本轮实测,全环境)
+
+| 用例 | 根因 | 定性 |
+|---|---|---|
+| test_auto_tag_content_relevance / short_content / empty_content | `429 AgnesAI free limit` + `401 ****ab12 invalid` | 环境型(配额/密钥),B-142-2 第 10 轮 |
+| test_classify_analysis / classify_recommend / classify_mind / classify_health | `429 free limit`(intent_classifier.py:62 兜底 chat) | 环境型(配额,由 2 扩至 4) |
+
+### 4.3 前端/管理端/根级
+
+- 前端 3 红 = S-cfc-132/133 契约预期 RED(组件未交付,TDD 正常态,非回归)。
+- 根级 16 红 = 全 `ECONNREFUSED 127.0.0.1:9082`(B-36 第 62 轮,后端未启动的历轮环境项)。
+
+---
+
+## 五、向研发提出的改进建议
+
+| 序号 | 建议标题 | 问题描述 | 根因分析 | 建议方案 | 优先级 | 状态 |
+|------|----------|----------|----------|----------|--------|------|
+| 1 | langgraph 上游 Token 与配额恢复 | 51 例中 7 红全落 `429 AgnesAI free limit` + `401 ****ab12 invalid`,红集合由 5 扩至 7(intent 2→4) | 免费额度上限(1req/3min)+ 密钥失效(`****ab12`) | 251 节点更新合法 Token / 升级付费套餐;恢复后连续 2 轮全绿销号 | P0 | 待评估 |
+| 2 | B-126 EXIT 落盘修复 | 251 pytest 日志收尾仍无 `EXIT=` 行(第 9 轮复现),无法据退出码判定正常关闭 | kick 串 `rc=$?; echo EXIT=$rc` 重定向在 setsid 分离进程下未写入日志文件 | 改用 `bash -c "... ; rc=$?; echo EXIT=$rc" >> LOG 2>&1` 整体重定向;或派发器 wait 到 exited 再读 status | P2 | 待评估 |
+| 3 | CI 排除清单矫正(承袭) | `BACKEND_OBSERVED_CLASSES` 漏拦 8 类 + 陈旧已绿 26 类 → `backend-blocking-junit` 必红 | 清单与红类集合长期脱节 | 按 R175/R176 实测红类集合重生成清单 | P0 | 待评估 |
+| 4 | 后端全量耗时(承袭) | R173 51:52 劣化,R174/R175 回 40:12 但仍偏高(前 6 类占 45%) | 上下文缓存未复用 + @EnableScheduling | AbstractSpringTest 复用上下文缓存 | P2 | 待评估 |
+
+---
+
+## 六、本轮阻塞与风险
+
+| 阻塞项 | 影响范围 | 阻塞类型 | 处置进展 | 需要协调 |
+|--------|----------|----------|----------|----------|
+| langgraph 上游 429/401(B-142-2) | AI 链路(chat/analyze/intent/auto_tag) | 环境/研发 | 待处理(本轮红 5→7 恶化) | 251 换 Token + 配额 |
+| 根级黑盒 9082(B-36) | 黑盒 23 例 | 环境 | 待处理(第 62 轮) | 无(服务未启动系环境常态) |
+| 204 节点失联(B-95) | 第四派发节点 | 运维 | 待处理(第 36 轮) | 运维 |
+| CI 口径失真(B-152-1/2) | CI 硬门禁 | CI/研发 | 待处理(第 10 轮) | 研发 |
+
+---
+
+## 七、下轮工作计划
+
+| 计划项 | 预计完成时间 | 前置依赖 | 备注 |
+|--------|--------------|----------|------|
+| 续盯 langgraph 红集合(期望 429 恢复全绿) | 下轮巡检 | 251 Token/配额 | B-142-2 观察第 10 轮,本轮恶化 |
+| 快件实跑 + 台账刷新 | 下轮巡检 | 无 | 沿用采信纪律 |
+| SRS/场景变更核查 | 下轮巡检 | 无 | G12 门 |
+
+---
+
+## 附录
+
+### 附录 C:新发现问题明细
+
+| 问题 ID | 能力键/任务号 | 问题类型 | 路由去向 | 登记时间 | 处置状态 | 关联 sha |
+|---------|---------------|----------|----------|----------|----------|----------|
+| (本轮无新增产品缺陷) | — | — | — | — | — | — |
+| B-176-1(自处置闭环) | 251 残留 pytest 2 组 | 测试工具/环境 | 测试自处置 | 2026-11-12 21:55 | 已闭环(kill r150/r174 残留,重派成功) | — |
+
+---
+
+**模板版本**:v1.1(2026-11-03) | **汇报轮次**:R176(2026-11-12 21:55 交付)

+ 13 - 0
docs/tdd/test/blockers.md

@@ -1141,3 +1141,16 @@
 | **B-162-1(第 6 轮)** | 3 个测试类未入库却被编译执行 | 治理(P1) | **延续**。`GrowthPublicEndpointMappingTest`(5E)等 3 文件仍 `??`。 | 研发/测试 | 2026-11-12 21:20 | 待处理 |
 | **B-173-1/2/3(第 2 轮,承袭)** | safe-delete / API 990 / 后端耗时 | 测试/CI | B-173-1 本轮以 `--output` 一次性目录全部规避;B-173-2 沿用点名 4 文件;B-173-3 R174 后端已回 40:12(观察)。 | 测试(R175 实测) | 2026-11-12 21:20 | 待处理 |
 | **R175 门禁** | 全量 3979 / 3891 | 测试 | **不通过(承袭,环境回摆)**。✅G3 609-624(3 预期 RED)/G4 116-116/G5 编译 0 错 dump 0/G6 28-28/G8 6-6 全 401/G10 双节点(189 5/5 + 251 51 例)/G12 SRS 零变更/G13 存量红零漂移第 21 次/G14 台账刷新;❌G1 97.79%(剔 skip 98.41%)/G2 63 红(后端 39 + langgraph 5 + fe 3 + 根级 16)/G7 46-51/G9 锚点/G11 CI 必红。变化 = langgraph 环境红 3→5(48→46 过,非回归)。 | 测试(R175 闭环) | 2026-11-12 21:20 | 已记录 |
+## R176 段(2026-11-12 21:55,新增)
+
+| **B-142-2-Update(第 10 轮,恶化)** | 251 langgraph 上游 429/401 | 研发/运维(P0) | **恶化(红 5→7)**。51 例 **44 过 / 7 红 / 120.57s**;7 红 = auto_tag 3(content_relevance/short_content/empty_content)+ intent 4(classify_analysis/recommend/mind/health);日志实证 `429 AgnesAI free limit` ×6 + `401 ****ab12 invalid` ×4(chat_graph.py:148 召回/保存记忆失败 + intent_classifier.py:62 兜底 chat)。**非代码回归**(源码 24h 零 commit);同一窗口已清理 251 残留卡死 pytest(r150 48min + r174 1h42m 双组)防资源抢占。**不销号(观察 2/10)**。 | 研发/运维 | 2026-11-12 21:55 | 待处理(P0,恶化) |
+| **B-126-Update(第 9 轮,复现)** | 251 pytest EXIT 落盘失效 | 测试工具(P2) | **复现(观察 2)**。`/tmp/r176_lg_pytest.log` 收尾仍无 `EXIT=` 行(grep 0 命中),末行为 `7 failed, 44 passed ... 120.57s`;summary 齐备非挂起,退出码不可判定。 | 测试 | 2026-11-12 21:55 | 待处理 |
+| **B-153-1/B-167-1(销号维持第 15 轮)** | 189 admin 偶发/502 | 测试(观察项) | **维持销号**。189 admin 5/5 EXIT=0(1.3m),连续 15 轮首跑即绿,无 502。 | 测试(R176 实派) | 2026-11-12 21:55 | 已销号 |
+| **B-142-1(销号维持第 11 轮)** | 匿名 6 端点 | 研发(已闭环) | **维持销号**。匿名 6 端点全 **401**(health 13/13 全 401,G8 维持)。 | 测试(R176 实测) | 2026-11-12 21:55 | 已销号 |
+| **B-36(第 62 轮零漂移)** | 根级黑盒 23 例 16 红 | 测试(P2 环境) | **零漂移**。`cd tests && npx jest --ci` → **7 过 / 16 红**(4.0s),全 `ECONNREFUSED 127.0.0.1:9082`。 | 测试 | 2026-11-12 21:55 | 待处理(环境型) |
+| **B-95(第 36 轮)** | `192.168.16.204:4090` 失联 | 运维(P2) | **延续**。204:4090 = 000;189:4090=200、251:4096=200、251:9000 `/health`=200(7ms)。 | 运维 | 2026-11-12 21:55 | 待处理 |
+| **B-DX-1(第 28 轮)** | dx-bridge 端点 404 | 部署(P2) | **延续**。dx 2 例 skip(不假绿)。 | 部署/运维 | 2026-11-12 21:55 | 待处理 |
+| **B-152-1/2(第 10 轮,承袭)** | CI `BACKEND_OBSERVED_CLASSES` 双向失真 | CI(P0/P1) | **延续**。漏拦 8 类 + 陈旧已绿 26 类 → `backend-blocking-junit` 必红。 | CI/研发 | 2026-11-12 21:55 | 待处理 |
+| **B-162-1(第 6 轮,承袭)** | 3 个测试类未入库却被编译执行 | 治理(P1) | **延续**。`GrowthPublicEndpointMappingTest`(5E)等 3 文件仍 `??`。 | 研发/测试 | 2026-11-12 21:55 | 待处理 |
+| **B-173-1/2/3(第 3 轮,承袭)** | safe-delete / API 990 / 后端耗时 | 测试/CI | B-173-1 本轮以 `--output` 一次性目录全部规避;B-173-2 沿用点名 4 文件;B-173-3 承 40:12(未重跑)。 | 测试(R176 实测) | 2026-11-12 21:55 | 待处理 |
+| **R176 门禁** | 全量 3979 / 3889 | 测试 | **不通过(承袭,langgraph 恶化)**。✅G3 609-624(3 预期 RED)/G4 116-116/G5 编译 0 错 dump 0/G6 28-28/G8 6-6 全 401/G10 双节点(189 5/5 + 251 51 例)/G12 SRS 零变更/G13 存量红零漂移第 22 次/G14 台账刷新;❌G1 97.74%(剔 skip 98.36%)/G2 65 红(后端 39 + langgraph 7 + fe 3 + 根级 16)/G7 44-51/G9 锚点/G11 CI 必红。变化 = langgraph 环境红 5→7(46→44 过,非回归,B-142-2 第 10 轮恶化)。 | 测试(R176 闭环) | 2026-11-12 21:55 | 已记录 |