本汇报按《测试负责人工作汇报模板》填写。R188 为全量实跑轮:基线
cfclub @ 00121ff2f(含 R187 与研发负责人巡检 2 笔),窗口内 零源码 / 零 SRS / 零场景 / 零接口变更。 拓扑(用户本轮指令):浏览器经http://cfc.iwintrue.com/admin(后台)+http://cfc.iwintrue.com/frontend(小程序);189 与本机为浏览器节点(每节点单任务,串行);langgraph 部署 251 → 本轮已实派 251 并实跑。 ★ 本轮三个关键变化(均为正向,已触发推送 + 研发通知) ① 后端首次恢复全量完成:43:15跑完 369 类 / 3111 例 / 3082 过 / 25 红 / 4 跳 = 99.07%(R184~R187 连续 4 轮「截断/沿用」,本轮实跑证伪「>2h 不可完成」); ② langgraph@251 首次 51/51 全绿(R187 承袭 45/51); ③ frontend-mobile 6/6(R187 为 4/6,B-185 消除,隔离复跑 2/2 全绿);S-cfc-178 契约 4F→0 转绿。 ★ 全站可比:3987 例 / 3918 过 = 98.27%(剔 skip 98.89%),红 56→44,G1 由「勉强过线」升至 98.27%。
| 项目 | 内容 |
|---|---|
| 汇报人 | 测试负责人(自动化测试闭环任务 / 软件测试专家团·陆谨) |
| 汇报周期 | 2026年11月13日 08:48 ~ 09:55(第 188 轮) |
| 基线 | cfclub @ 00121ff2f(=origin,跑前=跑后一致) |
| 窗口内需求变更 | 零 — docs/superpowers/specs(201 份)/ tests/test-cases(16 份)/ API_REFERENCE.md 窗口零变更(G12 ✅,未触发用例编写闸门) |
| 窗口内源码变更 | 零 — 窗口 aa5c096f0..00121ff2f 仅 1 个 docs 文件(研发负责人巡检汇报),git diff --name-only 对 src 命中 0 |
| 负责模块/单元 | 全站:管理端 admin@本机 + 189 · 小程序 H5 fe@本机 · cfc-langgraph@251(本轮实派) · cfc-backend JUnit 全量 · cfc-web/cfc-frontend Jest · 线上 API 非功能层 |
| 指标 | 数量 | 填写说明 |
|---|---|---|
| 本轮新增测试用例数* | 0 个 | SRS/场景/接口文档窗口零变更,未触发用例编写闸门(G12 ✅) |
| 本轮验证执行测试数* | 3987 个 | 后端 JUnit 3111(全量实跑,本轮权威) + 前端 Jest 624 + 管理端 116 + langgraph 51(251 实派)+ 浏览器 30(admin 5 + frontend 6 + shop 4 + health 13 + dx 2 跳)+ 线上 API 32 + 根级 23 |
| 用例通过率 | 98.27%(3918/3987;剔除 skip 98.89%) | 红 44 / 跳 25;环比 R187(98.0%,红 56)+12 过、−12 红 |
| 用例台账 | discovery.md 承袭:366 控制器 / 1972 @PostMapping / @GetMapping 8 处 |
本轮实测统计(零源码变更,口径同 R187);TRACEABILITY-MATRIX.md §10 口径不变 |
| 指标 | 数量 | 填写说明 |
|---|---|---|
| 分派任务数* | 4 个 | R188-1 本机 admin-desktop(5/5,1.8m);R188-2 本机 frontend-mobile(6/6,51.4s,复跑 6/6 58.8s);R188-3 189 admin-desktop(5/5 EXIT=0,1.2m);R188-4 251 langgraph pytest(51/51,285.81s) |
| 恢复智能体会话数* | 1 个 | 251 opencode(:4096 = 200,R187 记的「401 门控」本轮实测不成立)→ 派发成功 |
| 当前在用会话数 | 0 个 | 全部结束;251 残留 pytest 进程已清理(见 B-177-1) |
| 会话标签 | 会话 ID/地址 | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
|---|---|---|---|---|---|---|
local-admin |
本机 Playwright | done | admin-desktop UI E2E | 已完成(1.8m) | d:\cfc\tests |
5/5;TC-A-U01~U05 全过 |
local-frontend |
本机 Playwright | done | frontend-mobile UI E2E | 已完成(51.4s + 58.8s×2) | d:\cfc\tests |
6/6 两次连绿;B-185 消除 |
remote-189 |
192.168.16.189:4090 | done(exited) | admin-desktop UI E2E | 78s | C:\code\cfc\tests |
5/5 EXIT=0;spec blob 4703d73fb = 本机 → 跨节点可比 |
remote-251 |
192.168.16.251:4096 | done | langgraph pytest | 285.81s(+挂死 9m36s) | /sc-data/cfc/cfc-langgraph |
51/51 全绿;节点 HEAD 00121ff2f = 本机 |
local-jest |
本机进程 | done | cfc-web + cfc-frontend + 根级 | 已完成 | cfc-web / cfc-frontend / tests |
web 116/116(18.6s)、fe 609/3/12(34s)、根级 7/16(12.2s) |
local-backend |
本机 mvn | done | JUnit 全量 | 43:15 | d:\cfc\cfc-backend |
369 类 / 3111 例 / 25 红 |
| 指标 | 数量 | 填写说明 |
|---|---|---|
| 新测试发现问题数* | 1 个 | B-188-1(P1 方法论/度量):B-184-1「后端全量 >2h」判据不成立 —— 历轮以「前期类完成速率」线性外推全量耗时,但本套件呈双峰速率(@SpringBootTest 慢头 → unit 快尾),本轮同一机器 43:15 全量跑完 369 类。判据须改为「maven Total time 或 surefire XML 终值」,禁止速率外推。 |
| 已解决测试相关问题数* | 3 个 | ① B-185 消除(frontend 4/6 → 6/6 两次连绿,游客态内容加载恢复正常,判环境瞬态);② S-cfc-178 契约转绿(FamilyRemoveMemberContractTest 8 例 4F→0F,随 5c3cff249 实现落地);③ B-184-1 由「劣化」降级为「判据修正」(全量实跑 43:15 完成)。 |
| 待解决测试相关问题数 | P0×2 / P1×6 / P2×3 | ① B-142-2 langgraph 上游凭据/配额(本轮 51/51 绿,观察 1/2,但 live chat 仍 120s 零字节);② B-152-1/2 CI 清单漏拦 6 / 陈旧 26(P0/P1);③ S-cfc-176 幂等 1F(P1);④ B-177-1 pytest 打印 summary 后挂死(P1,本轮复现 9m36s);⑤ B-156-1/B-170-1 迁移 DDL 缺陷(P1/P2,本轮日志 525 次 DDL 报错);⑥ B-162-1 3 类未入库(P1);⑦ B-178-1 反射装置 2F(P2);⑧ B-95 204 失联(P2);⑨ B-DX-1 dx 端点 404(P1,规格已声明仅登记)。 |
| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
|---|---|---|---|---|---|---|
见 §九 |
全站巡检 R188 + B-188-1 判据修正 + B-185/S-cfc-178 闭环 | 汇报 | 报告 + blockers + 研发通知 | cfclub | ✅ | 结果有变化(+12 过 / −12 红)→ 按规则提交并通知研发 |
| 阶段 | 键数 | 备注 |
|---|---|---|
| UNTRACKED | 0 | 窗口零新增规格 |
| RED | 9 | S-cfc-176 1 例 + TaskReview 装置 2 例 + 其他预期 RED 6 例 |
| YELLOW | 72 | 研发负责人口径 |
| GREEN | 9 | +1(S-cfc-178) |
| DONE | 15 | 承袭 |
| 合计 | 105 | 研发侧状态账本口径 |
| 数据源 | 读取键数 | 是否正常 | 备注 |
|---|---|---|---|
| 需求侧(⏳ wish) | 0 | 正常 | SRS 目标池未启用 |
| 契约常量(contract) | 多组 | 正常 | 13 红类跨轮核验正常 |
| 测试用例引用(test_case_map) | 308 唯一 TC | 正常 | 台账扫描正常 |
| 执行结果回填(case_results) | — | 正常 | surefire 369 XML 全量可聚合 |
| 项 | 内容 |
|---|---|
| 上次审查 | R187(2026-11-13 08:30,提交 aa5c096f0),结论「不通过(有条件)」,全站 3987/3906(98.0%),红 56;langgraph 承袭 45/51;浏览器 frontend 4/6(B-185) |
| 历史遗留 | 后端 28 红(截断/沿用 4 轮)· langgraph 6 红(环境)· 根级 16 红 · CI 漏拦 7/陈旧 26 · 3 未入库测试 · B-177-1 · B-178-1 · B-184-1「全量 >2h」 · B-185 游客态超时 |
| 本次是否改善 | 显著改善:① 后端首次恢复全量(25 红,比 R187 少 3);② langgraph 51/51 全绿(+6);③ frontend 6/6(+2);④ S-cfc-178 转绿(−4);⑤ B-184-1 判据被证伪。合计红 56→44、过 3906→3918。 |
| 教训应用 | ① 不再用「类/分钟」外推全量耗时(本轮 B-188-1 直接推翻该做法);② 浏览器失败必须隔离复跑 2 轮再定性(B-185 本轮两次全绿 → 判环境瞬态);③ :4096 连通性每轮实探,不沿用上轮「401 门控」结论(本轮 200 实派成功);④ 251 跑完必须查残留 pid(B-177-1 本轮复现);⑤ Playwright 一律带 --output= 独立目录规避 safe-delete 守卫(B-173-1 本轮再触发一次)。 |
本次为该对象第 188 次审查,有历史记录;上述内容仅作对照,本轮结论全部来自本轮实测(后端/langgraph/浏览器/Jest/API 均本轮实跑,无承袭项)。
| 维度 | 内容 |
|---|---|
| 业务定位 | 家庭教育成长平台(五维能量 身/心/智/行/富):小程序家长端 + 规划师端 + 管理后台 + 独立商城 |
| 技术栈 | 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 控制器 / 375 测试源 / 369 测试类)· cfc-frontend(42 测试文件 / 624 例)· cfc-web(17 套件 / 116 例)· cfc-langgraph(51 例 @251)· tests(e2e-live 5 文件 + e2e/api 点名 4 文件) |
| 关键路径 | 登录/家庭/成员 → 五维能量 → 任务/成长记录 → 健康报告上传解析 → 测评订单 → 商城/支付 → AI 对话(LangGraph) |
| 测试现状 | 本轮全部实测:后端 3111 + 前端 624 + 管理端 116 + langgraph 51 + 浏览器 30 + 线上 API 32 + 根级 23 = 3987 例 |
| 质量目标 | 全量用例全绿、覆盖 SRS 与用户场景(含异常流)、浏览器双节点可复现、结果变更即提交并通知研发 |
| 风险点 | ① 后端 25 红(11 类存量 + 2 类契约预期 + 装置浮动)② CI 清单双向失真(漏拦 6)③ 上游 LLM live 链路 120s 挂死 ④ 根级 16 红(9082 未起)⑤ 迁移 DDL 缺陷 525 次报错 ⑥ pytest 进程不退出 |
| 待核实项 | S-cfc-176 幂等分支排期 · 251 上游凭据/配额(pytest 绿但 live 挂)· 204 节点恢复 · B-156-1/B-170-1 修复状态 · B-185 根因未取证(本轮已不复现,建议按瞬态销号) |
| # | 测试类型 | 三态 | 证据(本轮实测) |
|---|---|---|---|
| 1 | 单元测试 | ✅ 已发现 | 后端 3111 例全量实跑;前端 624 例;管理端 116 例 |
| 2 | 测试覆盖率 | ⚠️ 部分 | 管理端 Jest 覆盖率可产出;后端未开 jacoco(未授权改 pom) |
| 3 | 变异测试 | ❌ 未发现 | 全仓无 pitest/mutation 配置 |
| 4 | 集成测试 | ✅ 已发现 | integration/* 已全量执行(EnergySystemFlow 6F、GuideModule 1E、DimensionRegistryMap 3F) |
| 5 | 契约测试 | ✅ 已发现 | 契约类 20+ 全量执行;S-cfc-178 转绿(4F→0);S-cfc-176 维持 1F;TaskReview 2F(B-178-1 装置) |
| 6 | 接口 API 测试 | ✅ 已发现 | 线上 API 32 例(本轮实测:25 过 / 7 跳 / 0 红,13.6s) |
| 7 | 系统/端到端 | ✅ 已发现 | 浏览器 30 例(本轮实测:28 过 + 2 跳),双节点 admin 5/5 |
| 8 | 验收 UAT | ⚠️ 部分 | cross-role-e2e.md 双角色验收场景有台账;无人工 UAT |
| 9 | BDD 规格 | ⚠️ 部分 | spec 201 份含 Given/When/Then;无 cucumber 执行器 |
| 10 | 冒烟测试 | ✅ 已发现 | api-smoke.spec.js 本轮实测全绿(含自注册链路) |
| 11 | 回归测试 | ✅ 已发现 | 7 套件全量回归,13 红类逐类比对,存量零漂移 |
| 12 | 探索性测试 | ✅ 已发现 | 本轮现场探索:251 live chat 120s 零字节(pytest 全绿反证「mock 层绿、真实链路挂」)→ 记为 B-142-2 观察项 |
| 13 | 性能测试 | ⚠️ 部分 | nonfunc-perf-compat 4 过 3 跳;压测未授权;后端全量 43:15 通过(B-188-1 判据修正) |
| 14 | 可靠性测试 | ⚠️ 部分 | 上游 LLM 弱故障证据;无长稳/混沌测试;pytest 进程不退出(B-177-1)为典型可靠性缺陷 |
| 15 | 安全测试(SAST/DAST) | ⚠️ 部分 | nonfunc-security 11 例全绿;匿名 6 端点 6/6=401;SAST 未授权 |
| 16 | 依赖漏洞扫描 | ❌ 未发现 | 无 npm audit/dependency-check 门禁,属联网档未授权 |
| 17 | 兼容性测试 | ⚠️ 部分 | Playwright frontend-mobile 移动视口 6/6(本轮恢复);无多浏览器矩阵 |
| 18 | 可用性测试 | ⚠️ 部分 | 页面可渲染/导航/TabBar 断言覆盖;无真实用户可用性测试 |
| 19 | 无障碍测试 | ❌ 未发现 | 无 axe-core 等 a11y 断言 |
| 20 | QA 流程与质量指标 | ⚠️ 部分 | 本报告 + blockers + 可复现度量脚本;G9 20.1%;G11 CI 失真 |
| 套件 | 执行 | 通过 | 红 | 跳 | 耗时 | 判定 |
|---|---|---|---|---|---|---|
| 后端 JUnit 全量 | 3111 | 3082 | 25 | 4 | 43:15 | ✅ 全量完成(R184~R187 连续 4 轮未能完成);13 红类 |
| 前端 Jest | 624 | 609 | 3 | 12 | 34.0s | 3 全预期 RED(AC-R1 / AC-R2 / AC-2 RED-A7) |
| 管理端 Jest | 116 | 116 | 0 | 0 | 18.6s | ✅ 17/17 套件全绿 |
| langgraph@251 | 51 | 51 | 0 | 0 | 285.81s | ✅ 首个全绿轮(B-142-2 观察 1/2) |
浏览器 admin-desktop@本机 |
5 | 5 | 0 | 0 | 1.8m | ✅ |
浏览器 admin-desktop@189 |
5 | 5 | 0 | 0 | 1.2m | ✅ EXIT=0,spec blob 4703d73fb = 本机(跨节点可比) |
浏览器 frontend-mobile@本机 |
6 | 6 | 0 | 0 | 51.4s / 58.8s×2 | ✅ 两轮连绿,B-185 消除 |
浏览器 shop-api |
4 | 4 | 0 | 0 | 11.3s | ✅ |
浏览器 health-api |
13 | 13 | 0 | 0 | 6.9s | ✅(须用 playwright.config.health.js) |
浏览器 dx-bridge |
2 | 0 | 0 | 2 | — | 404(规格「仅登记不实现」,不假绿) |
| 线上 API 非功能层 | 32 | 25 | 0 | 7 | 13.6s | ✅ 0 红(点名 4 文件口径) |
| 根级黑盒 | 23 | 7 | 16 | 0 | 12.2s | 全 ECONNREFUSED 9082(B-36 第 72 轮) |
| 合计 | 3987 | 3918 | 44 | 25 | — | 98.27%(剔 skip 98.89%) |
vs R187(3906 过 / 98.0%):+12 过、红 56→44。构成:langgraph −6 红(+6 过)、frontend −2 红(+2 过)、后端 28→25 红(S-cfc-178 −4、其余 +1? 见 §4.3 核对,净 −3)。
| 红类 | 例数 | 红 | 归因 | 与 R187 一致性 |
|---|---|---|---|---|
EnergySystemFlowTest |
7 | 6F(1S) | 存量(五维能量流断言) | ✅ 一致 |
GrowthPublicEndpointMappingTest |
5 | 5E | B-162-1 未入库测试 + 端点映射缺失 | ✅ 一致 |
DimensionRegistryMapContractTest |
7 | 3F | 存量 P-9 | ✅ 一致 |
TaskReviewScP11ContractTest |
8 | 2F | B-178-1 反射装置浮动 | ✅ 一致(维持 2F) |
GuideModuleIntegrationTest |
4 | 1E | testGuidePackageCreationFlow:63 DataIntegrityViolation |
✅ 一致 |
OrchestrationEngineTest |
8 | 1F | 存量 | ✅ |
OrchestrationIntegrationTest |
7 | 1F | 存量 | ✅ |
MembershipPaySwitchTest |
6 | 1F | 存量 | ✅ |
PaymentServiceORDRoutingTest |
3 | 1F | 存量 | ✅ |
UserServiceWechatLoginTest |
5 | 1F | 存量(微信登录契约) | ✅ |
UserServiceWechatLoginContractTest |
6 | 1F | 存量 | ✅ |
MembershipPlanPurchaseContractTest |
7 | 1F | S-cfc-176 幂等分支未生效 | ✅ 一致(repeatPurchase_pendingOrderSamePlan_reuseNoDuplicate) |
TeamProfitCronContractTest |
22 | 1F | 存量(平台费截断) | ✅ |
| 合计 | — | 19F+6E = 25 | 13 类 | ✅ 逐类一致(除 FamilyRemoveMemberContractTest 已转绿) |
| 项 | R187 | R188 | 归因 |
|---|---|---|---|
FamilyRemoveMemberContractTest(S-cfc-178) |
8 例 / 4F | 8 例 / 0F | ✅ 随 5c3cff249(removeMember 重算会员派生缓存)落地转绿 → S-cfc-178 契约闭环 |
| langgraph 全部 51 例 | 45 过 / 6 红 | 51 过 / 0 红 | 上游配额/key 窗口恢复;test_auto_tag + test_intent 全绿 |
frontend-mobile 6 例 |
4/6(U02/U05 超时) | 6/6 ×2 | 游客态内容加载恢复 → B-185 消除(环境瞬态) |
| 其余 12 个红类 | 12 类 | 12 类 | 逐类逐例一致 → 存量零漂移(第 23 次) |
| 项 | 结果 |
|---|---|
| 派发通道 | 192.168.16.251:4096 = 200(R187 记「401 门控」本轮实测不成立);POST /api/shell + setsid nohup kick 分离 |
| 节点基线 | HEAD 00121ff2f = 本机 HEAD(同源码) |
| 用例结果 | 51 passed / 0 failed / 285.81s(--ignore=tests/qna --ignore=tests/test_chat.py) |
live /health |
200 / 9.7ms |
live /api/v1/chat({"query":"你好","user_id":1,"session_id":"r188"}) |
000 / 120.01s / 0 字节 → 上游 LLM 真实链路仍挂死(pytest 绿说明单测层走 mock/降级) |
| B-177-1 复现 | summary 打印后 bash -c 与 pytest 进程存活 9m36s(另发现 R186 残留 1h10m38s),EXIT= 行永不落盘 → 第 10 轮复现;已 kill -9 清理 4 个残留进程 |
| 缺口类型 | 现状 | 风险 | 建议测试设计 | 优先级 | 闭环方式 |
|---|---|---|---|---|---|
| 上游 LLM 真实链路 | pytest 51/51 绿,但 live chat 120s 零字节 |
AI 对话生产不可用 | mock 层之外补 1 例 live 冒烟(带超时兜底) | P0 | 运维轮换 key + 提额后连续 2 轮全绿 |
| CI 清单双向失真 | 漏拦 6 / 陈旧 26(33 类清单) | 回归无机器门禁 | 精修 exclude + 3-job CI | P0/P1 | B-152-1/2 |
| 契约预期 RED | S-cfc-176 幂等 1F | 功能未实现有护栏 | 实现 findReusablePendingOrder 分支 |
P1 | 实现后定向复跑 |
| 迁移 DDL 缺陷 | 本轮日志 525 次 SQLSyntaxErrorException/Unknown column |
表从未建成(nutrition_age_dosage);activities.approved_count 恒 0 |
修 schema.sql:5345 索引 + DatabaseInitializer:2261 别名更新 |
P1 | B-156-1 / B-170-1 |
| 未入库测试 | 3 类(GrowthPublic / JwtInterceptorGrowthPolicy / ArticleTagsContract) | 资产不可追溯 | git add + push |
P1 | B-162-1 |
| pytest 进程不退出 | 第 10 轮复现(9m36s 挂死) | 派发器误判、节点资源泄漏 | 产品侧 await client.aclose() + 派发器 timeout -k 10 900 |
P1 | B-177-1 |
| 根级黑盒 | 16 红(9082 未起) | 黑盒链路不可测 | 起 9082 后重跑 | P2 | B-36 |
| 装置浮动 | TaskReview 2F(反射注入) | 红例数不稳定 | @MockBean 替代 ReflectionUtils |
P2 | B-178-1 |
| dx 桥接 | 2 例 skip(404) | 覆盖空转 | 端点上线后自动转断言 | P1 | B-DX-1(规格已声明仅登记) |
| 204 节点 | 204:4090 = 000 |
三节点降为两节点 | 运维恢复 | P2 | B-95 |
| 审查维度 | 负责专家 | 结论 | 关键证据 |
|---|---|---|---|
| 单元·组件级 | 苏雅 | 改善 | 后端全量 3111/3082(−3 红);fe 609/3/12(3 预期 RED);web 116/116 |
| 集成·接口级 | 柯砚 | 改善 | 线上 API 32 例 0 红;S-cfc-178 契约 4F→0 转绿;S-cfc-176 维持 1F |
| 系统·验收级 | 白樾 | 改善 | 浏览器 30 例 28 过 + 2 跳;admin 双节点 5/5;frontend 6/6×2(B-185 消除) |
| 测试保障级 | 闻朔 | 改善 | 冒烟全绿;存量红集合零漂移(第 23 次);新增判据修正 B-188-1 |
| 性能·可靠性 | 骆骋 | 改善 | 全量 43:15 完成(B-184-1 劣化判据证伪);pytest 挂死仍为可靠性缺陷 |
| 安全 | 关屿 | 承袭 | 匿名 6/6=401;nonfunc-security 11 例全绿 |
| 兼容·体验 | 阮清 | 改善 | frontend 移动视口 6/6;无多浏览器矩阵 |
| 流程·度量 | 何序 | 部分改善 | G9 锚点 20.1%;CI 漏拦 6(由 7 收窄)、陈旧 26 未修 |
| # | ① 问题描述 | ② 测试 bug 点 | ③ 最优修改方案 | ④ 修改目的 | ⑤ 闭环方式 |
|---|---|---|---|---|---|
| P1 | 后端 25 红(13 类),其中 11 类为跨 23 轮存量 | EnergySystemFlowTest 6F / DimensionRegistryMapContractTest 3F / OrchestrationEngineTest·OrchestrationIntegrationTest·MembershipPaySwitchTest·PaymentServiceORDRoutingTest·UserServiceWechatLoginTest(×2)·TeamProfitCronContractTest 各 1F |
按类逐条修;先修 TeamProfitCronContractTest(平台费截断,影响计费) |
后端回归全绿 → G2 闭环 | 修后 mvn -o -B test -Dtest=<类> 定向复跑,单类 0F 连续 2 轮 |
| P2 | S-cfc-176 幂等分支未生效 | MembershipPlanPurchaseContractTest.repeatPurchase_pendingOrderSamePlan_reuseNoDuplicate:201(NeverWantedButInvoked: paymentOrderMapper.insert) |
让 findReusablePendingOrder 命中后直接复用,不再 insert |
契约闭环(防重复下单) | 定向复跑该类 7/7 绿 |
| P3 | GrowthPublicEndpointMappingTest 5E(未入库 + 端点映射缺失) |
config/GrowthPublicEndpointMappingTest.java(?? 未跟踪) |
提交入库 + 补齐 /api/growth/** 公开端点映射 |
资产可追溯 + 公开面契约 | 入库后全量重跑该类 0E |
| P4 | CI BACKEND_OBSERVED_CLASSES 双向失真 |
.gitlab-ci.yml:61(33 类清单 vs 实测 13 红类) |
移除 26 类陈旧项、补入漏拦 6 类(GrowthPublic / MembershipPlanPurchase / TaskReviewScP11 / TeamProfitCron / UserServiceWechatLogin×2) | CI 硬门禁真实生效 | CI 在含红例分支上「必红」验证一次 |
| P5 | langgraph pytest 全绿但 live 链路 120s 零字节 | app/main.py chat 路径 + 上游 AgnesAI 凭据 |
轮换有效 key + 提额;JavaClient 补 await aclose() |
AI 对话生产可用 + 进程可退出 | live /api/v1/chat 200 < 5s 且 pytest 连续 2 轮全绿 |
| P6 | pytest 打印 summary 后进程不退出(第 10 轮) | tests/test_analyze.py → RuntimeWarning: coroutine 'JavaClient._get_client' was never awaited |
app/main.py:84 改用 lifespan 并 await client.aclose();派发器加 timeout -k 10 900 |
派发可判定成功、节点不残留 | 派发日志出现 EXIT=0 且 ps 无残留 |
| P7 | 迁移 DDL 缺陷(本轮 525 次报错) | schema.sql:5345 INDEX idx_product (product_id) 无该列;DatabaseInitializer.java:2261 带别名 UPDATE + 派生表引用被更新表 |
删索引或补列;改 UPDATE activities SET approved_count = (SELECT COUNT(*) FROM activity_registrations r WHERE r.activity_id = activities.id …) |
建表成功 + 计数列可写 | 启动日志 0 次 SQLSyntaxErrorException |
| P8 | 前端 3 例预期 RED | signature.*(AC-R1/AC-R2)+ growthHistory.dayGroupView RED-A7 |
交付 S-cfc-132/133 组件与分组逻辑 | 前端全绿 | npx jest 624/624 |
| P9 | 根级黑盒 16 红(B-36 第 72 轮) | tests/integration/*(全 ECONNREFUSED 9082) |
起本地 9082 或改指向测试环境 | 黑盒链路可测 | 9082 起来后重跑 23 例 |
| P10 | B-188-1 判据缺陷(本轮自处置) | 历轮以「类/分钟」外推全量耗时 → 4 轮误判「>2h 不可完成」 | 判据改为「maven Total time」或「surefire XML 终值」,必要时加 -Dsurefire.printSummary;禁用速率外推 |
防止再次主动 kill 已完成的全量回归 | 已在本报告与 blockers 固化判据,下轮起强制使用 |
结论:不通过(有条件,明显正向) —— 全站 3987 例 / 3918 过 = 98.27%(剔 skip 98.89%),红 56→44;三项关键闭环(后端全量恢复、langgraph 51/51、frontend 6/6)与一项契约转绿(S-cfc-178)。剩余阻断项为存量红 25 + CI 清单失真 + 上游 LLM live 挂死,均非本轮新增回归。
| 门禁 | 判定 | 依据(本轮实测) |
|---|---|---|
| G1 全站通过率 ≥98% | ✅ 98.27% | 3918/3987(剔 skip 98.89%),环比 98.0% → +0.27pct |
| G2 后端红归零/契约裁决 | ❌ 25 红(13 类) | 存量 23 + 契约预期 1(S-cfc-176)+ 装置 2(B-178-1) |
| G3 前端双绿 | ⚠️ fe 609/624(3 预期 RED)+ web 116/116;小程序 H5 浏览器 6/6 | 3 红全为 S-cfc-132/133 未交付 |
| G4 编译可编译 | ✅ | 2121 主源 + 375 测试源 0 编译错 |
| G5 结果完整性 | ✅ | 369/369 surefire XML 可聚合、0 .dump、0 沉默;恒等式 @Test 3097 − Disabled 4 + 参数化 18 = 3111 |
| G6 浏览器 E2E | ✅ 28 过 + 2 跳 | admin 5/5(本机+189)、fe 6/6×2、shop 4/4、health 13/13、dx 2 跳 |
| G7 langgraph | ⚠️ 51/51 绿(观察 1/2) | 首次全绿;按「连续 2 轮全绿」纪律不即时销号 B-142-2 |
| G8 匿名鉴权 401 | ✅ 6/6 | mind/energy/health-plan/xiaomi/huawei/admin-families 全 401 |
| G9 用例锚定 SRS | ❌ 20.1% | 双向命中 62 / 唯一 TC 308(承袭口径,本轮未变) |
| G10 双/三节点可比 | ✅ 双节点 | 189 admin 5/5(spec blob 一致)+ 本机 admin 5/5 + 251 langgraph 51 例 |
| G11 CI 必红 | ❌ | 漏拦 6 类(R187 为 7)+ 陈旧 26 类 → backend-blocking-junit 仍必红 |
| G12 用例锚定 SRS 变更 | ✅ | specs 201 / test-cases 16 / API_REFERENCE 窗口零变更 → 用例零新增 |
| G13 存量红零漂移 | ✅ 第 23 次 | 12 类逐类逐例与 R187 一致;S-cfc-178 为唯一转绿(正向) |
blockers.md(新增 B-188-1,更新 B-184-1/B-185/S-cfc-178/B-177-1/B-142-2/B-152-1-2/B-156-1/B-170-1/B-162-1 等)+ notice-2026-11-13-R188-研发通知.md 已 commit 并 push origin/cfclub(merge-base + git branch -r --contains 核验)。not_bound(本轮按惯例不再重试)→ 以 blockers.md + 研发通知 + 推送落地。aclose();B-178-1 装置改 @MockBean;B-162-1 3 类入库。BACKEND_OBSERVED_CLASSES,并把判据 B-188-1(禁止速率外推)写进 CI 说明。Total time 判定,不再中途 kill。# 后端全量(本轮实测 43:15)
cd cfc-backend && JAVA_HOME=/d/jdk1.8.0_25 /d/maven/apache-maven-3.6.1/bin/mvn -o -B clean test
# 前端 / 管理端 / 根级
cd cfc-frontend && npx jest --ci
cd cfc-web && npx jest --ci
cd tests && npx jest --silent
# 浏览器(必须在 tests/ 内跑;API 套件须带 --output 规避 safe-delete 守卫)
cd tests && npx playwright test -c playwright.config.live.js --project=admin-desktop
cd tests && npx playwright test -c playwright.config.live.js --project=frontend-mobile
cd tests && npx playwright test -c playwright.config.live.js --project=shop-api
cd tests && npx playwright test -c playwright.config.health.js # health 13 例
cd tests && npx playwright test -c playwright.config.api.js --output=../_r188_api \
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
# langgraph@251
MSYS2_ENV_CONV_EXCL=LOG LOG=/tmp/r188_pytest.log node docs/tdd/tools/dispatch_251_pytest.cjs kick
MSYS2_ENV_CONV_EXCL=LOG LOG=/tmp/r188_pytest.log node docs/tdd/tools/dispatch_251_pytest.cjs read
# 聚合口径
python docs/tdd/tools/test_report_metrics.py --reports cfc-backend/target/surefire-reports
python docs/tdd/tools/test_report_metrics.py --repo-root . --scene
Total time: 43:15 min 为准;禁止用日志中 Tests run: 增量速率推算进度(B-188-1)。playwright.config.api.js 不带参数的 990 例口径,B-173-2)。ECONNREFUSED,属环境红(B-36),不计入产品回归。