瀏覽代碼

docs(tdd): 第162轮测试负责人汇报——五节点全量实跑3818例3750过(98.25%)、langgraph 41/51红5→10(B-142-2升级P0:key 401+配额429双因)、后端353类25红(S-cfc-143预期RED3+未入库文件5)、门禁收紧不通过、零代码回归

E2E Test Bot 22 小時之前
父節點
當前提交
535bc1b567

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

@@ -0,0 +1,43 @@
+# 研发通知 · 2026-11-12 R162 测试负责人巡检
+
+> 依据《测试负责人工作汇报模板》输出。本轮测试结果与上一轮(R161)存在显著变化(langgraph 恶化 + 后端新增红),按纪律提交远程并通知研发。
+
+## 一、结论摘要
+
+- **五节点全量实跑完成(非承袭)**:后端本机 Maven 全量 51:59(353 类 / 2974 例 / **2945 过 / 25 红 / 4 跳 = 99.02%**);189 admin 浏览器 5/5 全绿(1.5m);本机 frontend 6/6 + shop 4/4 + health 13/13 全绿、dx 2 skip、根级黑盒 7/16(B-36);cfc-web 116/116、cfc-frontend 609/3/12;**251 langgraph pytest 51 例全执行 = 41 passed / 10 failed(234.76s)**。
+- **变化项 ①(显著恶化·已触发通知)**:langgraph 46/51(R160/R161 承袭)→ **41/51**,红 5→10。根因双重:**① 401:API key `****ab12` 失效(Authentication Fails);② 429:AgnesAI 免费额度每日文本配额耗尽(限速 1 请求/3 分钟)**。全为**上游环境红,零代码回归**(cfc-langgraph/ 窗口内零源码变更)。
+- **变化项 ②(后端+8 红)**:新增 `AdminArticleCreateContractTest` 3 红(**S-cfc-143 预期 RED,fail 3/6 符合契约设计**——研发新契约测试资产,非缺陷)+ `GrowthPublicEndpointMappingTest` 5 红(**本地未入库测试文件**,需归口)。历史 10 类 17 红与 R156 逐类一致,**零漂移第 10 次**。
+- **无新增代码缺陷回归**:前端/web/浏览器全部零漂移。
+
+## 二、五节点实测明细
+
+| 节点 | 用例集 | 结果 | 用时 |
+|------|--------|------|------|
+| 本机 | cfc-backend Maven 全量 | **2945 过 / 25 红 / 4 跳(2974)** | 51:59 |
+| 189:4090(远程) | admin-live UI E2E(TC-A-U01~U05) | **5 passed** | 1.5m |
+| 本机 | frontend-live(TC-F-U01~U06) | **6 passed** | 1.5m |
+| 本机 | shop-sort-api(TC-S-U01~U04) | **4 passed** | 13.3s |
+| 本机 | health-contract(TC-H + TC-HP) | **13 passed** | 8.9s |
+| 本机 | dx-bridge(TC-DX-U01/U02) | **2 skipped**(端点 404) | — |
+| 本机 | 根级黑盒 | 23 = 7 过 / 16 红(B-36,9082 未启动) | 13.9s |
+| 本机 | cfc-web / cfc-frontend Jest | 116/116 · 609/3/12 | 229s / 72s |
+| 251:4096(远程) | langgraph pytest(ignore qna/test_chat) | **41 passed / 10 failed** | 234.76s |
+
+## 三、需要研发/平台侧处理
+
+| 序号 | 事项 | 类型 | 优先级 | 建议 |
+|------|------|------|--------|------|
+| 1 | **langgraph API key `****ab12` 失效(401)+ AgnesAI 免费额度耗尽(429),51 例 10 红(B-142-2 第 9 轮升级 P0)** | 运维/AI 平台 | **P0** | ① 立即轮换有效 key(当前 key 已被上游拒绝);② 升级/更换付费额度;③ 测试侧将对 401/429 打 `xfail(strict=False)` 标识环境红,避免配额期误报 |
+| 2 | **S-cfc-148/150 契约测试影响后端基线** | 研发/测试 | P1 | 已确认 RED 契约批次(S-cfc-142~151)在途:142 全绿、143 fail3/6 符合设计、148/150 窗口内合入;下轮后端全量将纳入(类数 353→355,预期新增 3 红预算内) |
+| 3 | **后端未入库测试文件治理(B-162-1)** | 测试/研发 | P1 | `GrowthPublicEndpointMappingTest`(5 红)/`JwtInterceptorGrowthPolicyTest`/`ArticleTagsContractTest` 为 `git status ??` 未入库文件却参与编译;请确认归属(入库或删除),消除实测口径与版本库漂移 |
+| 4 | `nutrition_age_dosage` 建表 SQL 无效(B-156-1 延续) | 研发 | P1 | 修 schema.sql 索引/列 + DatabaseInitializer 幂等迁移(34 次建表失败被静默 catch) |
+| 5 | `/api/admin/**` 鉴权门缺失(B-142-1 延续) | 研发 | P1 | 匿名 `POST /api/admin/families/overview` → 200 + body code:400;对照组 5 端点全 401 |
+
+## 四、变更感知(SRS/场景)
+
+- `--changes` 窗口(R161 后):SRS / 需求分析 / specs / API_REFERENCE / test-cases **零提交** → **无新增能力键** → 零新增用例(G12 合规)。
+- 窗口内合入:S-cfc-150(`3d0c2701f`,task.task.complete 契约 RED 11 例预期 1 红)、S-cfc-148(`0b7ba4ecb`,dan.assessment.resultRecord 契约 RED 预期 2红1绿)+ 研发汇报 docs 2 条 + auto bump 1 条。
+
+## 五、git 证据
+
+- 本轮汇报与台账提交:见提交记录(`docs/tdd` 4 件套随 commit push `origin/cfclub`;推送前已 rebase 对齐远端最新 `0b7ba4ecb`)。

