report-test-2026-11-13-R191.md 38 KB

测试负责人工作汇报(R191 轮)

本汇报按《测试负责人工作汇报模板》填写。R191 为后端全量实跑轮(R189/R190 均为采信,按纪律必须实跑):基线起点 cfclub @ 309fa0220(R190 收口 12:35 之后),跑测窗口内并行会话把 HEAD 推进至 123f768c7(含 S-cfc-197 契约类),收尾经 HTTP 兜底 fetch 后快进至 5ad781a00(含 S-cfc-199 / S-cfc-200 三个契约类)。 拓扑(用户指令):浏览器经 http://cfc.iwintrue.com/admin(后台)+ http://cfc.iwintrue.com/frontend(小程序);189 / 204 / 本机为浏览器节点(每节点仅 1 个浏览器任务,本机四个套件串行);langgraph 部署 251 → 本轮已实派并实跑。 ★ 本轮关键事实 ① 后端恢复全量实跑:mvn -o -B clean test 1:01h → 386 类 / 3315 例 / 3232 过 / 73F+6E+4S = 97.50%(剔 skip 97.62%);386/386 XML 无沉默、2121 主源 + 392 测试源 0 编译错、dump 0。 ② 窗口与收尾两次新增契约类均已逐类实测取证:本地窗口 S-cfc-197 AdminReportParserManageContractTest 37/37 GREEN + S-cfc-198 AdminKnowledgeBaseManageContractTest 13 例 6 红/7 绿(预期 RED);收尾远端推入 S-cfc-199/200 三类 52 例 39 红/13 绿(TDD 前瞻 RED)。 ③ 存量红零漂移第 26 次:13 类 / 24 红,与 R190 的 13 类逐类一致(唯一 −1 例为 TaskReviewScP11ContractTest 装置浮动 2F→1F)。 ④ langgraph@251 4 红全为环境:429 AgnesAI 免费额度耗尽 + 401 api key ****ab12 invalid;live /health 200/2ms 但 /api/v1/chat 000/40s、/api/v1/analyze 000/50s → B-142-2 复发 + B-186-1 延续。 ⑤ 浏览器任务级全绿:本机四件套 28/28 + 跨节点 189 admin 5/5 + 204 fe 6/6(连续 2 轮,B-95 可销号);dx 2 跳承袭(B-DX-1)。 ★ 全站可比:4254 例 / 4088 过 = 96.10%(剔 skip 96.67%),红 141。红数环比 +47 全部为 TDD 前瞻契约 RED(+45:S-cfc-198 6 + 远端三类 39)与上游环境红(langgraph +3),零缺陷回归;剔除全部预期 RED 后为 98.34%。


基本信息

项目 内容
汇报人 测试负责人(自动化测试闭环任务 / 软件测试专家团·陆谨)
汇报周期 2026年11月13日 13:14 ~ 14:35(第 191 轮)
基线 起点 cfclub @ 309fa0220(=origin);跑测中推进 123f768c7;收尾 ff 至 5ad781a00(13:14 → 14:35 窗口)
窗口内需求变更 零 — docs/superpowers/specs(201 份)/ tests/test-cases(16 份)/ tests/user-scenarios(11 份)/ API_REFERENCE.md 窗口内 git diff 命中 0 → G12 ✅,未触发用例编写闸门(我无需新增/改用例)
窗口内源码变更 零功能源码 — cfc-backend/src/main、cfc-frontend、cfc-langgraph 窗口 diff 命中 0;唯一变更为测试契约类 5 个(S-cfc-197/198/199/200)+ cfc-web 版本号 bump + docs
负责模块/单元 全站:管理端 admin@本机 + 189 · 小程序 H5 fe@本机 + 204 · cfc-langgraph@251(实派) · cfc-backend JUnit(全量实跑 + 收尾增量复验) · cfc-web/cfc-frontend Jest · 线上 API 非功能层

一、本轮工作数据汇总

1.1 测试用例建设

指标 数量 填写说明
本轮新增测试用例数* 0 个(由我新增);并行会话 +102 例(本地窗口 50 + 收尾远端 52) SRS/场景/接口文档窗口零变更 → 未触发用例编写闸门(G12 ✅);窗口内并行会话新增 5 个契约测试类(S-cfc-197 37 例 / S-cfc-198 13 例 / S-cfc-199 17 例 / S-cfc-200 16+19 例),全部本轮逐类实测取证,未出现 B-189-2 式「推入未验证」
本轮验证执行测试数* 4254 个 后端 3367(全量实跑 3315 + 收尾增量 52)+ 前端 Jest 740(fe 624 + web 116)+ langgraph 51(251 实派)+ 浏览器 41(39 过 + dx 2 跳)+ 线上 API 32 + 根级 23
用例通过率 96.10%(4088/4254;剔除 skip 96.67%) 红 141 / 跳 25;环比 R190(97.22%)−1.12pct,红数 +47 全为 TDD 前瞻契约 RED(+45)+ 上游环境红(langgraph +3)+ 装置浮动(−1);剔除全部预期 RED 后 98.34%,零缺陷回归
用例台账 tests/test-cases 16 份 / 表行 1168 / 唯一 TC 618 严格锚点(tests JS/TS/py 排除 generated ∪ Java 测试)153;双向命中 106 = 17.2%;孤儿锚点 47 / 台账空转 512

1.2 会话与任务分发

