report-test-2026-11-12-R157.md 29 KB

测试负责人工作汇报(第 157 轮 · 2026-11-12 00:56–01:25 GMT+8)

角色:cfc-tester(测试负责人 / 陆谨)|执行档:review(离线 + 内网已授权)——浏览器 E2E(admin@189 + fe·shop·health·dx@本机)、langgraph 实派 192.168.16.251:4096、cfc-web / cfc-frontend / 根级 Jest 实跑;后端采信 R156 全量实跑结果(R156 于 00:50 完成 61:02 全量,源码零变更;本轮窗口内唯一新提交 a7e3b6388 为研发负责人纯文档汇报,未触任何生产/测试源码,采信条件成立)。 基线 HEAD:跑测起点 9ebfff4d4(R156 报告,= R156 基线 c7d921bcf + R156 交付物);收尾将 rebase 至 origin/cfclub(a7e3b6388)。 节点分工(用户约束:每节点单任务,串行):189:4090 = admin-desktop 5/5|251:4096 = langgraph pytest 51 例|本机 = fe/shop/health/dx + 三套 Jest + 根级。 结论:⛔ 不通过(判定延续 R156,唯一动因 G7 langgraph 仍低于阈值)——langgraph 42/51(10→9 红,改善 1 例);浏览器 28/28 + 2 skip;cfc-web 116/116;cfc-frontend 624 = 609 过 / 3 红 / 12 跳(红例集合不变);根级 23 = 7 过 / 16 红(B-36 第 51 轮);后端采信 2946/2925/17(零回归第 15 次);全量 3790 例 / 3727 过 = 98.34%(+0.03pp)。


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

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

0.1 测试用例建设与执行

指标 数量 说明
本轮新增测试用例数 0 SRS/场景/API_REFERENCE 窗口零变更(G12 合规);R156 已补会员门控 7 例,本轮无新实现合入
本轮验证执行测试数 3790 个 后端 2946(采信)+ 前端 624(实跑)+ 管理端 116(实跑)+ 根级 23(实跑)+ langgraph 51(实派)+ 浏览器 30(含 dx 2 skip)
用例通过率 98.34%(3727/3790) 剔 skip 口径 98.81%(3727/3772);红 45 = 后端 17 + 根级 16 + langgraph 9 + 前端 3
新增覆盖资产 0 项 无新资产;R156 的 TC-MG-U01~U07(7 例全绿)维持有效
SRS/场景变更 0(文档)/ 0(实现) specs 201 份 + test-cases 15 份 + API_REFERENCE.md 窗口(9ebfff4d4..a7e3b6388)零变更;本轮窗口内唯一新提交为研发汇报文档(a7e3b6388,130 行 docs)

0.2 会话与任务分发

指标 数量 说明
分派任务数 3 个 ① 189:admin-desktop(1.3m,5/5,EXIT=0);② 251:langgraph pytest(359.57s,42/51);③ 本机浏览器串行(fe/shop/health/dx)
恢复智能体会话数 0 无中断重建
当前在用会话数 3 本机(done)/ 189(done)/ 251(done)
会话标签 会话 ID 状态 任务 耗时 工作目录 备注
本机 localhost done cfc-web + frontend Jest + 根级 + 浏览器 fe/shop/health/dx 08:00 内 d:\cfc fe 6/6、shop 4/4、health 13/13、dx 2 skip
189:4090 sh_1cb8cbaef… done admin-desktop E2E 1.3m C:\code\cfc\tests 5/5(EXIT=0);节点 HEAD 3c3d4b0a5、spec blob 4703d73fb 与本机一致 → 跨节点可比
251:4096 shell 直连(setsid nohup + 落盘) done langgraph pytest 359.57s /sc-data/cfc/cfc-langgraph 42/51;节点 HEAD b6333b451 = 本机基线祖先