+ 160 - 0
docs/tdd/orchestration/report-test-2026-11-12-R162.md

@@ -0,0 +1,160 @@
+# 测试负责人工作汇报(R162 轮)
+
+> 本汇报按《测试负责人工作汇报模板》填写,数据来源为 R162 轮本机直跑实测采集(后端 Maven 全量 51:59 + cfc-frontend/cfc-web Jest + 浏览器 E2E admin@189/frontend/shop/health/dx + 根级黑盒)+ langgraph@251 实派(51 例全执行)。勿以模板占位符作为空数据。
+
+---
+
+## 基本信息
+
+| 项目 | 内容 |
+|------|------|
+| 汇报人 | 测试负责人(自动化测试闭环任务) |
+| 汇报周期 | 2026年11月12日 04:31 ~ 05:40(第 162 轮) |
+| 负责模块/单元 | 全站回归:管理端 admin + 小程序 H5 frontend(浏览器 E2E:189→admin、本机→frontend/shop/health/dx)+ cfc-langgraph(251 实派)+ 后端 JUnit 全量(本机 Maven)+ Jest 编译回归 |
+
+---
+
+## 一、本轮工作数据汇总
+
+### 1.1 测试用例建设
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **本轮新增测试用例数*** | 0 个 | SRS/场景闸门零命中(窗口内 specs/API_REFERENCE/test-cases 零提交),G12 合规;研发窗口内合入 2 个新契约测试类(S-cfc-148/150,属 RED 资产非本轮新增用例) |
+| **本轮验证执行测试数*** | 3818 个(全部实跑) | 后端 2974 + cfc-frontend 624 + cfc-web 116 + 浏览器 30(28+2skip)+ 根级黑盒 23 + langgraph@251 51 = 3818 |
+| **用例通过率** | 98.25% | = 3750 PASS ÷ 3818(2945+609+116+28+7+45 过;54 红 + 18 skip 另计口径见门禁结论) |
+
+### 1.2 会话与任务分发
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **分派任务数*** | 2 个 | 189 admin 浏览器(`_r162_189_admin.cjs` 实派)+ 251 langgraph pytest(`_r162_251_lg.cjs` 实派 .venv 修复版) |
+| **恢复智能体会话数*** | 0 个 | 单节点串行直跑,无会话中断 |
+| **当前在用会话数** | 0 个 | 所有任务已完成,无活跃浏览器自动化任务(符合「每节点仅一任务」约束) |
+
+### 1.2b 各会话当前工作状态列表
+
+| 会话标签 | 会话 ID | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
+|----------|---------|----------|----------|---------------|----------|------|
+| `local-mvn`(本机) | 本机进程 | done | cfc-backend Maven 全量(clean test) | 已完成(51:59) | d:\cfc\cfc-backend | 353 类 / 2974 例 / 25 红 / 4 跳 |
+| `local-browser`(本机) | 本机进程 | done | frontend/shop/health/dx UI E2E(串行) | 已完成 | d:\cfc\tests | 23 通过 / 2 skip,0 失败 |
+| `local-jest` | 本机进程 | done | cfc-frontend / cfc-web Jest | 已完成 | d:\cfc\cfc-frontend、d:\cfc\cfc-web | fe 609/3/12、web 116/116 |
+| `opencode-189`(admin 目标节点) | 192.168.16.189:4090 | done | admin-desktop UI E2E | 已完成(1.5m) | C:\code\cfc\tests | 5/5,首轮即绿(B-153-1 销号维持第 6 轮) |
+| `opencode-251`(langgraph 目标节点) | 192.168.16.251:4096 | done | langgraph pytest 51 例 | 已完成(234.76s) | /sc-data/cfc/cfc-langgraph | 41 过 / 10 红(全环境) |
+
+### 1.3 问题处置
+
+| 指标 | 数量 | 填写说明 |
+|------|------|----------|
+| **新测试发现问题数*** | 1 个(B-162-1) | `GrowthPublicEndpointMappingTest` 5 红 —— 03:28 本地新建**未入库**测试文件被编译执行,属测试资产治理问题(详见附录 C) |
+| **已解决测试相关问题数*** | 0 个 | — |
+| **待解决测试相关问题数** | 4 个(P0×1 / P1×2 / P2×1) | ① langgraph 10 红(B-142-2 恶化,401+429 双因);② B-156-1 建表 SQL;③ B-142-1 admin 鉴权门;④ B-162-1 未入库测试文件治理 |
+
+### 1.4 本轮 git 提交与推送证据(真理证据)
+
+| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
+|----------|-----------------|------|--------------|----------|------------|------|
+| 本汇报入库后 new_sha | 全站巡检 R162 | 汇报 | 测试文档(docs/tdd + 台账) | cfclub | 提交时 push | 含本汇报 + automation-run + blockers + 研发通知 |
+
+> 本轮无 RED/YELLOW/GREEN 阶段推进(无新测试资产入库;S-cfc-148/150 为研发 RED 资产待下轮纳入复核)。
+
+### 1.5 状态机阶段分布(全局进度)
+
+| 阶段 | 键数 | 备注 |
+|------|------|------|
+| UNTRACKED | 0 | 需求侧 ⏳ 0 键 |
+| RED | 0 | 无待写红单测键(测试侧) |
+| YELLOW | 0 | 无在途开发 |
+| GREEN | 5 | admin.auth.login / dan.assessment.getActiveMaterial / guide.trainingPlan.getPlanDetail / health.report.createReport / health.report.upload |
+| DONE | 0 | 本轮无归档键 |
+
+> 全局状态机(研发负责人侧口径,第 129 轮):86 键 RED10/YELLOW53/GREEN8/DONE15,任务池 RED 契约批次 S-cfc-142~151 在途(142 全绿已推、143 真 RED fail3/6、148/150 窗口内合入)。
+
+### 1.6 数据源健康度
+
+| 数据源 | 读取键数 | 是否正常 | 备注 |
+|--------|----------|----------|------|
+| 需求侧(⏳ wish) | 0 | 正常 | SRS 需求池未启用,合法空 |
+| 契约常量(contract) | 0 | 正常 | 本轮无派单需求 |
+| 测试用例引用(test_case_map) | 1185 | 正常 | 侧车 progress 1185 条 |
+| 执行结果回填(case_results) | 3818 | 正常 | 本轮五节点实测采集(后端本机 + 浏览器 189/本机 + langgraph 251) |
+
+---
+
+## 二、向研发提出的改进建议
+
+| 序号 | 建议标题 | 问题描述 | 根因分析 | 建议方案 | 优先级 | 状态 |
+|------|----------|----------|----------|----------|--------|------|
+| 1 | langgraph 上游 LLM 双因恶化(延续 B-142-2 升级) | 51 例 41 过 / **10 红**(R160 5 红 → R162 10 红,恶化 5 例):test_analyze 1 + test_auto_tag 5 + test_intent 4。日志实证 **① 401:API key `****ab12` invalid;② 429:`rate_limit_exceeded`(free users 每日文本配额耗尽,限速 1 请求/3 分钟)** | ① 上游 key 失效未轮换;② AgnesAI 免费额度长期耗尽,多轮测试叠加 | 运维轮换有效 key + 升级付费额度;测试侧对 401/429 打 `xfail(strict=False)` 避免配额期误报回归 | P0 | 待处理 |
+| 2 | 后端版本库纯度为 346 类但实测 353 类(含 3 个未入库文件,B-162-1) | 本轮编译执行 353 类,其中 `GrowthPublicEndpointMappingTest`(5 红)/ `JwtInterceptorGrowthPolicyTest`(0 红)/ `ArticleTagsContractTest`(0 红)3 个测试类**未入库**(`git status ??`)却被 surefire 执行 → 版本库实际内容与实测口径漂移 | 本地工作区遗留测试资产未 add/commit,历轮累积;Growth 类 03:28 新建后未归口 | 测试/研发确认 3 文件归属:有效则 `git add` 入库(Growth 红例随库评估),无效则删除;入库后结果口径即版本库纯度 | P1 | 待处理 |
+| 3 | 前端 3 个预期 RED 契约测试跟进(S-cfc-132/133) | growthHistory.dayGroupView RED-A7、signature.consignee AC-R1/R2 仍为预期红(较 R161 零漂移) | 对应契约能力尚未由开发实现(RED 状态设计内) | 研发按 S-cfc-132/133 实现后转绿 | P2 | 待处理 |
+
+---
+
+## 三、本轮阻塞与风险
+
+| 阻塞项 | 影响范围 | 阻塞类型 | 处置进展 | 需要协调 |
+|--------|----------|----------|----------|----------|
+| langgraph LLM 上游 401+429(B-142-2 升级,第 9 轮) | cfc-langgraph 51 例 10 红 | 运维/AI(P0) | **恶化 5→10**。key `****ab12` 失效 + 免费额度耗尽;251:9000 `/health` 正常(服务活、仅 LLM 面被掐) | 运维轮换 key + 升级额度;测试侧 401/429 打 xfail |
+| `nutrition_age_dosage` 建表 SQL 无效(B-156-1 第 2 轮) | 后端 schema 初始化 | 研发(P1) | 延续(34 次建表失败被静默 catch) | 研发修 schema.sql + DatabaseInitializer |
+| 后端 S-cfc-148/150 新契约测试待纳入 | 后端全量基线(353 类 → 355 类) | 测试(流程) | 窗口内合入晚于本轮 Maven 启动(04:39),下轮全量纳入;S-cfc-150 预期 1 红、S-cfc-148 预期 2 红 1 绿 | 下轮定向复核后全量 |
+| 204 节点失联(B-95 第 26+ 轮) | 204:4090 浏览器自动化节点 | 运维 | 延续。本轮探活 000;189/251 在线 | 运维恢复 204 节点 |
+
+---
+
+## 四、下轮工作计划
+
+| 计划项 | 预计完成时间 | 前置依赖 | 备注 |
+|--------|--------------|----------|------|
+| 后端全量重跑纳入 S-cfc-148/150 | 下轮 | 研发 RED 资产已入库 | 预期类数 355,定向复核两契约类红/绿 |
+| langgraph 实跑复验 | 每轮 | 运维轮换 key/额度 | 401+429 双因消除后目标 51/51 |
+| 未入库测试文件归口(B-162-1) | 1 轮内 | 测试/研发确认归属 | 入库或删除,消除口径漂移 |
+| 浏览器 28/28 零漂移维持 | 每轮 | 节点在线 | admin/frontend/shop/health 连续多轮稳定 |
+
+---
+
+## 附录
+
+### 附录 A:本轮新增测试用例明细
+
+无(0 条,SRS 闸门零命中,G12 合规)。
+
+### 附录 B:任务分派与会话恢复明细
+
+| 任务号 | 目标会话标签 | 分派时间 | 分派类型 | 当前状态 | 恢复会话标签 | 恢复原因 | 恢复时间 |
+|--------|--------------|----------|----------|----------|--------------|----------|----------|
+| R162-1 | local-mvn(本机) | 04:39 | 直跑(Maven clean test,51:59) | done | — | — | — |
+| R162-2 | local-browser(本机) | 04:42 | 直跑(串行 frontend→shop→health→dx) | done | — | — | — |
+| R162-3 | local-jest(本机) | 04:47 | 直跑 | done | — | — | — |
+| R162-4 | opencode-189(admin) | 04:39 | 派发(String.raw 修复版) | done | — | — | — |
+| R162-5 | opencode-251(langgraph) | 04:46 | 派发(.venv 修复版,234.76s) | done | — | — | — |
+
+### 附录 C:新发现问题明细
+
+| 问题 ID | 能力键/任务号 | 问题类型 | 路由去向 | 登记时间 | 处置状态 | 关联 sha |
+|---------|---------------|----------|----------|----------|----------|----------|
+| B-162-1 | 后端测试资产治理 | 测试 | 测试侧 | 2026-11-12 05:20 | 待归口(入库或删除) | — |
+
+---
+
+## 附:实测明细(证据)
+
+| 维度 | 用例集 | 结果 | 用时 | 说明 |
+|------|--------|------|------|------|
+| cfc-backend(本机 Maven 全量) | 353 类 surefire | **2945 passed / 25 failed+error / 4 skipped(2974 total)= 99.02%** | 51:59 | 10 个历史红类 17 例与 R156 逐类一致(零漂移第 10 次);新增 `AdminArticleCreateContractTest` 3 红(S-cfc-143 预期 RED,fail 3/6 符合设计)+ `GrowthPublicEndpointMappingTest` 5 红(**未入库文件**,B-162-1);EXIT=1(MojoFailure,surefire 红所致) |
+| cfc-frontend Jest | 42 suites | **609 passed / 3 failed / 12 skipped(624 total)** | 71.8s | 与 R161 严格零漂移;3 红为 S-cfc-132/133 已知预期 RED(growthHistory.dayGroupView + signature.consignee) |
+| cfc-web Jest | 17 suites | **116 passed / 0 failed** | 229.2s | 零漂移(与 R160/R161 一致) |
+| 浏览器 admin@189 | playwright.config.live.js --project=admin-desktop | **5 passed** | 1.5m | TC-A-U01~U05 全过,首轮即绿(B-153-1 销号维持第 6 轮) |
+| 浏览器 frontend(本机) | --project=frontend-mobile | **6 passed** | 1.5m | TC-F-U01~U06 全过 |
+| 浏览器 shop(本机) | --project=shop-api | **4 passed** | 13.3s | TC-S-U01~U04 价格排序契约全过 |
+| 浏览器 health(本机) | -c playwright.config.health.js | **13 passed** | 8.9s | TC-H-U01~U10 + TC-HP-U01~U03 鉴权契约 13/13(B-69 维持销号) |
+| 浏览器 dx(本机) | --project=dx-bridge | **2 skipped** | 19s | 端点 404(B-DX-1 第 19 轮,不假绿) |
+| 根级黑盒(本机) | cd tests && npx jest -c jest.config.js | **7 passed / 16 failed(23 total)** | 13.9s | B-36 第 52 轮零漂移(9082 未启动,`fetch failed`) |
+| **langgraph@251** | `.venv/bin/python -m pytest`(51 例收集) | **41 passed / 10 failed** | 234.76s | **较 R160/R161 承袭基线 46/5 恶化 5 例**;10 红 = test_analyze 1 + test_auto_tag 5 + test_intent 4,日志实证 401(key `****ab12` invalid)+ 429(free users 每日文本配额耗尽)双因,**全为环境红,零代码回归**(cfc-langgraph/ 窗口内零源码变更) |
+| 线上可达性 | curl /admin /frontend / | 302 / 302 / 404 | — | 正常(R161 同) |
+
+> **langgraph 口径说明**:本轮 251 派发通道可用(4096 Basic Auth 鉴权成功),51 例全执行实测(非承袭)。红例与 R160 的 5 红(auto_tag 3 + intent 2)不同集:新增 analyze 1 + auto_tag 5(当时 3)+ intent 4(当时 2)——红形随配额窗口漂移,根因一致(上游 LLM 401/429),已按 R149 经验「read 时 grep 根因,不沿用上轮结论」核实。
+
+> **变更触发判定(用户规则「测试结果有变化 → 提交远程 + 通知研发」)**:**触发**。① langgraph 46/51 → 41/51(红 5→10,恶化)为显著变化;② 后端实测 353 类/2974 例(较 R156 基线 347 类/2946 例 +6 类 +28 例,含 S-cfc-143 3 红 + 未入库文件 5 红);③ 前端 609/3/12、web 116/116、浏览器 28/28+2skip、根级 7/16 均零漂移。→ 已推送 4 件套报告 + 研发通知。
+
+> **门禁结论**:**不通过(较 R161「有条件通过」因人②收紧)**。双目标均未完全达成:① 所有用例通过 ❌(25 后端红 + 3 前端预期红 + 10 langgraph 环境红 + 16 根级红);② 覆盖全部 SRS+用户场景含异常流 ❌(SRS 池未启用=0 锚点)。本轮实测 3818 例 **98.25% 通过、零代码回归**(后端历史红类逐类一致、langgraph 红全为上游环境、前端/浏览器/web 零漂移),但 langgraph 恶化 5 例与后端新增红(预期 RED + 未入库文件)使 G2/G7 门禁不达标。复评条件:langgraph 经 key 轮换/额度升级后 ≥46/51、后端未入库文件归口后红例回落至 S-cfc-143 3 红预算内。