指标 数量 填写说明
分派任务数* 8 个 R191-1 本机 admin-desktop(5/5)+ frontend-mobile(6/6)+ shop-api(4/4)+ health(13/13,串行);R191-2 189 admin-desktop(5/5);R191-3 204 frontend-mobile(6/6);R191-4 251 langgraph pytest(47/51,134.17s)+ live 三端点;R191-5 cfc-web Jest(116/116);R191-6 cfc-frontend Jest(609/3/12);R191-7 根级 Jest(7/16);R191-8 线上 API 非功能(25/0/7)+ 收尾增量 3 契约类(13/39)
恢复智能体会话数* 0 个 各节点实探:189:4090=200、204:4091=200、251:4096=200、251:9000=404(根)/health 200、本机 4091=OPEN;未遇中断会话
当前在用会话数 0 个 全部结束;251 残留 pytest 进程(2 个,存活 4m33s)已 kill -9 清理并 ps 复核 0

1.2b 各会话当前工作状态列表

会话标签 会话 ID/地址 当前状态 当前任务 静默/空闲时长 工作目录 备注
local-admin 本机 Playwright done admin-desktop UI E2E 1.4m d:\cfc\tests 5/5;TC-A-U01~U05 全过(U05 55.3s)
local-frontend 本机 Playwright done frontend-mobile UI E2E 1.9m d:\cfc\tests 6/6;B-185 维持消除
local-shop 本机 Playwright done shop-sort API E2E 9.7s d:\cfc\tests 4/4
local-health 本机 Playwright done health 鉴权契约 E2E 5.5s d:\cfc\tests 13/13(TC-HP-U01~03 全 401)
remote-189 192.168.16.189:4090 done admin-desktop UI E2E 1.3m C:\code\cfc\tests 5/5;HEAD 8524533c8,spec blob 4703d73fb=本机 → 可比
remote-204 192.168.16.204:4091 done frontend-mobile UI E2E 44.7s D:\cfc\tests 6/6(连续 2 轮)→ B-95 可销号
remote-251 192.168.16.251:4096 done langgraph pytest + live 探针 134.17s /sc-data/cfc/cfc-langgraph 47/51;4 红全 429/401 环境;node HEAD 563e6c62d,cfc-langgraph 与本地零 diff
local-jest 本机进程 done cfc-web + cfc-frontend + 根级 web 124s / fe 66s / root 7s cfc-web / cfc-frontend / tests web 116/116、fe 609/3/12(3 预期 RED)、根级 7/16(B-36)
local-backend 本机 mvn done 后端全量 386 类 + 收尾增量 3 类 1:01h + 2m43s d:\cfc\cfc-backend 全量 3315(3232/79/4)+ 增量 52(13/39)
virtual dx-bridge done D/X 桥接鉴权契约 瞬时 d:\cfc\tests 2 skip(端点 404,B-DX-1 第 33 轮)

1.3 问题处置

指标 数量 填写说明
新测试发现问题数* 3 个 ① B-191-1(P1 流程/证据):跑测窗口内远端连续推入 3 个契约类(AdminSupplierManageContractTest 16 例 10F、SupplierManageAdminContractTest 19 例 16F、DimensionConfigAdminContractTest 17 例 13F),若不做收尾 fetch + 增量复验,会把 39 例 TDD-RED 当作「未覆盖」或把后续轮次误判为回归 → 本轮已增量复验并计入;② B-191-2(P1 装置/性能):后端全量 1:01h(R188 同源码 43:15),慢类 ArticleCategoryControllerTest 493.97s、AdminFamilyOverviewControllerTest 341.2s、GrowthPublicEndpointMappingTest 334.2s、GrowthRecordSyncFlowTest 280.7s、PlannerBindInviteFlowTest 178.1s;cfc-scheduler 日志 20524/73287 = 28.0% → B-152-3 复现;③ B-191-3(P2 工具/度量):线上 API 套件首跑仅 26 例(19 过 + 7 跳)/5.4min,二次同命令 32 例(25 过 + 7 跳)/18.2s → 首跑口径不完整,报告例数须以「Running N tests + summary 例数 = 点名例数」双校验
已解决测试相关问题数* 2 个 ① B-95 销号(204 节点):204 fe 6/6 连续 2 轮(R190 46.1s + R191 44.7s),满足连续 2 轮判据;② S-cfc-197 GREEN 确认:AdminReportParserManageContractTest 37/37 全绿 → 能力键 admin.reportParser.manage 实现已落地,可直接转 GREEN(前提:研发侧 --mark-yellow/--mark-green 登记)
待解决测试相关问题数 P0×2 / P1×9 / P2×4 ① B-152-1/2 CI 清单漏拦扩至 18 / 陈旧 26;② TDD 前瞻契约 RED 94 例(12 类)待研发实现;③ 存量装置/数据红 24 例(13 类);④ B-177-1 pytest 进程不退出(第 13 轮);⑤ B-156-1/B-170-1 迁移 DDL;⑥ B-162-1 未入库测试类;⑦ B-178-1 反射装置浮动;⑧ B-36 根级 16 红(9082 未起);⑨ B-DX-1 dx 404;⑫ B-142-2 复发(429/401 上游);⑬ B-186-1 live chat/analyze 挂死;⑭ B-189-1 git SSH 22 仍故障;⑮ B-191-2 全量耗时劣化

1.4 本轮 git 提交与推送证据(真理证据)