1. 历史审查记录(对照,非本次结论依据)

  • 对象:cfc 周期性自动化闭环,R149–R157 连续稳态轮。上一轮 R156 @ 00:50 结论 ⛔ 不通过(后端 61:02 全量实跑 99.29% 零回归第 14 次;langgraph 3→10 红恶化;浏览器 28/28;全量 3790/3726 = 98.31%)。
  • 遗留缺口(沿用):后端 17 红存量、ci 白名单陈旧(B-152-1/-2)、langgraph 上游 429/401(B-142-2/B-134-4)、安全/性能/依赖扫描未授权、CI 硬门禁必红(G11)、admin.referral(TR-25)零覆盖、dx-bridge 未部署(G14)、根级黑盒 9082 不可达(B-36)。
  • 本轮相对 R156 的整改核查:R156 完成全量实跑(61:02)后本轮采信其后端/覆盖基线——窗口(00:50→00:56)内唯一新提交为研发纯文档汇报(a7e3b6388),未触生产/测试源码;前端/管理端本轮仍实跑复核(与 R156 一致 → 采信期无漏检)。
  • B-154-1 销号:langgraph pytest 收尾挂起(EXIT=124)连续 3 轮未复现(R155 观察 1/2 → R156 观察 2/2 → R157 第 3 轮 359.57s 正常收尾)→ 按「连续 2 轮未复现销号」纪律正式销号。
  • 本次非首次审查,结论以本轮实际取证为准。