+ 53 - 0
docs/tdd/test/automation-run-2026-11-12-R162.md

@@ -0,0 +1,53 @@
+# 自动化执行记录 · 第 162 轮(2026-11-12 04:31–05:40 GMT+8)
+
+> 执行档 review(离线 + 内网已授权):未联网装依赖、未启停服务、未改生产源码/测试。
+> 基线:本地跑测起点 `8e49e7e61`(含 S-cfc-143 RED 契约测试)→ 窗口内研发合入 `3d0c2701f`(S-cfc-150)/`0b7ba4ecb`(S-cfc-148)等(均触 `cfc-backend/src/test`,晚于本轮 Maven 启动 04:39,**不在本轮后端实测基线内,标「待下轮纳入」**);SRS/specs/API_REFERENCE/test-cases 零提交 → G12 合规。
+> 本轮后端全量 + 浏览器(189+本机)+ langgraph@251 全部**实跑**(非承袭)。
+
+## 1. 实测数字
+
+| 模块 | 命令 | 结果 |
+|------|------|------|
+| cfc-backend 全量(本机实跑) | `JAVA_HOME=/d/jdk1.8.0_25 mvn -o -B clean test` | **353 类 / 2974 例 / 2945 过 / 25 红(19F+6E)/ 4 跳 = 99.02%**(51:59,EXIT=1 surefire 红所致) |
+| cfc-web(本机实跑) | `npx jest --coverage` | 17 套 / **116 例全绿**(EXIT 0,229.2s) |
+| cfc-frontend(本机实跑) | `npx jest --coverage` | 42 套 / **624 例 = 609 过 / 3 红(预期 RED)/ 12 跳**(EXIT 1,71.8s) |
+| 根级黑盒(本机实跑) | `cd tests && npx jest -c jest.config.js` | 23 = 7 过 / 16 红(`fetch failed` → 本机 9082 未启动,B-36 第 52 轮延续) |
+| 浏览器 admin@189 | `--project=admin-desktop`(`_r162_189_admin.cjs` String.raw 修复版) | **5/5(EXIT=0,1.5m)**;首轮即绿(B-153-1 销号维持第 6 轮) |
+| 浏览器 frontend(本机) | `--project=frontend-mobile` | **6/6(EXIT=0,1.5m)** |
+| 浏览器 shop(本机) | `--project=shop-api` | **4/4(EXIT=0,13.3s)** |
+| 浏览器 health(本机) | `-c playwright.config.health.js` | **13/13(EXIT=0,8.9s)** |
+| 浏览器 dx-bridge(本机) | `--project=dx-bridge` | **2 skip**(端点 404,B-DX-1 第 19 轮) |
+| **langgraph@251** | `.venv/bin/python -m pytest -q --ignore=tests/qna --ignore=tests/test_chat.py` | **51 例全执行:41 过 / 10 红(234.76s)** |
+| 线上可达性 | `curl /admin /frontend /` | 302 / 302 / 404(正常);204 探活 000(失联) |
+
+**合计口径(3818 例,全部实跑):3750 过 / 54 红 / 18 跳 ≈ 98.25%**。
+
+## 2. 闭环判定
+
+- **后端零漂移第 10 次(历史红类)**:10 个历史红类 17 例(EnergySystemFlowTest 6 / DimensionRegistryMapContractTest 3 / GuideModuleIntegrationTest 1 / OrchestrationEngineTest 1 / OrchestrationIntegrationTest 1 / MembershipPaySwitchTest 1 / PaymentServiceORDRoutingTest 1 / UserServiceWechatLoginContractTest 1 / UserServiceWechatLoginTest 1 / TeamProfitCronContractTest 1)与 R156 逐类一致;**+8 红为新增**:`AdminArticleCreateContractTest` 3(S-cfc-143 预期 RED,fail 3/6 符合设计)+ `GrowthPublicEndpointMappingTest` 5(**未入库文件**,B-162-1)。
+- **langgraph 恶化(B-142-2 第 9 轮,P0)**:51 例全执行(R158 曾 43 执行差 8 例),46/51 → **41/51(80.4%)**,红 5→10。红例 = test_analyze 1 + test_auto_tag 5 + test_intent 4,日志实证 **① 401:API key `****ab12` invalid;② 429:`rate_limit_exceeded`(free users 每日文本配额耗尽,限速 1 请求/3 分钟)** + `intent_classifier.py:62` 兜底 → **环境红(上游 LLM 双因),非代码回归**(cfc-langgraph/ 窗口内零源码变更)。
+- **前端/web/浏览器零漂移**:frontend 609/3/12、web 116/116、浏览器 28/28 + dx 2 skip,均与 R161/R160 一致。
+- **SRS 闸门**:窗口内 SRS/specs/API_REFERENCE/test-cases 零提交(G12 合规)→ 本轮零新增用例。
+- **关键处置**:① 189 脚本 String.raw 修复路径转义(`C:\code\cfc` 被 JS 转义成 `C:codecfc` → LocationNotFound,R146 已知坑);② 251 脚本 `.venv/bin/python` 修复(`/usr/bin/python` 无 pytest,R146 已知坑)+ 移除 `pkill -f` 自伤(pattern 匹配自身命令行);③ 251 派发通道本轮可用(4096 Basic Auth 鉴权成功,4090 仍 CLOSED)。
+
+## 3. 降级 / 未实测(如实登记)
+
+1. 覆盖率/变异测试(JaCoCo/PIT):pom 未配置 → 未实测(延续)。
+2. 安全测试 / 依赖漏洞扫描 / 性能压测:execute 档需联网 → 未授权未执行(延续)。
+3. 登录态业务流 E2E 全量:无 `MACHINE_JSON_PATH` 凭据 → 仅游客态 + admin 登录 + 鉴权契约(admin 真实登录 5/5 覆盖登录态主路径,延续)。
+4. 兼容性 / 无障碍:chromium 单引擎、无 axe → 未发现资产(延续)。
+5. langgraph 全栈 `app.main`(对话/RAG/whisper):本机默认不启 → 仅验 251 最小服务套件(延续)。
+6. 204 节点浏览器:**失联**(B-95 第 26 轮,探活 000),未能派发(延续)。
+7. 后端 S-cfc-148/150 新契约测试(窗口内合入,晚于 Maven 启动):**未纳入本轮全量基线**,下轮定向复核 + 全量纳入(标「待核实」)。
+
+## 4. 结论
+
+⚠️ **不通过**(较 R161「有条件通过」收紧):✅G1 98.25% / G4 116 / G5 编译 / G6 28-28 / G8 5-5=401 / G10 三节点(189+本机+251)/ G12 SRS 合规;❌G2 54 红 / G7 41-51(80.4%,10 红全上游 401+429 环境,未到 51/51 全绿)/ G9 cfc-web 覆盖率 ~10% / G11 无 CI(B-152-2 第 5 轮)/ G14 dx 404 / G13 后端 25 红临界(历史 17 + 新增 8);⚠️G3 3 预期 RED。
+> **收紧动因**:① langgraph 46/51→41/51(红 5→10,上游 key 401 + 免费额度 429 双因,B-142-2 升级);② 后端新增 8 红(S-cfc-143 预期 RED 3 + 未入库文件 5)。**零代码回归**(后端历史红类逐类一致、langgraph 红全为上游、前端/web/浏览器零漂移)。
+
+## 5. 交付物
+
+- `docs/tdd/orchestration/report-test-2026-11-12-R162.md`(主报告:测试负责人模板 + 五节点证据)
+- `docs/tdd/test/automation-run-2026-11-12-R162.md`(本文件)
+- `docs/tdd/test/blockers.md`(R162 段:B-142-2 升级第 9 轮 / B-162-1 新 / B-95 第 26 轮 / B-DX-1 第 19 轮 / B-156-1 第 2 轮)
+- `docs/tdd/notice-2026-11-12-R162-研发通知.md`(研发交接通知)

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