提交 sha 关联任务/能力键 阶段 触及文件类型 目标分支 已推送远端 备注
(本轮) 全站巡检 R191 + 后端全量实跑 + 5 契约类补验 + B-191-1/2/3 + B-95 销号 + S-cfc-197 GREEN 汇报 报告 + 执行日志 + blockers + 研发通知 + 台账 cfclub ✅ 推送 http://git.iwintrue.com/liaoxg/cfc.git(SSH 22 仍故障,B-189-1 第 2 轮 HTTP 兜底) 结果有变化 → 已提交并通知研发

1.5 状态机阶段分布(全局进度,研发侧账本口径)

阶段 键数 备注
RED 窗口新增 5 个契约类(S-cfc-197 已全绿可转 YELLOW/GREEN;S-cfc-198/199/200 为本轮 TDD-RED 前瞻) 研发状态机口径另计(sc-key-map.md 窗口 3 次回填,241/241 全映射达成)
YELLOW 承袭 待研发 --mark-yellow 登记
GREEN S-cfc-197(本轮实测 37/37);S-cfc-182(R190 14/14) 测试侧已取证

1.6 数据源健康度

数据源 读取键数 是否正常 备注
需求侧(⏳ wish) 0 正常 SRS 目标池未启用;specs 201 份可读
契约常量(contract) 5 类新增 正常 S-cfc-197/198/199/200 全部可收集可执行
测试用例引用(test_case_map) 618 唯一 TC 正常 台账扫描正常(表行 1168)
执行结果回填(case_results) 全量 386 XML + 增量 3 XML 正常 386/386 无沉默,dump 0

二、历史审查记录(阶段 -1 记忆召回)

项 内容
上次审查 R190(2026-11-13 12:35,0e6f285da),结论「不通过(承袭,无回归、正向项明确)」,全站 4141/4026(97.22%),红 94;后端采信 R189;langgraph 50/51;204 节点恢复
历史遗留 后端存量 25 红(13 类)· 根级 16 红(B-36)· fe 3 预期 RED(S-cfc-132/133)· CI 漏拦/陈旧(B-152-1/2)· B-177-1 · B-178-1 · B-186-1 · B-189-1
本次是否改善 后端由采信转全量实跑(386 类 3315 例,零沉默零编译错);B-95 销号(204 连续 2 轮 6/6);S-cfc-197 37/37 GREEN;存量 13 类逐类零漂移;浏览器六件套任务级全绿
本次是否回退 langgraph 50/51 → 47/51(−3):4 红全为 test_auto_tag,日志 429 AgnesAI 免费额度耗尽 ×3 + 401 api key ****ab12 invalid ×5 → 上游凭据/配额环境型(节点 cfc-langgraph 与本地零 diff、窗口源码零变更)→ 非代码回归;G1 97.22% → 96.10%(红 +47 全为 TDD 前瞻契约 RED 45 + 环境红 3 − 装置浮动 1)
教训应用 ①「采信不得超过 2 轮」→ 本轮强制全量实跑(R189/R190 均采信);② 收尾两次 fetch(提交前 + 推送前)→ 本轮第二次抓到远端 3 个新契约类并增量复验(B-191-1);③ 绝不用「类/分钟」外推或提前 kill(R188 教训):本轮前半程 31 类/22min 仍耐心等完,最终 1:01h 自然收口;④ 远程派发用 setsid nohup 分离 + 单次读,不在等待期建 shell(B-125);⑤ 上游 401/429 与代码回归用「节点源码零 diff + 窗口源码零变更」判别(B-142-2 判别式)

本次为该对象第 191 次审查,有历史记录;上述内容仅作对照,本轮全站所有维度均为本轮实测(后端全量 + 5 契约类定向 + 浏览器三节点 + langgraph 251 实派 + Jest 三套 + 线上 API),无承袭项。


三、项目画像与覆盖矩阵

3.1 项目画像

维度 内容
业务定位 家庭教育成长平台(五维能量 身/心/智/行/富):小程序家长端 + 规划师端 + 管理后台 + 独立商城
技术栈 Spring Boot 2.7.18 + MyBatis-Plus + Java 8(9082)/ uni-app 微信小程序(Vue2)/ Vue2 + Element UI(8082)/ FastAPI + LangGraph + ChromaDB(9000@251)
模块结构 cfc-backend(366 控制器 / 395 测试源 / 386 执行类)/ cfc-frontend(42 测试文件 / 624 例)/ cfc-web(17 套件 / 116 例)/ cfc-langgraph(51 例 @251)/ tests(e2e-live 5 文件 + e2e/api 点名 4 文件)
关键路径 登录/家庭/成员 → 五维能量 → 任务/成长记录 → 健康报告上传解析 → 测评订单 → 商城/支付 → AI 对话(LangGraph)
测试现状 本轮全实测:后端全量 3315 + 增量 52 + fe 624 + web 116 + langgraph 51 + 浏览器 41 + API 32 + 根级 23 = 4254 例
质量目标 全量用例全绿、覆盖 SRS 与用户场景(含异常流)、浏览器双节点可复现、结果变更即提交并通知研发
风险点 ① 后端 TDD 前瞻契约 RED 94 例(12 类)待实现;② 存量装置/数据红 24 例(13 类);③ CI 清单双向失真(漏拦 18 / 陈旧 26);④ 上游 LLM 凭据 + 配额双故障(429/401,live chat/analyze 挂死);⑤ 根级 16 红(9082 未起);⑥ 迁移 DDL 缺陷(B-156-1/B-170-1);⑦ pytest 进程不退出(B-177-1);⑧ 全量耗时劣化至 1:01h(B-191-2);⑨ git SSH 22 故障(B-189-1)
待核实项 S-cfc-176 幂等分支排期 · 251 上游 key 更换(****ab12)与配额 · 204 销号后续稳定性 · B-156-1/B-170-1 修复状态 · S-cfc-186 跨家庭 IDOR 研发排期 · S-cfc-198 三项缺口(重试/分批/角色门禁)排期

