report-test-2026-11-11-R154.md 28 KB

测试负责人工作汇报(第 154 轮 · 2026-11-11 21:28–22:25 GMT+8)

角色:cfc-tester(测试负责人)|执行档:review(离线)——内网浏览器自动化(cfc.iwintrue.com/admin + /frontend)、langgraph 实派 192.168.16.251:4096、后端采信 R153 强制实跑(零源码变更);未联网装依赖、未启停服务、未改生产代码(本轮零代码改动)。 基线 HEAD:d9866096a(跑前 = 跑后,与 origin/cfclub 零漂移)。窗口 39717eb07..d9866096a 仅含 R153 报告补提交 + 1 个 chore: auto bump,零功能源码/零测试资产变更。 节点分工(用户约束:每节点单任务):189:4090 = admin-desktop 5/5(首轮即绿,无偶发)|251:4096 = langgraph pytest 51 例(前两跑挂起,第三跑结果见 §5)|204:4090 = 000(B-95 第 23 轮)|本机 = fe/shop/health/dx + 三套 Jest + 根级。 结论:不通过(硬门禁 G2/G7/G9/G11 未达成)——后端 99.29%(17 红,零漂移第 12 次);langgraph 47/51(4 红上游 401/429 + 收尾挂起 B-135-2);浏览器 28/28 + 2 skip(189 首轮即绿);全量 3783 例 / 3725 过 = 98.47%。


0. 基本信息(测试负责人模板)

项目 内容
汇报人 cfc-tester(测试负责人 / 陆谨)
汇报周期 2026-11-11 第 154 轮(跑测窗口 21:28–22:25)
负责模块/单元 cfc-backend(采信 R153 全量实跑)· cfc-frontend(Jest)· cfc-web(Jest)· cfc-langgraph(251 实派)· 浏览器 E2E(admin@189 / fe·shop·health·dx@本机)· 根级黑盒

0.1 测试用例建设与执行

指标 数量 说明
本轮新增测试用例数 0 个 无 SRS/需求/接口变更(窗口零变更)→ 按纪律不新增;既有 3783 例全量执行
本轮验证执行测试数 3783 个 后端 2946 + 前端 617 + 管理端 116 + 根级 23 + langgraph 51 + 浏览器 30(含 dx 2 skip)
用例通过率 98.47%(3725/3783) 剔 skip 口径 98.94%(3725/3765);红 40 = 后端 17 + 前端 3 + 根级 16 + langgraph 4
新增覆盖资产 0 项 本轮无源码/资产改动(纯复验轮)
SRS/场景变更 0 docs/tdd/SRS.md、tests/user-scenarios、API_REFERENCE.md、docs/superpowers/specs 窗口内零变更(git diff --name-only 39717eb07..HEAD 空)→ G12 合规(SRS 未变、用例不擅改)

0.2 会话与任务分发

指标 数量 说明
分派任务数 2 个 ① 189:admin-desktop(首轮即 5/5,1.3m,EXIT=0);② 251:langgraph pytest(三跑,最后一跑结果见 §2/§5)
恢复智能体会话数 0 无中断重建
当前在用会话数 3 本机(done)/ 189(done)/ 251(done)
会话标签 会话 ID 状态 任务 耗时 工作目录 备注
本机 localhost done Jest×3 + 根级 + 浏览器 fe/shop/health/dx(后端采信 R153) ~4m d:\cfc fe 6/6、shop 4/4、health 13/13、dx 2 skip
189:4090 sh_1cad77f53… done admin-desktop E2E 1.3m C:\code\cfc\tests 5/5(EXIT=0)首轮即绿;HEAD 3c3d4b0a5、spec blob 4703d73fb 与本机一致
251:4096 shell 直连(前台 timeout) done langgraph pytest 见 §2 /sc-data/cfc/cfc-langgraph 前两跑挂起;节点 HEAD d9866096a = 本机
204:4090 — unknown(000) 失联 — — B-95 第 23 轮