2. 项目画像速览(只读)

  • 业务:浠艾福 XAF 家庭成长平台(家长端/孩子端/规划师端 + 管理端 + 独立商城 + AI 解析)。
  • 技术栈:cfc-backend(Spring Boot 2.7.18 / Java 8 / MyBatis-Plus,9082)、cfc-web(Vue 2 + Element UI 管理端,8082)、cfc-frontend(uni-app 微信小程序)、cfc-langgraph(FastAPI + LangGraph + ChromaDB,9000)、dan/danshop(8888)。
  • 关键路径:JWT 鉴权 /api/**(JwtInterceptor,8 个公开路径)、统一 @PostMapping、AiGateway 调 LangGraph、健康报告 PDF 上传解析、五维能量、测评订单、家庭关系与邀请、商城价格排序(会员门控 utils/membershipGate.js 自 R156 起有 7 例函数级守护)。
  • 规模:后端控制器 366 个、\@RestController 366 个;测试源 353 份 / @Test 2935;编译产出 *.class 2330;浏览器 spec:tests/e2e 75 份 + tests/e2e-live 5 份。
  • 测试现状:单元/组件/契约/集成资产齐备(后端 347 类可执行);E2E 走「线上只读浏览器 + 接口契约」双轨;无 JaCoCo→后端覆盖率不可度量;CI 存在但硬门禁必红。
  • 风险点:① 后端测试装置全量耗时 61:02(B-152-3,34 次 Spring 上下文 + 每次重跑迁移);② langgraph 依赖单一免费额度上游(429 即整片红,B-142-2 第 9 轮波动);③ 管理端匿名访问鉴权门缺失(B-142-1 第 13 轮);④ 根级黑盒强依赖本机 9082(B-36 第 51 轮)。

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

# 测试类型 状态 本轮证据
1 单元测试 已实测 后端 347 类 / 2946 例(采信 R156,源码零变更);cfc-web 116/116(实跑);cfc-frontend 617(实跑)
2 组件测试 已实测 cfc-frontend/__tests__/pages/**、cfc-web/src/__tests__/views/**(复验一致)
3 集成测试 已实测(采信) com.etotem.cfc.integration.*(R156 61:02 全量,EnergySystemFlow 7 / DimensionRegistryMap 7 / GuideModule 4 等)
4 接口 API 测试 已实测 tests/e2e-live/shop-sort-api.spec.js 4/4(本轮实跑)、health-contract.spec.js 13/13(本轮实跑 5.5s)
5 系统/端到端 已实测 浏览器 28/28(189 admin 5/5 + 本机 fe 6/6、shop 4/4、health 13/13)
6 冒烟测试 已实测 langgraph@251 51 例 359.57s 正常收尾;站点 /admin /frontend 302→200
7 回归测试 已实测 后端 17 红与 R154 逐类逐例一致(零回归第 15 次);浏览器 28/28 连续零漂移;前端 3 红集合不变
8 探索性测试 待核实 无 charter 文档、无会话记录(tests/exploratory 不存在)
9 契约测试 已实测 *ContractTest(DimensionRegistryMap 3 红、UserServiceWechatLoginContract 1 红、TeamProfitCronContract 1 红,采信 R156);dx-bridge 2 例按 404 skip(实跑)
10 性能测试 未授权未执行 仓库无 k6/JMeter/Locust 脚本;压测属 execute 档(需联网 + 打目标环境)
11 可靠性测试 已实测(失败面) 34 次 Spring 上下文重跑(R156 装置数据)+ langgraph 429 熔断面(359.57s 慢跑但正常收尾)
12 安全测试 未授权未执行 无 semgrep/DAST 配置;仅做鉴权契约 5/5(本机可达性)与匿名探针(B-142-1 延续)
13 依赖漏洞扫描 未授权未执行 无 dependency-check/SBOM/.sarif;需联网拉库
14 兼容性测试 待核实 无浏览器/机型矩阵;Playwright 仅 chromium(1440×900 / 375×812)
15 可用性测试 待核实 无可用性指标与用户测试记录
16 无障碍测试 未发现 tests/** 无 aria/axe-core 引用(0 命中)
17 测试覆盖率 已实测(部分未达标) cfc-web Lines 9.95%(<20% 不达标,本轮回跑一致);cfc-frontend Lines 53.57% / Branch 29.16%(复验);后端无 JaCoCo
18 质量指标 已实测 全量 3790 / 3727 = 98.34%(剔 skip 98.81%);红 45 / 跳 18
19 QA 流程 待核实(负向证据) CI 存在但 BACKEND_OBSERVED_CLASSES 漏拦 3 个当前红类 → backend-blocking-junit 必然失败(B-152-1 第 5 轮未修)
20 全项目代码审查 已实测(抽样) 延续 R156 定位:schema.sql:5354 DDL 无效(B-156-1)、NutritionAgeDosage 实体/表不一致、NutritionProductService:48 死注入;本轮聚焦复跑无新增代码审查面(源码零变更)

4. 执行范围 / 用例总数·通过·失败

模块 命令 总数 通过 失败 跳过 结果
cfc-backend 全量(采信 R156) mvn -o -B clean test(R156 于 00:50 实跑完成) 2946 2925 17 4 99.29%(剔 skip 99.42%);源码零变更 → 零回归第 15 次
浏览器 admin@189 playwright test -c playwright.config.live.js --project=admin-desktop 5 5 0 0 EXIT 0 ✅ 1.3m
浏览器 frontend(本机) --project=frontend-mobile 6 6 0 0 EXIT 0 ✅ 1.4m
浏览器 shop(本机) --project=shop-api 4 4 0 0 EXIT 0 ✅ 9.7s
浏览器 health(本机) -c playwright.config.health.js 13 13 0 0 EXIT 0 ✅ 5.5s
浏览器 dx-bridge(本机) --project=dx-bridge 2 0 0 2 EXIT 0;两端点 404 → 按设计 skip(B-DX-1 第 17 轮)
langgraph@251 .venv/bin/python -m pytest -q --ignore=tests/qna --ignore=tests/test_chat.py 51 42 9 0 9 failed / 42 passed / 359.57s(R156 为 41/10 → 改善 1 例)
cfc-web (Jest 实跑) npx jest --coverage 116 116 0 0 EXIT 0 ✅ 130.5s(17 套件);Lines 9.95% / Branch 6.06%
cfc-frontend (Jest 实跑) npx jest --coverage 624 609 3 12 EXIT 1;3 红 = 预期 RED(signature.consignee 2 + growthHistory.dayGroupView 1)集合不变
根级黑盒 (Jest 实跑) cd tests && npx jest -c jest.config.js 23 7 16 0 EXIT 1;16 红全 fetch failed(本机 9082 未启动,B-36 第 51 轮)
合计 — 3790 3727 45 18 98.34%(剔 skip 98.81%)

红例分布(45):后端 17 + 根级 16 + langgraph 9 + 前端 3。


5. 关键变化(vs R156)

维度 R156 R157 变化
后端全量 实跑:2946/2925/17(61:02) 采信 R156(窗口源码零变更) ✅ 零回归第 15 次
langgraph@251 41 过 / 10 红(126.67s) 42 过 / 9 红(359.57s) ✅ 改善 1 例(intent classify_mind 转绿;analyze 1 + auto_tag 5 + intent 3)
浏览器 28/28 + 2 skip 28/28 + 2 skip ✅ 零漂移
cfc-web 实跑 116/116 实跑 116/116 ✅ 零漂移(130.5s)
cfc-frontend 实跑 624 = 609/3/12 实跑 624 = 609/3/12 ✅ 零漂移(3 红集合不变)
根级黑盒 7/16 7/16 持平(B-36 第 51 轮)
全量通过率 98.31%(3790/3726) 98.34%(3790/3727) ✅ +0.03pp(langgraph 1 例转绿)
门禁结论 不通过 不通过 持平(G7 改善但未过阈值)

5.1 B-154-1 正式销号

langgraph pytest 收尾挂起(EXIT=124)连续 3 轮未复现:

  • R155:48/3,正常收尾(观察 1/2)→ R156:41/10,126.67s 正常收尾(观察 2/2,建议销号)→ R157:42/9,359.57s 正常收尾(日志完整、summary 齐备)。
  • 按「连续 2 轮未复现销号」纪律 → 正式销号。残留观察:B-126(远程派发退出码未落盘)独立保留,本轮日志仍无 EXIT= 行迹象(落盘修复未做)。

6. langgraph 9 红根因定性(环境红,非代码回归)

失败文件 例数 失败表征 日志证据
tests/test_analyze.py 1 test_analyze_missing_report → assert 500 == 200 RateLimitError 429 AgnesAI_error(analyze 3.66s)
tests/test_auto_tag.py 5 endpoint_responds / valid_format / content_relevance / short_content / empty_content → assert 500 == 200 每次 chat 调用 9~10s 后抛 429
tests/test_intent.py 3 classify_analysis/recommend/health(mind 已转绿)→ assert <Intent...> ≠ 期望 intent_classifier.py:62 429 后静默兜底 chat(B-134-4 延续未修)
  • 上游原文:"You have used up today's text quota and are now limited to 1 request every 3 minutes. Try again after 17:02:22." / "You've reached the API rate limit for free users."(429,AgnesAI)。
  • 叠加 401:chat_graph.py:148 召回记忆失败: 401 Authentication Fails, Your api key: ****ab12 is invalid(记忆召回 key 失效,非本轮新增)。
  • 服务本身健康:251:9000/health = 200(同 R156 口径探活)。说明「服务活、仅 LLM 面被配额掐断」。
  • 本轮观察:红例 count 10→9(intent 4→3),判定为429 配额时窗抖动(顺带验证无代码回归——若为代码问题,红例集合应在「intent 4 全红」与「转绿」间漂移而非仅 1 例波动)。
  • 结论:9 红全部落在 LLM 调用面,无一条为代码回归;按门禁纪律红例即红例,G7/G2 照实判 ❌。

7. SRS/需求变更感知(G12)

检查项 结果
docs/superpowers/specs/*.md 201 份,窗口 9ebfff4d4..a7e3b6388 零变更
tests/test-cases/*.md 15 份,零变更
docs/superpowers/api/API_REFERENCE.md 零变更
实现落地(非 SRS 文档变更) 0 项(窗口内唯一新提交 a7e3b6388 为研发汇报纯文档,130 行)
判定 G12 ✅ 合规:SRS/实现均零变更 → 零写入;R156 的 TC-MG-U01~U07(会员门控 7 例)持续有效

8. 五要素问题清单(与 R156 同源延续,采信轮不重复取证)

① 后端 17 红存量(P0 · 研发)——采信 R156,零回归第 15 次

  • ① 问题描述:mvn clean test 全量 2946 例中 16F+1E,10 个类;其中 UserServiceWechatLoginTest、UserServiceWechatLoginContractTest、TeamProfitCronContractTest 不在 CI 排除清单内。
  • ② 测试 bug 点:cfc-backend/target/surefire-reports/(同 R156 证据,本轮源码零变更)。
  • ③ 最优修改方案 / ④ 修改目的 / ⑤ 闭环:同 R156 —— 集成夹具 @Transactional 回滚、契约类产品裁决、装置类去 Thread.sleep;目的消除长期红底噪及收敛 G13/G2;闭环 = 修后 10 类 0 红 + 全量 0 红连续 2 轮。
  • 闭环状态:未闭环(第 15 轮零漂移)。

② CI 硬门禁漏拦 3 个红类(P0 · 研发,B-152-1 第 5 轮未修)

  • ① 问题描述:.gitlab-ci.yml:61 BACKEND_OBSERVED_CLASSES(33 类)未包含 UserServiceWechatLoginTest、UserServiceWechatLoginContractTest、TeamProfitCronContractTest → backend-blocking-junit 必然失败。
  • ③ 最优修改方案:补 3 类入白名单;更优改为「运行期生成红类快照」。⑤ 闭环:CI 一次跑绿 + 人为移除实现验证能拦住 → 销号。

③ CI 白名单含 26 个已转绿类(P1 · 研发,B-152-2 延续)

  • ① 问题描述:33 类白名单中 26 类本轮/历轮实测全绿仍被永久排除 → 硬门禁覆盖人为缩小。
  • ③ 最优修改方案:按实测快照重建白名单(仅保留红类)+ CI 注释要求每轮复核。⑤ 闭环:重建后 CI 一次跑绿 + 抽查 3 类改坏能拦住。

④ nutrition_age_dosage 三重不一致(P2 · 研发,B-156-1 + B-145-1 延续未修)

  • ① 问题描述:schema.sql:5354 建表含 INDEX idx_product (product_id) 但表无该列 → 建表恒失败(R156 实测 34/34 上下文失败,表从未建成功);实体 NutritionAgeDosage.updateTime DDL 无列;NutritionProductService:48 死注入。
  • ② 测试 bug 点:schema.sql:5354、entity/NutritionAgeDosage.java:33-34、service/NutritionProductService.java:48。
  • ③ 最优修改方案:删索引或补列 + DDL 补 update_time + DatabaseInitializer.runMigrations() 幂等 ensureColumn 并同步 schema.sql + 清理死注入。⑤ 闭环:SQLSyntaxErrorException 归零 + SHOW CREATE TABLE 成功 + 剂量接口 200。

⑤ langgraph 9 红(P0 · 运维 + 研发,B-142-2 波动 / B-134-4 未修)

  • ① 问题描述:51 例 9 红(较 R156 10 红改善 1),全部为 LLM 面 429(免费额度耗尽)+ 401(记忆召回 key 失效);intent_classifier.py:62 静默兜底把上游故障伪装成分类错误。
  • ③ 最优修改方案:① 运维给 251 的 AgnesAI key 提额/换付费 key;② intent_classifier 改为显式降级(degraded=true);③ 修补 chat_graph.py:148 记忆召回 key;④ LLM 依赖用例加 pytest.mark.env_skip(429 时 skip 不 fail)。⑤ 闭环:连续 2 轮 51/51 全绿(或红例全为显式 env_skip)→ 销号。

⑥ 根级黑盒 16 红:本机 9082 不可达(P1 · 测试装置,B-36 第 51 轮)

  • ① 问题描述:tests/ 根级 Jest 23 例中 16 红,全部 fetch failed(/api/admin-auth/login-by-password、/api/guide/plans/family-list、/api/admin/tasks/stats 等直连 127.0.0.1:9082,本机后端未启动)。
  • ② 测试 bug 点:tests/integration/plan-chain.spec.js、tests/integration/mini-games-api.spec.js。
  • ③ 最优修改方案:加 beforeAll 探活 9082,不可达则 describe.skip 并输出 BACKEND_UNAVAILABLE(与 dx-bridge 的 404→skip 同构);或 CI 以 service 容器拉起后端后再跑。
  • ④ 修改目的:把「环境缺失」与「功能失败」分离,避免 16 条永久红把通过率压低 0.4pt 且掩盖真实回归。
  • ⑤ 闭环:无后端时 16 例转 skip(红 0);有后端时全绿 → 双态各验一次销号。
  • 闭环状态:未闭环(第 51 轮零漂移,本轮复跑 3 次确认)。

⑦ 前端 3 红(P2 · 研发,预期 RED)

  • ① 问题描述:signature.consignee 2 例(AC-R1 确认回调方法缺失、AC-R2 模板缺 HandSignature 段)+ growthHistory.dayGroupView 1 例(RED-A7:3 条无效日期记录中 1 条未被跳过,flat.length 实测 7、期望 6)。
  • ② 测试 bug 点:cfc-frontend/__tests__/pages/signature/signature.consignee.test.js、cfc-frontend/__tests__/pages/growth-main/growthHistory.dayGroupView.test.js:287。
  • ③ 最优修改方案:① 交付 consignee-edit.vue 的确认回调与 HandSignature 内嵌段;② groupByDate 对 checkinDate 解析失败且无 recordDate 兜底的记录直接跳过。
  • ④ 修改目的:让契约测试转绿,同时修掉「脏日期记录泄漏进分组」的真实体验缺陷。
  • ⑤ 闭环:前端 jest 3 红→0 且连 2 轮 0 红 → 销号(S-cfc-138 / S-cfc-134)。

⑧ 管理端匿名访问鉴权门缺失(P1 · 安全,B-142-1 第 13 轮延续未修)

  • ① 问题描述:匿名 POST /api/admin/families/overview → HTTP 200 + body code:400(R156 实测证据,源码零变更 → 维持未修判定);对照组 5 个 /api/* 端点(life-evolution/registry-map/health-repair/family-consume/go-products)均 401 → /api/admin/** 未纳入 JWT 强校验。
  • ② 测试 bug 点:cfc-backend/src/main/java/com/etotem/cfc/config/JwtInterceptor.java(LOGIN_REQUIRED_PATHS 未覆盖 /api/admin/)。
  • ③ 最优修改方案:LOGIN_REQUIRED_PATHS 增 /api/admin/;admin 族控制器补 role=admin 校验;补「匿名 → 401/403」契约用例。
  • ④ 修改目的:消除越权面;把「200 + 业务错误码」伪正常态变成可断言红线(纪律:匿名 200 + 业务码 ≠ 接口正常)。
  • ⑤ 闭环:匿名探测返回 401/403(非 200)+ 新增契约用例常绿 → 销号。

⑨ 后端全量耗时 61:02 的装置放大(P3 · 效率,B-152-3 延续)

  • 本轮后端为采信轮(源码零变更),耗时损耗证据沿用 R156 量化:347 类 61:02,其中 34 次 @SpringBootTest 上下文启动,每次重跑 DatabaseInitializer 全量迁移(DatabaseInitializer 10715 行 + cfc-scheduler 22365 行 = 全日志 29.7%);最慢类 UserServiceFamilyNameLinkTest 331s、GuidePackageServiceTest 307s、GuideRolePermissionTest 258s、AuthControllerTest 239s。
  • ③ 最优修改方案:测试 profile 关 DatabaseInitializer 与 @EnableScheduling;统一 webEnvironment=NONE 合并上下文;接 JaCoCo 顺带出覆盖率。⑤ 闭环:连续 2 轮全量 <35:00 红例集合不变 → 销号。

9. 覆盖缺口清单(与 R156 同源,采信轮不重复取证)

缺口 现状 风险 建议测试设计 优先级 闭环方式
后端覆盖率不可度量 pom.xml 无 JaCoCo(0 命中) 无法证明单测有效性 接 jacoco-maven-plugin + 阈值门禁 P0 出首份报告并设 line≥60% 门禁
cfc-web 覆盖率 Lines 9.95% / Branch 6.06% 管理端回归靠人眼 按 views/** 高价值页补组件测试 P1 覆盖率 ≥20% 连续 2 轮
场景→用例映射 215 场景,映射 TC 155(72.1%),有锚点 104 40 条场景无自动化 按 scenario-gap-backlog.csv 98 条逐条补 P1 映射率 ≥90%
安全测试 / 依赖漏洞 未授权未执行(0 配置) 漏洞不可见 semgrep + OWASP dependency-check(需联网授权) P1 高危 0
性能 / 可靠性 无脚本 全量耗时劣化无基线 k6 冒烟 + /health P95 基线 P2 基线入库 + 回归对比
兼容性 / 无障碍 chromium 单浏览器、无 axe 小程序机型/无障碍盲区 Playwright 多 viewport + axe-core 冒烟 P2 3 viewport × 关键 5 页
探索性测试 无 charter 脚本外缺陷遗漏 每轮 1 个 30 分钟 charter 并落记录 P3 charter + 缺陷单双证据
admin.referral(TR-25) 0 用例 0 锚点 功能黑盒 补接口契约 + 后台页面 E2E P2 2 条用例常绿
会员门控页级 E2E(B-156-3) 函数级 7 例已绿,页面级 0 例(9 个入口页未验渲染隐藏) 模板层漏改不会被发现 Playwright 游客态断言「聊天/消息」入口不可见 + 会员态可见 P1 2 条 E2E 常绿

10. 门禁矩阵(14 条)

门 阈值 本轮实测 状态
G1 全量通过率 ≥95% 98.34%(3790/3727) ✅
G2 红例数 ≤20 45(be17 + 根16 + lg9 + fe3) ❌
G3 前端预期 RED 已知 3 3 ✅
G4 cfc-web 零红 0 0(实跑 116/116) ✅
G5 编译 EXIT 0 testCompile 353 源 0 错;classes 2330(采信 R156) ✅
G6 浏览器 E2E ≥26/28 28/28 ✅
G7 langgraph ≥46/51 42/51 ❌(R156 41 → 本轮改善 1,仍未过)
G8 鉴权契约 5 端点全 401 5/5 = 401(health 13/13 中 5 端点实测) ✅
G9 安全/依赖扫描 中危 0 未授权未执行 ❌
G10 节点派发 ≥1 3(189 + 251 + 本机) ✅
G11 CI 固化 门禁可信 CI 存在但必红(漏拦 3 类,B-152-1) ❌
G12 SRS 变更→用例更新 合规 零变更 → 零写入(201 specs + 15 TC) ✅
G13 后端红例 ≤17 17 ⚠️ 临界(零漂移第 15 次)
G14 dx-bridge 已部署 404 未部署(2 例 skip) ❌

门禁结论:⛔ 不通过 —— 正向 G1/G3/G4/G5/G6/G8/G10/G12;阻断 G2/G7/G9/G11/G14;G13 临界。判定与 R156 一致(G7 由 41/51 → 42/51 改善但未过阈值,量变未质变)。


11. 变化点与推送决策

  • 测试结果有变化:langgraph 41 过/10 红 → 42 过/9 红(test_intent.classify_mind 转绿,429 配额时窗抖动);全量通过率 98.31% → 98.34%(+0.03pp)。
  • 其余全部零漂移:后端 17 红(零回归第 15 次,采信 R156)、浏览器 28/28 + 2 skip、cfc-web 116/116(实跑)、前端 3 红集合不变(实跑)、根级 7/16(第 51 轮,实跑)。
  • 销号 1 项:B-154-1(langgraph pytest 收尾挂起 EXIT=124,连续 3 轮未复现 → 正式销号)。
  • 无新 B-* ​:窗口源码零变更(唯一新提交 a7e3b6388 为研发纯文档)→ 无新问题登记。
  • 决策:按「测试结果有变化时提交到远程并通知研发」→ commit + push(rebase 至 origin/cfclub)+ 落地研发通知。

12. 复评条件

  1. G7:251 LLM key 提额/换付费 key → langgraph 连续 2 轮 ≥46/51 且红例为显式 env_skip(本轮 42/51 为 429 时窗波动,未构成 OAuth 类系统性恶化)。
  2. G11:BACKEND_OBSERVED_CLASSES 补 3 红类并剔除 26 绿类 → CI 一次跑绿。
  3. G2/G13:后端 17 红清零(先修 CI 漏拦的 3 类)。
  4. G9:授权联网后跑 semgrep + dependency-check,中危 0。
  5. G14:dx-bridge 2 端点上线,2 例转 401/403 断言。
  6. G7 覆盖率:后端接 JaCoCo 出首份报告;cfc-web ≥20%。

13. 未实测项(如实登记)

  1. 后端全量(采信 R156):窗口源码零变更(唯一新提交为研发汇报文档 a7e3b6388,130 行 docs),R156 61:02 全量实跑证据于 00:50 落盘 → 采信成立;若出现源码变更将立即改为实跑。
  2. 后端覆盖率 / 变异测试:pom.xml 无 JaCoCo、无 PIT → 未实测,只有执行结果无可信覆盖率。
  3. 安全测试(SAST/DAST/渗透)、依赖漏洞扫描:execute 档需联网授权 → 未授权未执行(G9 ❌)。
  4. 性能 / 压测 / 可靠性专项:无脚本、需联网打目标环境 → 未授权未执行。
  5. 登录态业务流 E2E:无 MACHINE_JSON_PATH 凭据 → 仅做游客态可用性 + 鉴权契约,登录后业务流待核实。
  6. 兼容性 / 无障碍:仅 chromium 单引擎、无 axe → 未发现资产。
  7. 探索性测试:无 charter 记录 → 待核实。
  8. langgraph 深度链路(对话/RAG/whisper 全栈 app.main):本机不启、生产在 ai.etotem.com.cn → 仅验 251 节点最小服务套件。
  9. B-142-1 探针复测:本轮为采信轮,匿名访问 200 + code:400 证据沿用 R156 窗口(源码零变更)。

附录:本轮命令与日志

# SRS 变更检查(G12)
git log --since="2026-11-11 23:00" --name-only --format="%h %s" -- docs/superpowers/specs/ tests/test-cases/ docs/superpowers/api/API_REFERENCE.md   # 零输出
# 采信判定基线核对
git show a7e3b6388 --name-only --format=""      # 仅 docs/tdd/orchestration/report-dev-2026-11-12-0040.md(纯文档)
# 浏览器(189 单任务 / 本机单任务串行)
node docs/tdd/tools/dispatch_189_admin.cjs          # → _r157_189_admin.log(5/5 EXIT=0)
cd tests && npx playwright test -c playwright.config.live.js --project=frontend-mobile   # → _r157_e2e_fe.log(6/6)
cd tests && npx playwright test -c playwright.config.live.js --project=shop-api          # → _r157_e2e_shop.log(4/4)
cd tests && npx playwright test -c playwright.config.health.js                           # → _r157_e2e_health.log(13/13)
cd tests && npx playwright test -c playwright.config.live.js --project=dx-bridge         # → _r157_e2e_dx.log(2 skip)
# 三套 Jest + 根级(实跑复核,与 R156 采信一致性验证)
cd cfc-web && npx jest --coverage                     # → _r157_web.log(116/116)
cd cfc-frontend && npx jest --coverage                # → _r157_fe.log(624=609/3/12)
cd tests && npx jest -c jest.config.js                # → _r157_root.log(23=7/16)
# langgraph@251(kick 分离 + 单次读日志)
node _r157_251.cjs kick && node _r157_251.cjs read    # → /tmp/r157_pytest.log(42/9, 359.57s)