3.2 20 类测试覆盖矩阵(全类不省略)

# 测试类型 三态 证据(本轮实测)
1 单元测试 ✅ 已发现 后端全量 386 类 3315 例(本轮实跑)+ 增量 3 类 52 例;前端 624;管理端 116
2 测试覆盖率 ⚠️ 部分 管理端 Jest 覆盖率可产出(Lines 未变);后端未开 jacoco(未授权改 pom)
3 变异测试 ❌ 未发现 全仓无 pitest/mutation 配置(扫描 0 命中)
4 集成测试 ✅ 已发现 integration/* 本轮实跑:EnergySystemFlowTest 6F、GuideModuleIntegrationTest 1E、DailyCheckinStreakFlowTest 6/6、AdminFamilyOverview 341s 全绿等
5 契约测试 ✅ 已发现(本轮重点) 5 类全实测:S-cfc-197 37/37 GREEN、S-cfc-198 13(6F/7绿)、S-cfc-199 17(13F/4绿)、S-cfc-200 35(26F/9绿);历史契约窗 12 类 94 红承袭
6 接口 API 测试 ✅ 已发现 线上 API 32 例(本轮实测:25 过 / 7 跳 / 0 红,18.2s;首跑 26 例异常见 B-191-3)
7 系统/端到端 ✅ 已发现 浏览器 41 例(39 过 + 2 跳):admin 5(本机+189)、fe 6(本机+204)、shop 4、health 13
8 验收 UAT ⚠️ 待核实 无独立 UAT 包;以浏览器 39 例作为系统级验收代理
9 BDD 规格 ✅ 已发现 用户场景 11 份 / SC 唯一 244;被台账引用 152 = 62.3%
10 冒烟测试 ✅ 已发现 api-smoke.spec.js 本轮全绿(含自注册链路)
11 回归测试 ✅ 已发现 存量 13 类逐类零漂移(第 26 次);浏览器/fe/web/API 全绿或零漂移
12 探索性测试 ⚠️ 部分 历轮浏览器人工探索记录;本轮未安排新探索项
13 性能测试 ❌ 未实测 未授权联网压测;仅 API 时延观察 + 后端耗时画像(B-191-2 493.97s 单类)
14 可靠性测试 ⚠️ 部分 B-177-1 第 13 轮复现:summary 打印后进程存活 4m33s(Sl),EXIT= 永不落盘;pytest 本身 134.17s 正常收口
15 安全测试 ✅ 已发现 nonfunc-security.spec.js 11 例本轮全绿;匿名 6 端点 6/6 = 401
16 兼容性测试 ⚠️ 部分 双视口(desktop 1440 / mobile 375)实测通过;无多浏览器矩阵
17 可用性测试 ⚠️ 部分 登录-主框架-核心菜单旅程 5/5 × 2 节点;无专项可用性问卷
18 无障碍测试 ❌ 未发现 无 axe/pa11y 配置
19 QA 流程 ⚠️ 部分 汇报/台账/blockers 闭环在跑;CI 清单漏拦扩至 18(B-152-1/2 第 22 轮)
20 质量指标 ⚠️ 部分 全站 96.10%(G1 阈值 98% 未达);锚点 17.2%(R190 口径 20.1%,口径差异见 §附录 C)

四、五要素问题清单

P1-1 后端 TDD 前瞻契约 RED 94 例(12 类)待研发实现

要素 内容
① 问题描述 本窗口与收尾远端共推入 5 个契约类,其中 4 类为 TDD-RED 先行态,累计 94 例红 / 12 类(TeacherMindRecord 12 · TeacherAppointmentGuard 10 · AdminKnowledgeBaseManage 6 · FamilyAutoCreateForPurchase 4 · PlanContentSafetyReview 4 · TeacherDataIsolationScT13 4 · TeacherPlanCreate 4 · NutritionPlanTeacher 3 · TeacherAssessmentRecord 3 · TeacherDimensionScore 2 · GuideFamilyTaskReview 2 · TeacherFamilyOverview 1 · 远端三类 39 例)
② 测试 bug 点 AdminKnowledgeBaseManageContractTest#syncFailureRetry_syncPathShouldSupportRetry / #largeBatch_syncAndBackfillShouldSupportBatching / #permissionFlow_kbWriteEndpointsShouldEnforceRole(断言 expected true but was false);SupplierManageAdminContractTest(19 例 16F);DimensionConfigAdminContractTest(17 例 13F)
③ 最优修改方案 研发按能力键逐项实现:① KnowledgeBaseController / KnowledgeBaseVectorController 补平台角色门禁(对齐 AdminUnifiedKnowledgeController.allowed);② 同步/回填路径补 syncBatch / BATCH_SIZE 分批;③ 补 maxRetries / syncWithRetry / @Retryable 重试;④ SC-A-06 停用在售商品守卫;⑤ 各 Teacher/成长域实现按 sc-key-map.md 排期
④ 修改目的 恢复「契约先行」闭环:契约红 → 实现 → GREEN;当前 94 红使 G2 无法归零,且掩盖真实回归信号
⑤ 修改后能否闭环 能。复测方式:mvn -o -B test -Dtest=<类> 逐类定向,单类 0F 且连续 2 轮 → 移出台账;契约类全绿后 gate_evaluator 的 G2 分母同步收缩

P1-2 存量装置/数据红 24 例(13 类,零漂移第 26 次)

要素 内容
① 问题描述 13 类 24 红:EnergySystemFlowTest 6F、GrowthPublicEndpointMappingTest 5E、DimensionRegistryMapContractTest 3F、OrchestrationEngineTest/OrchestrationIntegrationTest/MembershipPaySwitchTest/PaymentServiceORDRoutingTest/TeamProfitCronContractTest/UserServiceWechatLoginTest/UserServiceWechatLoginContractTest/GuideModuleIntegrationTest(1E)/MembershipPlanPurchaseContractTest/TaskReviewScP11ContractTest 各 1
② 测试 bug 点 TaskReviewScP11ContractTest 2F→1F 浮动(ReflectionUtils 反射装置无规则,B-178-1);GrowthPublicEndpointMappingTest 5E 因该文件未入库(??,B-162-1)且 334.2s;TeamProfitCronContractTest 平台费截断(数据)
③ 最优修改方案 ① B-178-1 用 @MockBean 替代反射注入;② B-162-1 把 GrowthPublicEndpointMappingTest / JwtInterceptorGrowthPolicyTest / ArticleTagsContractTest 三个 ?? 文件入库;③ TeamProfitCron 平台费按 BigDecimal 精度修正(断言侧改 compareTo 或实现侧改舍入)
④ 修改目的 消除装置噪声,使「红」只代表产品缺陷(G2/G13 可信)
⑤ 修改后能否闭环 能。定向复跑单类 0F 连续 2 轮 → 从 BACKEND_OBSERVED_CLASSES 移除 → CI 硬门禁自动收紧

P1-3 B-191-1 窗口内多次推入契约类,全量与收尾口径不一致(流程)

要素 内容
① 问题描述 13:14 基线 309fa0220;跑测中本地 HEAD → 123f768c7(+S-cfc-197 37 例);收尾 fetch 远端 +11 提交(5ad781a00,+S-cfc-199/200 三个契约类 52 例)。若只跑一次全量就定稿,会把 52 例(39 红)记为「未覆盖」
② 测试 bug 点 非用例缺陷,属取证流程缺口:单次 fetch + 单次全量无法覆盖窗口尾部的并行提交
③ 最优修改方案 固化「双 fetch + 增量定向」:提交前 fetch 一次、推送前再 fetch 一次;若 git diff --name-only 命中 src/test/** → 逐类定向复跑并计入总量;命中 src/main/** → 全量重跑或标「截断」
④ 修改目的 保证「报告例数 = 真实覆盖率」,避免已实现资产被漏记、避免把新契约红误判为回归
⑤ 修改后能否闭环 能。本轮已按此执行(52 例全部取证,39 红计入 G2 的「前瞻契约」栏);下轮起写入 SOP §阶段 4

P1-4 B-152-1/2 CI 清单双向失真(漏拦扩至 18 类)

要素 内容
① 问题描述 .gitlab-ci.yml:61 BACKEND_OBSERVED_CLASSES 33 类 vs 实测红类 25 类 → 漏拦 18 类(含本轮 5 个新契约类:AdminKnowledgeBaseManage / FamilyAutoCreateForPurchase / GuideFamilyTaskReview / NutritionPlanTeacher / PlanContentSafetyReview / TeacherAppointmentGuard / TeacherAssessmentRecord / TeacherDataIsolationScT13 / TeacherDimensionScore / TeacherFamilyOverview / TeacherMindRecord / TeacherPlanCreate / SupplierManageAdmin? 等)、陈旧 26 类(早已全绿仍被排除)
② 测试 bug 点 非用例缺陷,属 CI 配置漂移;backend-blocking-junit job 在含红例分支上必然失败,同时对 26 个已绿类失去回归守护
③ 最优修改方案 用本轮实测红类集合重写清单(25 类),并加一条 CI 步骤:mvn test 后自动比对 surefire 红类与清单,差异即 fail 并输出差集
④ 修改目的 让硬门禁真实生效(既不漏拦红类,也不虚化 26 类的守护)
⑤ 修改后能否闭环 能。验证方式:在含红例分支跑一次 CI,backend-blocking-junit 应「必红且红因准确」

P1-5 B-142-2 复发 + B-186-1 live 链路挂死(上游 LLM)

要素 内容
① 问题描述 langgraph@251:pytest 47/51,4 红全 test_auto_tag;日志 429 You've reached the API rate limit for free users (AgnesAI) ×3 + 401 Authentication Fails, Your api key: ****ab12 is invalid ×5;同实例 /health 200/2.07ms,但 /api/v1/chat 000/40.0s/0B、/api/v1/analyze 000/50.0s/0B
② 测试 bug 点 app/graphs/chat_graph.py:148/195(召回/保存记忆 401)、app/agents/intent_classifier.py:62(429 后 默认 chat 静默兜底)
③ 最优修改方案 运维更换有效 key 并升级配额;研发把 intent_classifier 的兜底改为「显式降级 + 可观测指标」;chat_graph 对 401 快速失败而非重试挂死
④ 修改目的 使「单测绿」与「真实链路可用」不再背离(R188 曾出现 51/51 绿 + chat 120s 零字节)
⑤ 修改后能否闭环 能。判据:pytest 51/51 且 live chat/analyze 200 且 p95 < 30s,连续 2 轮

P2-1 B-191-2 全量耗时劣化至 1:01h(装置/性能)

要素 内容
① 问题描述 同源码 R188 43:15 → 本轮 1:01h(+41%);慢类 ArticleCategoryControllerTest 493.97s、AdminFamilyOverviewControllerTest 341.2s、GrowthPublicEndpointMappingTest 334.2s、GrowthRecordSyncFlowTest 280.7s、PlannerBindInviteFlowTest 178.1s(前 5 占 ~45%);cfc-scheduler 日志 20524/73287 = 28.0%、上下文启动多次
② 测试 bug 点 装置层:controller 层 @SpringBootTest 全上下文 + src/test/resources 缺 application-test.yml → 每类重跑 DatabaseInitializer 全量迁移;@EnableScheduling 在测试态常驻
③ 最优修改方案 ① 增设 src/test/resources/application-test.yml(禁 @EnableScheduling、共享 datasource);② 慢类改 @WebMvcTest + @MockBean;③ 修 B-156-1/B-170-1 两条迁移语法错(避免 34 次建表全失败的重试开销)
④ 修改目的 把全量压回 ≤45min,使「每轮全量实跑」可持续(当前 1h+ 已挤压巡检预算)
⑤ 修改后能否闭环 能。判据:mvn -o -B clean test 的 Total time ≤ 45:00 且类数不变

P2-2 B-191-3 线上 API 套件首跑例数不完整(工具/度量)

要素 内容
① 问题描述 首跑 --reporter=line 得 26 例(19 过 + 7 跳)/5.4min;二次同命令 --reporter=list 得 32 例(25 过 + 7 跳)/18.2s(与 R190 一致)。首跑 6 例未计入,且耗时高 18 倍
② 测试 bug 点 无用例缺陷;属运行口径不可复现(疑与首次冷启动/网络抖动/--output 目录复用有关)
③ 最优修改方案 采集侧固化「双校验」:必须同时满足 Running N tests 的 N = 点名文件静态用例数、summary 的 pass+fail+skip = N;任一不符即重跑并记录两次口径
④ 修改目的 防止「例数漂移」被当成覆盖变化(本项目已多次出现 990 vs 32 的口径问题,B-173-2)
⑤ 修改后能否闭环 能。本轮已用二次运行定案(32 例);下轮起把双校验写入附录命令模板

P2-3 B-177-1 pytest 进程不退出(第 13 轮)

要素 内容
① 问题描述 summary 已打印(4 failed, 47 passed in 134.17s)但 2 个进程存活 4m33s(ps 状态 Sl),echo EXIT=$rc 永不执行 → 日志无 EXIT= 行;kill -9 后清理干净
② 测试 bug 点 app/main.py lifespan 未 await client.aclose()(线索 RuntimeWarning: coroutine 'JavaClient._get_client' was never awaited);派发器缺超时兜底
③ 最优修改方案 产品侧补 shutdown 钩子关闭 http client;派发器命令加 timeout -k 10 900,并以 summary 文本 + 进程存活双判据定案
④ 修改目的 CI 里 pytest job 不挂死(否则流水线超时)
⑤ 修改后能否闭环 能。判据:进程在 summary 后 ≤10s 退出且 EXIT=0 落盘

P2-4 B-189-1 git SSH 22 故障(第 2 轮)

要素 内容
① 问题描述 git fetch origin 走 git@git.iwintrue.com:iwt/cfc.git 报 Please make sure you have the correct access rights;改 http://git.iwintrue.com/liaoxg/cfc.git 后 fetch/推送均成功
② 测试 bug 点 环境侧(Gogs sshd 22 端口不可用),非代码
③ 最优修改方案 运维恢复 22 端口;或把 CI/自动化节点的 origin fetch URL 一并改为 HTTP(当前 push URL 已是 HTTP,fetch 仍 SSH)
④ 修改目的 保证自动化闭环的「真理证据」通道不依赖人工兜底
⑤ 修改后能否闭环 能。判据:git fetch origin 无凭据报错且 rev-list --left-right --count 可算

五、域结论表

审查维度 负责专家 结论 关键证据
单元·组件级(单元/覆盖率/变异) 苏雅 ⚠️ 部分通过 后端 386 类 3315 例实跑(3232 过 / 79 红 / 4 跳);386/386 XML 无沉默;覆盖率仅管理端可产出;变异测试全仓 0 配置
集成·接口级(集成/契约/API) 柯砚 ⚠️ 部分通过 集成域实跑(EnergySystemFlow 6F、GuideModule 1E、DailyCheckin 6/6);契约 5 类全实测(S-cfc-197 GREEN、S-cfc-198 6F、远端三类 39F);线上 API 32 例 25/0/7
系统·验收级(E2E/UAT/BDD) 白樾 ✅ 通过(浏览器级) admin 5/5(本机+189)、fe 6/6(本机+204)、shop 4/4、health 13/13;UAT 无独立包(以 39 例代理);SC 244 映射 152 = 62.3%
测试保障级(冒烟/回归/探索) 闻朔 ✅ 通过 冒烟全绿;回归零漂移第 26 次;探索性无新增章程(承袭)
性能·可靠性 骆骋 ⚠️ 部分 全量 1:01h(B-191-2,慢类 493.97s);pytest 进程不退出(B-177-1 第 13 轮);未授权压测
安全 关屿 ✅ 通过(本轮实证) 匿名 6 端点 6/6 = 401;nonfunc-security 11 例全绿;S-cfc-198 揭示知识库写入无角色门禁(已记 P1-1 ③)
兼容·体验 阮清 ⚠️ 部分 双视口通过;无多浏览器矩阵;无 axe/pa11y
流程·度量·代码 何序 ⚠️ 部分 CI 漏拦 18 / 陈旧 26(G11 ❌);锚点 17.2%;@GetMapping 8 处仍违规范;specs 201 份、控制器 366

六、门禁结论

结论:不通过(有条件) —— 全站 4254 例 / 4088 过 = 96.10%(剔 skip 96.67%),红 141。红数环比 +47 的构成:TDD 前瞻契约 RED +45(本地 S-cfc-198 6 + 收尾远端三类 39)、上游环境红 +3(langgraph 429/401)、装置浮动 −1(TaskReviewScP11 2F→1F),零缺陷回归;剔除全部预期 RED(97 例)后 98.34%。阻断项为前瞻契约待实现 + 存量装置红 + CI 清单失真 + 上游 key/配额失效 + 全量耗时劣化,均非本轮新增回归。

门禁 判定 依据(本轮实测)
G1 全站通过率 ≥98% ❌ 96.10% 4088/4254(剔 skip 96.67%,剔预期 RED 98.34%);−1.12pct 因前瞻契约 +45 与环境 +3
G2 后端红归零/契约裁决 ❌ 118 红 全量 79(73F+6E)+ 增量 39 = 存量 24(13 类) + 前瞻契约 94(12 类);存量逐类零漂移
G3 前端双绿 ⚠️ fe 609/624(3 预期 RED)+ web 116/116;浏览器 fe 6/6 双节点 3 红全为 S-cfc-132/133 未交付(AC-R1/AC-R2/AC-2 RED-A7)
G4 编译可编译 ✅ Compiling 2121 main + 392 test source files,0 错(含 5 个新契约类)
G5 结果完整性 ✅ 386/386 XML 可聚合、无沉默类;*.dump 0;增量 3 XML 完整
G6 浏览器 E2E ✅ 39 过 + 2 跳 admin 5/5(本机 1.4m + 189 1.3m)、fe 6/6(本机 1.9m + 204 44.7s)、shop 4/4(9.7s)、health 13/13(5.5s)、dx 2 跳
G7 langgraph ❌ 47/51(92.2%) 4 红全 test_auto_tag;429 AgnesAI ×3 + 401 ****ab12 ×5;live chat 000/40s、analyze 000/50s;节点源码与本地零 diff → 环境红
G8 匿名鉴权 401 ✅ 6/6 mind/fortune、energy/overview、health/plan/list、xiaomi-health、huawei-health、admin/families/overview 全 401 请先登录
G9 用例锚定 SRS ❌ 17.2% 双向命中 106 / 台账 618;锚点 153(孤儿 47、空转 512);SC 映射 62.3%
G10 节点可比 ✅ 三节点 189 admin 5/5(spec blob 4703d73fb=本机)、204 fe 6/6、251 pytest(cfc-langgraph 与本地零 diff)+ 本机四件套
G11 CI 硬门禁 ❌ 清单 33 vs 实测红 25 → 漏拦 18 / 陈旧 26(第 22 轮未修)
G12 SRS 变更驱动用例更新 ✅ specs 201 / test-cases 16 / 场景 11 / API_REFERENCE 窗口零变更 → 我无需新增或改用例;窗口 5 个契约类由并行会话产出,本轮全部补验
G13 存量红零漂移 ✅ 第 26 次 13 类逐类与 R190 一致(唯一差异 TaskReviewScP11 2F→1F 装置浮动)
G14 场景→用例映射 ⚠️ 62.3% 244 SC 中 152 被台账引用

七、变更触发动作(用户规则:结果有变 → 提交远程 + 通知研发)

项 内容
结果是否变化 是 — 后端由「采信」转全量实跑(386 类 3315 例,新增 5 契约类 102 例);langgraph 50/51→47/51;B-95 销号;S-cfc-197 GREEN;红 94→141(全为预期 RED/环境)
提交 本轮报告 + 执行日志 + blockers + 研发通知 + 台账(详见 §1.4)
推送 ✅ http://git.iwintrue.com/liaoxg/cfc.git → cfclub(SSH 22 故障,HTTP 兜底第 2 轮)
通知研发 ① 仓库 docs/tdd/notice-2026-11-13-R191-研发通知.md;② docs/tdd/test/blockers.md R191 段(P0/P1 排序);③ Agent Mail 仍不可用(GetMe → not_bound,「请勿重试」)→ 以 ①+②+推送落地

八、待办

优先级 事项 归属
P0 CI BACKEND_OBSERVED_CLASSES 按实测 25 类重写(漏拦 18 / 陈旧 26) 研发/CI
P0 251 上游 LLM key 更换(****ab12 invalid)+ 配额升级 运维
P1 前瞻契约 RED 94 例逐键实现(S-cfc-198 重试/分批/角色门禁优先) 研发
P1 存量 13 类装置红治理(@MockBean 替反射、3 个 ?? 测试类入库、平台费精度) 研发/测试
P1 全量耗时压回 ≤45min(application-test.yml + 慢类拆 @WebMvcTest) 测试/研发
P2 pytest shutdown aclose() + 派发器 timeout -k 10 900 研发/测试
P2 git SSH 22 恢复(或把 fetch URL 一并改 HTTP) 运维
P2 9082 本地起服务后复跑根级 16 红(B-36) 测试

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

# 环境探针(SOP 第一步)
/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

# 后端全量(工程根必须在 cfc-backend)
cd d:/cfc/cfc-backend && JAVA_HOME=/d/jdk1.8.0_25 /d/maven/apache-maven-3.6.1/bin/mvn -o -B clean test   # 1:01h
# 聚合:surefire XML → 386 类 / 3315 例 / 73F+6E+4S

# 收尾增量(快进 5ad781a00 后)
mvn -o -B test -Dtest='AdminSupplierManageContractTest,SupplierManageAdminContractTest,DimensionConfigAdminContractTest'   # 52 例 / 39F

# 浏览器(必须在 tests/ 内跑;每节点 1 个浏览器任务,本机串行)
cd d:/cfc/tests
npx playwright test --config=playwright.config.live.js --project=admin-desktop
npx playwright test --config=playwright.config.live.js --project=frontend-mobile
npx playwright test --config=playwright.config.live.js --project=shop-api
npx playwright test --config=playwright.config.health.js            # health 不在 live config 的 project 内
npx playwright test --config=playwright.config.live.js --project=dx-bridge

# 189 节点 admin(单节点任务)
node _r190_189_admin.cjs kick && node _r190_189_admin.cjs read
# 204 节点 frontend(openCode 在 204:4091,项目 D:\cfc)
node _r190_204_run.cjs
# 251 节点 langgraph pytest(setsid 分离 + 单次读,禁止轮询建 shell)
node _r191_251_lg.cjs kick / read / run

# Jest
cd d:/cfc/cfc-web && npx jest --ci            # 116/116
cd d:/cfc/cfc-frontend && npx jest --ci       # 609 passed / 3 failed / 12 skipped
cd d:/cfc/tests && npx jest --config=jest.config.js   # 7/16(9082 未起)

# 线上 API 32 例(点名 4 文件,勿带全量 testMatch)
cd d:/cfc/tests && npx playwright test -c playwright.config.api.js --output=../_r191_api2 \
  e2e/api/api-smoke.spec.js e2e/api/nonfunc-security.spec.js \
  e2e/api/nonfunc-perf-compat.spec.js e2e/api/traceability-p94-p95-c26.spec.js --reporter=list

# 匿名鉴权探针
for u in /api/mind/fortune /api/energy/overview /api/health/plan/list /api/xiaomi-health/status /api/huawei-health/status /api/admin/families/overview; do
  curl -s -m 12 -X POST -H 'Content-Type: application/json' -d '{}' -w " [%{http_code}]\n" "http://cfc.iwintrue.com$u"; done

附录 B:窗口 5 个契约类定向实测明细(B-191-1 补验)

契约类 关联键 例数 通过 红 结论
AdminReportParserManageContractTest S-cfc-197 admin.reportParser.manage 37 37 0 GREEN ✅(实现已落地,可转 YELLOW/GREEN)
AdminKnowledgeBaseManageContractTest S-cfc-198 admin.knowledgeBase.manage 13 7 6 预期 RED:同步失败重试 / 大批量分批 / base+vector 角色门禁三项未实现
DimensionConfigAdminContractTest S-cfc-199 admin.dimension.config 17 4 13 预期 RED(维度/权重/上限 CRUD + 来源比例治理未落地)
AdminSupplierManageContractTest S-cfc-200 admin.supplier.manage 16 6 10 预期 RED(410 废弃壳 / 边界门禁 / role 守卫)
SupplierManageAdminContractTest S-cfc-200 契约级 19 3 16 预期 RED(SC-A-06 停用在售商品守卫未落地)
合计 — 102 57 45 45 红全为 TDD 前瞻态,非缺陷回归

附录 C:度量口径声明(B-124 并存口径)

指标 本轮口径 数值 与 R190 差异说明
台账 TC 唯一 tests/test-cases/*.md 全量 TC-* 去重 618 R190 报 308 为「单套命名」口径;本轮含 TC-<域>-<标签>-<NN> 与 TC-<域>-U<NN> 两套命名
表行 台账 md 中以 ` ` 开头行 1168
严格锚点 tests/** JS/TS/py(排除 generated)∪ cfc-backend/src/test/**/*.java 153 R190 报 115(未并 Java 测试锚点)
双向命中(G9) 台账 ∩ 锚点 106 = 17.2% R190 报 20.1%(= 62/308,分母口径不同)
场景→用例 SC ∩(台账出现的 SC) 152/244 = 62.3% R190 报 57.9%/72.1%(三套口径并存,见 B-124)

口径差异属既有 B-124 问题(度量脚本多口径),不与 R190 直接比大小;本轮同时给出全部原始数以便追溯。

附录 D:本轮遗留取证文件(未入库,供复核)

_r191_backend_full.log(1:01h 全量日志 73287 行)、_r191_incr.log(增量 52 例)、_r191_browser.log、_r191_api.log、_r191_web_jest.log、_r191_fe_jest.log、_r191_root_jest.log、_r191_251_lg.cjs、_r191_metrics.py、_r191_api/、_r191_api2/、_r191_pw_*。