0.3 问题处置

指标 数量 说明
新测试发现问题数 1 个 B-154-1:langgraph pytest 早期挂起(前两跑:420s 断连 / 250s 仅 5 dots EXIT=124)——从 B-135-2「收尾挂起」恶化为中途 hang,需逐文件定位卡点
已解决测试相关问题数 0 个 无(本轮复验,无新自处置)
待解决测试相关问题数 10 类 后端 17 存量红 · 前端 3 预期 RED · 根级 16 环境红(B-36 第 48 轮)· langgraph 上游红 + 挂起(B-74/B-142-2 第 6 轮 + B-154-1)· CI 排除清单两类缺陷(B-152-1/2 未修)· 建表 SQL 无效(B-145-1 第 8 轮)· admin 鉴权门缺失(B-142-1 第 11 轮)· dx 2 端点 404(第 14 轮)· 204 失联

0.4 本轮 git 提交与推送证据

提交 sha 阶段 触及文件 目标分支 已推送 备注
1cb8cd5a9→d9866096a R153 补提交 docs/tdd/**(R153 报告/通知/台账,5 文件 +489) cfclub 是 R153 交付物此前仅 staged 未提交 → 本轮补提交 + rebase 推送(0/0)
见 §10 R154 docs/tdd/** cfclub 依结果判定 若与 R153 零漂移则按纪律不重复推送;含新观察项则推

1. 历史审查记录(记忆召回)

  • 本对象非首次审查。最近一轮全量闭环:R153(21:20,后端 99.29%/17 红、lg 48/51 3 红 429/401、浏览器 28/28、全量 3783/3726=98.49%,交付物补提交 d9866096a)。
  • 历史遗留缺口:① 后端 17 存量红(10 类);② langgraph 上游 429/401(B-74/B-142-2)+挂起(B-135-2);③ 根级 16 环境红(B-36,ECONNREFUSED 9082);④ 前端 3 预期 RED;⑤ G9 用例锚点 23.0%;⑥ CI 门禁薄弱(G11,B-152-1/2)。
  • 本次改善:189 admin 首轮即 5/5(B-153-1 观察第 2 轮 0 偶发,接近销号)。
  • 本次恶化:langgraph 47/51(较 R153 −1 绿 +1 红,intent 2 例回红 + auto_tag 1 例转绿,均上游 401/429 抖动);pytest 挂起恶化(前两跑早期 hang、第三跑收尾挂起 EXIT=124,B-135-2 复现并新登记 B-154-1);其余全部零漂移。
  • 声明:历史结论仅作对照,本轮所有判定均以本轮实测取证为准。

2. 项目画像(阶段 0)

  • 业务定位:CFC(浠艾福)家庭成长平台——家长/孩子双角色、五维能量(身/心/智/行/富)、健康报告解析、测评订单、饮食推荐、家庭关系、商城。
  • 技术栈:cfc-backend(Spring Boot 2.7.18 + MyBatis-Plus + Java 8,9082)· cfc-frontend(uni-app 小程序 Vue2)· cfc-web(Vue2 + Element UI,8082)· cfc-langgraph(FastAPI + LangGraph + ChromaDB,251:9000)。
  • 关键路径:登录鉴权(JWT)→ 家庭/成员 → 健康报告上传解析 → 测评/画像 → 饮食推荐 → 商城/订单 → 游戏积分。
  • 测试现状(本轮实测):后端 347 类全量可跑通(99.29%,采信 R153 零变更实跑);前端/管理端 Jest 稳定;langgraph 用例执行受上游 LLM 凭据/配额与 pytest 挂起双重阻塞;浏览器 E2E 双节点可跑;SRS 需求池零变更。
  • 质量目标:① 所有用例全部覆盖并通过;② 覆盖全部 SRS 与用户场景(含异常流),SRS/场景变更时同步用例。

3. 测试覆盖矩阵(20 类三态)

功能层次(5 类)

# 类型 三态 证据
1 单元测试 已发现 后端 2946 例实跑(2925 过,采信 R153);cfc-web 116/116;cfc-frontend 617(602 过)
2 组件测试 已发现 cfc-frontend/__tests__/pages/*(vue 挂载/契约断言,如 AC-R1/AC-R2);cfc-web/src/__tests__/views/*
3 测试覆盖率 待核实 后端 pom.xml 无 jacoco → 后端行覆盖率无法本地量化;管理端 jest coverage 可用(历史 10.09/6.12/7.50/9.97)
4 变异测试 未发现 全仓无 pitest/mutation 配置;本轮未实测(白名单外工具)
5 集成测试 已发现 后端 src/test/**/integration 61 类(如 EnergySystemFlowTest、GuideModuleIntegrationTest);tests/integration/*.spec.js 2 套

功能保障(4 类)

# 类型 三态 证据
6 契约测试 已发现 后端 *ContractTest 107 类(DimensionRegistryMapContractTest、TeamProfitCronContractTest 等);tests/test-cases/*.md 15 份(357 唯一 TC)
7 接口 API 测试 已发现 shop-api 4/4、health-api 13/13、dx-bridge 2 skip(端点 404);线上匿名鉴权矩阵 5/5 = 401
8 端到端 E2E 已发现 admin-desktop 5/5(189 实派,首轮即绿)、frontend-mobile 6/6(本机)
9 验收 UAT 待核实 无独立 UAT 记录/签署产物;验收语义由 tests/test-cases/*.md 与 SC 场景池承载,未见用户验收签字证据

非功能(6 类)

# 类型 三态 证据
10 BDD 规格 未发现 全仓无 *.feature(cucumber/specflow 均无)
11 冒烟测试 已发现 根级 tests/ Jest 黑盒 23 例(7 过/16 红,B-36 第 48 轮);health 契约 13 例;后端 *GateTest 类
12 回归测试 已发现 本轮及历轮全量回归(后端 347 类 + 4 套前端/端侧);零漂移比对机制已成文(后端零漂移第 12 次)
13 探索性测试 待核实 无 chartered 探索性会话记录;本轮巡检(线上端点/节点探活)属探索性质但未成文档化章程
14 性能测试 未发现 无 jmx/k6/locust 脚本;本轮仅有「耗时观测」(langgraph 挂起耗时 420s/250s/380s 上限)
15 可靠性测试 未发现 无故障注入/混沌演练脚本;/health 存活探针 200 仅为可用性抽查
16 安全测试 待核实 有手工鉴权矩阵(5 端点 401,G8 ✅)与 admin 越权探测(B-142-1),但无 SAST/DAST/依赖漏洞扫描工具链(需联网,未授权)
17 兼容性测试 未发现 Playwright 仅 chromium 单引擎、单一视口;无 webkit/firefox/多设备矩阵
18 可用性测试 未发现 无真实用户可用性测试记录
19 无障碍测试 未发现 无 axe-core 等 a11y 断言(grep axe 零命中)
20 流程/度量 已发现 blockers.md(B-xxx 台账)· automation-status.md · 各轮 report/notice · TRACEABILITY-MATRIX.md

4. 测试方案(本轮执行范围)

项 内容
目标 全量用例覆盖执行 + SRS/场景覆盖核对 + 双节点派发验证
范围 后端(采信 R153 全量实跑,零变更)· cfc-frontend Jest · cfc-web Jest · 根级黑盒 · langgraph pytest(251)· 浏览器 E2E(admin@189 + fe/shop/health/dx@本机)
执行档 review(离线);联网装依赖、压测、SAST 均未授权未执行
排除项 变异测试、性能压测、a11y、兼容多引擎、依赖漏洞扫描(无工具/需联网/需装浏览器)→ 均落「覆盖缺口清单」,不记通过

5. 执行结果(实测数据)

套件 结果 说明
后端全量 347 类 / 2946 例 / 2925 过 / 16F+1E+4S = 99.29% 采信 R153 强制实跑(39:42,39717eb07..d9866096a 测试资产零变更)→ 零回归第 12 次;347/347 XML
后端红例 10 类 / 17 例 EnergySystem 6 · DimensionRegistryMap 3 · Orchestration 2 · WechatLogin 2 · MembershipPay 1 · PaymentORD 1 · TeamProfitCron 1 · GuideModule 1E(与 R153 逐类一致)
cfc-frontend 617 = 602 过 / 3 红 / 12 skip(57.1s) 3 红 = AC-R1、AC-R2、RED-A7(预期 RED,S-cfc 未实现);零漂移
cfc-web 116/116(39.1s,17 套件) 零漂移
根级黑盒 23 = 7 过 / 16 红(5.6s,2 套件) 16 红全为 fetch failed → 9082 未启动(B-36 第 48 轮零漂移)
langgraph@251 51 = 47 过 / 4 红(133.36s) 三跑:①420s 断连(早期挂起)②250s 仅 5 dots EXIT=124 ③51 全量完成 47 过 4 红但 EXIT=124(收尾挂起,B-135-2 复现);4 红 = test_auto_tag(short_content/empty_content)+ test_intent(classify_analysis/classify_recommend),日志 401 key ****ab12 + 429 AgnesAI → C 环境红(较 R153 波动 −1 绿 +1 红:auto_tag content_relevance 转绿、intent 2 例回红)
浏览器 30 = 28 过 / 2 skip 189 admin 5/5 首轮即绿(1.3m)· 本机 fe 6/6(54.8s)· shop 4/4(9.1s)· health 13/13(5.2s)· dx 2 skip(404)
合计 3783 例 / 3725 过 = 98.47% 剔 skip 98.94%;红 40 / 跳 18

线上与节点:

项 实测
/admin /frontend 302(登录墙,符合预期)|站点根 / = 404(B-141-3)
匿名鉴权矩阵(POST) mind/fortune · energy/overview · health/plan/list · huawei-health/status · xiaomi-health/status → 5/5 = 401(B-69 销号维持第 15 轮)
admin 越权探测 POST /api/admin/families/overview 匿名 → 200 + code:400(B-142-1 第 11 轮,未修)
dx 端点 /api/dx/health/bridge、/api/dx/report/parse → 404/404(B-DX-1 第 14 轮)
251 服务 /health 200 → LLM 链路存活(pytest 内 401+429 为上游凭据/配额;挂起见 B-154-1)
节点 251:4096 = 200、251:9000 = 200、189:4090 = 200、204:4090 = 000(B-95 第 23 轮)

6. 覆盖缺口清单

缺口 现状 风险 建议测试设计 优先级 闭环方式
G-154-1 后端行覆盖率不可量化 pom.xml 无 jacoco 覆盖率无法进硬门禁,仅靠例数 加 jacoco-maven-plugin(离线仓库需确认有包) P1 覆盖率报告 ≥ 约定阈值并经 gate 判定
G-154-2 用例↔代码锚点仅 23.0% 357 唯一 TC / 82 有代码锚点 台账用例无法证明被执行 对 0 锚点域(butler/human-butler/deep-dive-*/vendor)优先补锚 P0 锚点率 ≥ 60%
G-154-3 无变异测试 无 pitest 断言强度未知(例数≠有效性) 对 service/* 高频模块试点 pitest P2 变异杀死率 ≥ 60%
G-154-4 无性能/可靠性基线 无 jmx/k6、无混沌 大促/高并发无容量证据 k6 脚本覆盖登录/首页/报告上传;故障注入(DB/LLM 断连) P2 P95 与错误率达标 + 演练报告
G-154-5 单引擎单视口 chromium only 跨端兼容风险 加 webkit/mobile-safari project P2 ≥3 引擎矩阵通过
G-154-6 无 a11y 断言 无 axe 无障碍合规缺失 @axe-core/playwright 对首页/登录/健康页 P2 无 critical 违规
G-154-7 无 SAST/依赖漏洞扫描 仅手工鉴权矩阵 供应链与注入风险 引入 semgrep/trivy(需联网,未授权) P1 高危 0
G-154-8 测试上下文调度器常驻 B-152-3(未修) 耗时劣化 + 时序不确定 测试 profile 关闭 @EnableScheduling P1 全量耗时回落 ≤45min 且无 scheduler 日志
G-154-9 UAT 无签署证据 无用例签字 验收口径不可追溯 场景池 → UAT 清单化并留签署 P3 UAT 记录归档
G-154-10 langgraph 挂起无容错 B-135-2/B-154-1(未修) langgraph 门禁不可判定 逐文件分跑定位卡点;pytest 加 timeout/retry 规程 P1 51 例稳定 <300s 完成

7. 用例锚点分布(G9 证据)

用例文件 文件内唯一 TC 其中被代码锚定
parent.md 111 6
teacher.md 43 1
admin.md 38 2
child.md 33 1
cross-role-e2e.md 30 1
README.md 22 2
guest.md 17 12
vendor.md 17 0
health-datasource-bridge.md 17 1
butler.md 13 0
signature.md 11 9
article-tag-filter.md 10 10
deep-dive-assessment-appointment.md 10 0
human-butler.md 8 0
deep-dive-plan-activation.md 6 0
合计(全局去重) 357 82 = 23.0%

口径:锚点 = 该 TC-ID 字面出现在 cfc-backend/src/test、tests/e2e-live、cfc-frontend/__tests__、cfc-web/src/__tests__、tests/unit|integration 任一文件中;tests/e2e/api/generated 已排除(自动生成,虚高)。B-124「两套口径并存」仍未收敛,本轮采用严格口径(零变更 → 与 R153 一致)。


8. 五要素问题清单

#1 B-154-1(P1|测试装置)langgraph pytest 挂起恶化:早期 hang + 收尾挂起

  1. 问题描述:本轮 251 实派三跑——① 前台直跑 420s 被断(无输出);② timeout 250 仅 5 dots 即 EXIT=124(早期 hang);③ timeout 380 全量 51 例 133.36s 完成(47 过 4 红)但 EXIT=124(收尾挂起)。与 B-135-2「收尾挂起」同源并发,挂起点不定(早期/收尾均现)。
  2. 测试 bug 点:/tmp/r154_pytest.log(250s 跑仅 5 行 .....)、/tmp/r154b_pytest.log(133s summary 后挂起);卡点文件待逐文件分跑定位。
  3. 最优修改方案:① pytest.main 入口加 pytest-timeout 每用例超时;② 对 251 派发统一「timeout N 自限 + 落盘 + grep summary 判读」规程(本轮已用,建议固化脚本);③ 逐文件分跑定位早期 hang 对应的测试文件/协程(疑似 JavaClient._get_client coroutine 未 await 的 teardown 泄漏,见运行警告)。
  4. 修改目的:使 langgraph 51 例执行可判定(得到明确通过/失败与 exit code),消除「挂起无结果」导致的门禁盲区。
  5. 闭环:连续 2 轮 51 例 <300s 完成且 EXIT 非 124;否则将卡点文件派研发。

#2 B-74 / B-142-2(P0|上游)langgraph 4 红,全部 429 + 401(第 6 轮,波动)

  1. 问题描述:251 实派 51 例 / 47 过 / 4 红;红例 = test_auto_tag_{short_content,empty_content} + test_intent_{classify_analysis,classify_recommend};日志 401 api key ****ab12 invalid + 429 AgnesAI free users rate limit;同窗口 /health 200/8ms → 服务活、仅上游凭据/配额。较 R153 波动:auto_tag content_relevance 转绿(+1)、intent 2 例回红(−2)、净 −1。
  2. 测试 bug 点:tests/test_auto_tag.py、tests/test_intent.py(断言依赖 LLM 返回分类);app/agents/intent_classifier.py:62(异常 → 默认 chat 兜底,把 429 伪装成分类错误)。
  3. 最优修改方案:① 运维轮换/扩容 ****ab12 key 与 AgnesAI 额度;② 服务侧对上游 429/401 统一返回 503 + 结构化 code,不映射 500;③ 用例按 pytest.mark.env(或 retry/backoff)把环境红与逻辑红分流。
  4. 修改目的:恢复 langgraph 硬门禁(G7)可信度,避免上游抖动被读成产品回归。
  5. 闭环:连续 2 轮 langgraph 全绿(并保留 exit code 证据)。

#3 B-153-1(P3|观察项,第 2 轮 0 偶发)189 admin U05 登录前置偶发——未复现

  1. 问题描述:R153 首轮 4/5(U05 account-roles 非 200)→ 复验 5/5;本轮首轮即 5/5 全绿(1.3m,rolesStatus2 200),该偶发未再出现。
  2. 测试 bug 点:tests/e2e-live/admin-live.spec.js:188(R153 偶发证据;本轮无)。
  3. 最优修改方案:维持观察项(登录前置加重试代码可做可不做),连续 2 轮 0 偶发销号(当前 1/2)。
  4. 修改目的:确认偶发为登录态/滑块环境因素而非产品回归。
  5. 闭环:R155 若仍首轮 5/5 → 销号;若再偶发 → 落重试修代码。

#4 B-152-2(P0|CI 硬门禁必然失败)CI 排除清单漏掉 3 个当前红类(第 3 轮未修)

  1. 问题描述:.gitlab-ci.yml:61 的 BACKEND_OBSERVED_CLASSES(33 类)未包含 UserServiceWechatLoginTest、UserServiceWechatLoginContractTest、TeamProfitCronContractTest → backend-blocking-junit 必红。
  2. 测试 bug 点:R153 surefire 中三类 Failures: 1;对照 .gitlab-ci.yml:61 清单无此三项。
  3. 最优修改方案:把 3 类加入 BACKEND_OBSERVED_CLASSES;同时按 #5 收敛清单。
  4. 修改目的:恢复「硬门禁红即拦、绿即放」的语义。
  5. 闭环:CI backend-blocking-junit 一次运行 success。

#5 B-152-1(P1|CI 门禁覆盖面被缩小)排除清单 33 类中 26 类已转绿(第 3 轮未修)

  1. 问题描述:清单自「第 69 轮 33 红类」冻结,其中 26 类已全绿仍被排除在 blocking 之外 → 回归不拦。
  2. 测试 bug 点:.gitlab-ci.yml:61。
  3. 最优修改方案:清单收敛为当前 10 个红类;每轮由测试负责人产出「红类集合」供 CI 变量更新。
  4. 修改目的:让硬门禁覆盖「全量 − 10 类」≈ 97%,回归拦截率最大化。
  5. 闭环:blocking job 覆盖类数 ≥ 337,且连续 2 轮无新增红。

#6 B-152-3(P1|测试装置)@EnableScheduling 在测试上下文常驻(第 3 轮未修)

  1. 问题描述:CfcApplication 带 @EnableScheduling 常驻,R153 实测调度日志 4,334/31,758 行(13.6%)与全量耗时 39:42 强相关(R152 55:56/28.6%)。
  2. 测试 bug 点:cfc-backend/.../CfcApplication.java:12;src/test/resources/ 目录不存在。
  3. 最优修改方案:测试 profile 关闭调度(application-test.yml + @ConditionalOnProperty),慢类缩小切片。
  4. 修改目的:消除非确定性后台写入,全量耗时稳定 ≤45min。
  5. 闭环:scheduler 日志 0 行、耗时 ≤45min、17 红集合不变。

#7 B-142-1(P1|安全)/api/admin/** 鉴权门缺失(第 11 轮)

  1. 问题描述:匿名 POST /api/admin/families/overview → HTTP 200 + {"code":400};对照组 5 端点全 401 → 拦截器对 admin 前缀无统一门。
  2. 测试 bug 点:JwtInterceptor(/api/admin/ 未纳入鉴权判定);线上实证如 §5。
  3. 最优修改方案:把 /api/admin/** 纳入 JwtInterceptor 强制校验并校验 role。
  4. 修改目的:消除匿名可达的管理端数据面(越权信息泄露)。
  5. 闭环:匿名 POST 该端点返回 401/403;回归用例固化到 health 契约套件。

#8 B-145-1(P1|Schema)nutrition_age_dosage 建表恒失败(第 8 轮)

  1. 问题描述:schema.sql:5343 建表体含 INDEX idx_product (product_id),但列定义无 product_id → DDL 恒失败。
  2. 测试 bug 点:cfc-backend/src/main/resources/schema.sql:5343。
  3. 最优修改方案:删索引行或补列 + 迁移。
  4. 修改目的:让按年龄分组的剂量建议在运行期可用。
  5. 闭环:启动日志无 SQLSyntaxErrorException;表存在。

#9 B-36(P3|环境)根级黑盒 16 红(第 48 轮零漂移)

  1. 问题描述:tests/integration/*.spec.js 16 例全 fetch failed(ECONNREFUSED 至 127.0.0.1:9082)——本地未启动后端。
  2. 测试 bug 点:tests/integration/mini-games-api.spec.js、tests/integration/plan-chain.spec.js。
  3. 最优修改方案:改用 process.env.E2E_BASE_URL || http://cfc.iwintrue.com 走线上,或加 beforeAll 探活 → test.skip。
  4. 修改目的:让根级套件的红数具备信号价值。
  5. 闭环:根级套件红数 = 0(或按环境 skip 且不产红)。

9. 门禁结论

门禁 指标 结果
G1 用例通过率 98.47%(剔 skip 98.94%) ✅
G2 后端全绿 17 红(10 类,零漂移第 12 次) ❌
G3 前端全绿 3 红(预期 RED) ⚠️
G4 管理端全绿 116/116 ✅
G5 编译/产物完整性 采信 R153(353 源 0 错、347/347 XML) ✅
G6 浏览器 E2E 28/28(+2 skip) ✅
G7 langgraph 全绿 47/51(4 红 429/401 + 挂起) ❌
G8 鉴权矩阵 5/5 = 401 ✅
G9 用例锚点率 23.0%(82/357) ❌
G10 双节点派发 189 ✅ + 251 ✅ ✅
G11 CI 门禁有效 blocking 清单漏 3 红类 → 必红;26 绿类被排除(B-152-1/2 第 3 轮未修) ❌
G12 SRS 合规 窗口零变更、未擅改需求 ✅

结论:不通过。 硬门禁未达成 4 项(G2 / G7 / G9 / G11)。 较 R153 同为「不通过」且指标微降(98.49% → 98.47%):langgraph 上游抖动(48→47 过)+ pytest 挂起恶化(B-154-1)为唯一负向,其余全零漂移;G11 依赖研发侧 CI 清单修复(B-152-1/2 第 3 轮未闭合)。

复评条件(全部满足可转「通过」):① 后端 17 存量红清零或经契约裁决转预期 RED 并登记;② langgraph 连续 2 轮全绿(含挂起修复);③ CI 清单按 #4/#5 修正后 blocking job 绿;④ 用例锚点率 ≥60%;⑤ B-152-3 落地(调度器不常驻、全量 ≤45min)。


10. 变更、提交与通知

项 内容
变更判定 有变化:langgraph 48→47 过(红 3→4,上游 401/429 抖动);全量 98.49%→98.47%(−0.02pp);新增 B-154-1(pytest 挂起恶化);B-153-1 第 2 轮 0 偶发 → 提交 + 推送 + 通知研发
补提交 R153 交付物(此前仅 staged)→ 1cb8cd5a9 → rebase 推送 d9866096a(0/0 同步)
提交范围 本报告、automation-run-2026-11-11-R154.md、notice-2026-11-11-R154-研发通知.md、blockers.md(追加 R154 段)、automation-status.md(附录 R154)
推送分支 origin/cfclub(rebase 后推)
研发通知 Agent Mail GetMe → 仍 not_bound(连接器 connected、邮箱未开通,按纪律不重试)→ 以 notice-2026-11-11-R154-研发通知.md + blockers.md + 推送为通知载体

附录 A:本轮命令(可复现)

# 环境探针
/d/jdk1.8.0_25/bin/java -version; JAVA_HOME=/d/jdk1.8.0_25 /d/maven/apache-maven-3.6.1/bin/mvn -v; df -h /d
# 后端(本轮采信 R153 强制实跑,零变更)
cd cfc-backend && JAVA_HOME=/d/jdk1.8.0_25 /d/maven/apache-maven-3.6.1/bin/mvn -o -B clean test   # R153: 39:42
# Jest
cd cfc-frontend && npx jest --ci --silent     # 617 = 602/3/12(57.1s)
cd cfc-web && npx jest --ci --silent          # 116/116(39.1s)
cd tests && npx jest --ci --silent            # 23 = 7/16(5.6s,2 套件)
# 浏览器(必须在 tests/ 内跑)
cd tests && npx playwright test -c playwright.config.live.js --project=frontend-mobile --workers=1  # 6/6
cd tests && npx playwright test -c playwright.config.live.js --project=shop-api --workers=1          # 4/4
cd tests && npx playwright test -c playwright.config.health.js --workers=1                           # 13/13
cd tests && npx playwright test -c playwright.config.live.js --project=dx-bridge --workers=1         # 2 skip
node _r150_189.cjs                                        # 189 admin-desktop(首轮即 5/5,1.3m)
node _r154_251_probe.cjs run '<pytest 命令>; echo EXIT=$?'  # 251 langgraph(timeout 自限 + 落盘)
# 线上鉴权矩阵(必须 POST)
for p in /api/mind/fortune /api/energy/overview /api/health/plan/list /api/huawei-health/status /api/xiaomi-health/status; do curl -s -o /dev/null -w "$p %{http_code}\n" -X POST -H 'Content-Type: application/json' -d '{}' http://cfc.iwintrue.com$p; done

附录 B:口径声明

  • 后端红数口径:采信 R153 强制实跑(39717eb07..d9866096a 测试资产零变更,git diff --name-only 空)→ 347 类 / 2946 例 / 2925 过 / 16F+1E+4S = 99.29%,零漂移第 12 次。
  • 后端基线纯度:ArticleTagsContractTest.java 仍为未跟踪文件(历轮同口径),HEAD 纯度为 346 类 / 2935 例。
  • langgraph 口径:--ignore=tests/qna --ignore=tests/test_chat.py(B-141-1 排除项),51 例;必须 .venv/bin/python;节点 HEAD d9866096a = 本机(已同步)。本轮三跑:420s 断连 / 250s 5 dots EXIT=124 / 380s 全量完成但收尾挂起 EXIT=124 → 采用第三跑结果 47 过 / 4 红 / 133.36s,挂起如实标注(B-154-1/B-135-2)。
  • 浏览器口径:28 过 + dx 2 skip = 30;189 与本机 spec blob 4703d73fb 一致 → 跨节点结论可比。
  • 189 口径:本轮首轮即 5/5(无偶发),B-153-1 观察第 2 轮。
  • G9 仍为严格口径(排除 tests/e2e/api/generated),B-124 两套口径并存未收敛。