@@ -936,3 +936,29 @@
 | **B-141-3-Update(观察)** | 站点 `/frontedn` 路径 404 | 运维(P3) | **观察**。`/frontedn`=404、`/admin`=302、`/frontend`=302(用户拼写路径备忘)。 | 运维 | 2026-11-12 02:35 | 观察中 |
 | **B-148-1-Update(未复现)** | 网关瞬抖 502 | 运维(P3) | **未复现**。health 套件 13/13 无 502。 | 测试(R160 巡检) | 2026-11-12 02:35 | 观察中 |
 | **B-141-1(延续)** | qna 收集期缺陷 | 研发(P1) | **延续(排除项)**。pytest 口径 `--ignore=tests/qna --ignore=tests/test_chat.py`。 | 测试(R160 实派) | 2026-11-12 02:35 | 待处理 |
+
+---
+
+## R162 段(2026-11-12 05:40,更新)
+
+> **R162 口径**:五节点全部**实跑**(非承袭)——后端本机 Maven 全量 51:59 实测 353 类/2974 例/2945 过/**25 红**/4 跳=99.02%;浏览器 28/28 + dx 2 skip(189 admin 5/5 首轮即绿第 6 轮 + 本机 fe 6/shop 4/health 13);cfc-web 116/116、cfc-frontend 609/3/12;根级 7/16(B-36 第 52 轮);**langgraph@251 51 例全执行 = 41 过 / 10 红(234.76s)**;合计 3818 例 3750 过 ≈ 98.25%。
+> **结论**:**不通过**(较 R161「有条件通过」收紧)。动因:① langgraph 46/51→41/51(红 5→10,**B-142-2 升级 P0**:API key `****ab12` 401 失效 + AgnesAI 免费额度 429 耗尽双因);② 后端 +8 红 = S-cfc-143 预期 RED 3 + 未入库文件 5(B-162-1)。**零代码回归**(后端历史 10 类 17 红与 R156 逐类一致、前端/web/浏览器零漂移)。SRS/场景零变更 → G12 合规零新增用例。
+> **变化点 → 已推送 + 通知研发**(notice-2026-11-12-R162 随 commit 入库)。
+
+| 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 |
+|---|---|---|---|---|---|---|
+| **B-142-2-Update(第 9 轮,升级 P0)** | 251 LLM 上游 401+429 | 运维/AI(P0) | **恶化 5→10 红(51 例 41 过)**。红例 = test_analyze 1 + test_auto_tag 5 + test_intent 4;日志实证 **① 401:API key `****ab12` invalid(Authentication Fails,chat_graph.py:148 召回记忆失败);② 429:`rate_limit_exceeded`(free users 每日文本配额耗尽,限速 1 请求/3 分钟)**;`intent_classifier.py:62` 兜底伪装加剧(B-134-4)。251:9000 `/health` 200 → 服务活、仅 LLM 面被掐。**连续 2 轮 51/51 才销号(观察 0/2)**。 | 测试(R162 实派) | 2026-11-12 05:40 | 待处理(P0) |
+| **B-162-1(新)** | 后端 3 个未入库测试文件编译执行 | 测试(P1 治理) | **新登记**。`GrowthPublicEndpointMappingTest`(5 红)/`JwtInterceptorGrowthPolicyTest`(0 红)/`ArticleTagsContractTest`(0 红)为 `git status ??` 未跟踪文件却被 surefire 编译执行 → 实测 353 类 vs 版本库 HEAD 纯度 346 类(历轮口径 R152 已有 ArticleTags 记录,本轮新增 Growth/Jwt 2 个)→ 口径漂移 7 类/39 例。红例 5 计入本轮「25 红」但非版本库资产。**处置:确认 3 文件归属——有效则入库(红例随库评估),无效则删除**。 | 测试(R162 实跑) | 2026-11-12 05:40 | 待归口 |
+| **B-156-1-Update(第 3 轮未修)** | `nutrition_age_dosage` 建表 SQL 无效 | 研发(P1 Schema) | **延续**。34 次/上下文建表失败被 DatabaseInitializer catch 静默掩盖(`SchemaInit` 日志 11k 行仍 29%)。 | 测试(R162 复核) | 2026-11-12 05:40 | 待处理 |
+| **B-142-1-Update(第 14 轮)** | `/api/admin/**` 鉴权门缺失 | 研发(P1 安全) | **延续**。匿名 `POST /api/admin/families/overview` → 200 + body code:400;对照 5 端点全 401。 | 测试(R162 巡检) | 2026-11-12 05:40 | 待处理 |
+| **B-145-1-Update(第 11 轮)** | `nutrition_age_dosage` 索引 SQL 无效(并入 B-156-1) | 研发(P1) | **延续**。`SQLSyntaxErrorException: Key column 'product_id' doesn't exist`。 | 研发 | 2026-11-12 05:40 | 待处理 |
+| **B-152-1-Update(第 6 轮未修)** | CI 排除清单漏 3 红类 | 研发(P0 CI) | **延续**。`.gitlab-ci.yml:61` 仍漏 UserServiceWechatLoginTest/ContractTest/TeamProfitCronContractTest(本轮 3 例实测红仍在外)→ `backend-blocking-junit` 必红。 | 测试(R162 复核) | 2026-11-12 05:40 | 待处理(P0) |
+| **B-152-2-Update(第 6 轮未修)** | CI 排除清单陈旧 26 绿类 | 研发(P1 CI) | **延续**。清单 33 类中 26 类已转绿仍未解禁。 | 测试(R162 复核) | 2026-11-12 05:40 | 待处理 |
+| **B-134-4-Update(第 18 轮)** | intent_classifier 兜底伪装 | 研发/AI(P1) | **延续且本轮加重**。4 条 test_intent 红由 429→默认 chat 兜底伪装产生(「像代码错」假象),根因仍是上游 401/429(B-142-2)。 | 测试(R162 实派) | 2026-11-12 05:40 | 待处理 |
+| **B-153-1-Update(第 6 轮销号维持)** | 189 admin U05 前置偶发 | 测试(观察项) | **维持销号**。连续 6 轮首轮即 5/5(本轮 1.5m)。 | 测试(R162 实派) | 2026-11-12 05:40 | 已销号 |
+| **B-36-Update(第 52 轮零漂移)** | 根级黑盒门控 | 测试(P3) | **零漂移**。23 例 7 过/16 红,`fetch failed`(9082 未启动)。 | 测试(R162 实测) | 2026-11-12 05:40 | 待处理(环境型) |
+| **B-95-Update(第 26 轮)** | `204:4090` 失联 | 运维(P2) | **延续**。本轮探活 204:4090 = 000;189/251 均在线。 | 运维 | 2026-11-12 05:40 | 待处理 |
+| **B-DX-1-Update(第 19 轮)** | dx-bridge 端点 404 | 部署(P2) | **延续**。dx 2 例 skip(不假绿)。 | 部署/运维 | 2026-11-12 05:40 | 待处理 |
+| **B-69-Update(维持销号)** | mind/fortune 匿名 200 | 研发 | **维持销号**。health 套件 13/13(5/5=401 鉴权断言含)。 | 测试(R162 实测) | 2026-11-12 05:40 | 已闭环 |
+| **B-141-3-Update(观察)** | 站点 `/frontedn` 路径 404 | 运维(P3) | **观察**。`/frontedn`=404、`/admin`=302、`/frontend`=302。 | 运维 | 2026-11-12 05:40 | 观察中 |
+| **R162 门禁** | 全量 3818 / 3750 | 测试 | **不通过**(较 R161「有条件通过」收紧)。✅G1 98.25%/G4 116/G5 编译/G6 28-28/G8 5-5/G10 三节点/G12;❌G2 54 红/**G7 41-51**/G9/G11/G14/G13 25 红;⚠️G3 3 预期 RED。唯一实质动因:langgraph 5→10 红(上游 401+429)。 | 测试(R162 闭环) | 2026-11-12 05:40 | 已记录 |