测试负责人工作汇报 · 第 134 轮(2026-11-11 02:10 GMT+8,本自动化触发)
执行档:review(内网 cfc.iwintrue.com/admin + /frontend 浏览器自动化已授权;langgraph@251 分派;未联网装依赖、未启停服务、未改生产代码;测试侧自处置 4 个测试类改装置 + 新增 1 个契约测试类)
基线 HEAD:b7d74eedc(R133,01:35 推送)→ origin/cfclub == local HEAD(窗口内零源码提交、零 SRS 变更、零部署)
节点:192.168.16.251:9000=200(langgraph 在线)|251:4096=200(opencode 在线,本轮实派 pytest)|189:4090=200(opencode 在线,本轮未派发浏览器)|204:4090=000(B-95 第 8 轮)
分工:本机=浏览器全套(admin 5 + fe 6 + shop 4 + health 13)+ Jest(web/fe/根级)+ 后端全量实测|251=langgraph pytest(实派 51 例)
结论:⛔ 不通过(有条件) — 三项历史红线未变(G2 后端红、G9 锚点率、G11 无 CI 全量门禁);本轮实质推进:测试侧闭环 16 个装置类红例(后端红例 33 → 17,通过率 98.71% → 99.28% 为历史新高),并新建 S-cfc-131 标签筛选契约测试 10 例(补上研发台账里的 RED 键契约缺口)。
1. 历史审查记录(仅作对照,不作为本轮结论依据)
| 轮次 |
时间 |
后端全量 |
langgraph@251 |
浏览器 |
结论 |
| R130 |
11-10 20:55 |
2865 例 / 2828 过 / 33 红 / 98.71% |
38/43(5 红全 429) |
28/28 |
不通过(有条件) |
| R132 |
11-10 夜 |
沿用 R130(零部署) |
33 绿 / 10 环境阻塞 |
28/28 |
不通过(有条件) |
| R133 |
11-11 01:16 |
沿用 R130(零部署) |
33 绿 / 10 环境阻塞 |
28/28(B-59 自处置闭环) |
不通过(有条件) |
| R134(本轮) |
11-11 02:10 |
343 类 / 2918 例 / 2897 过 / 17 红 = 99.28% |
44 绿 / 7 红(全环境) / 51 例 |
28/28 |
不通过(有条件) |
- 本轮为该对象第 134 轮持续闭环审查,非首次审查。
- 与 R133 对比的三处实质变化:
- 后端红例从 33 降到 17(实测):装置类 16 例(CfCommission 8 / ArticleAutoTag 4 / GrowthRecordSync 3 / TaskPlan 1)由测试侧改装置修复,全部转绿;
- S-cfc-131 契约缺口被补上:研发 R107 汇报明确「
content.article.listByTag RED 键、实现 6e9a511e2 已在链、契约测试缺」→ 本轮新增 ArticleTagFilterContractTest 10 例;
- langgraph 口径由 43 例变 51 例:本轮显式排除
tests/qna 与 tests/test_chat.py(B-84)后收集 51 例,红例 7 全为 LLM 凭据/配额(401 + 429),非回归。
- 沿用项(零变更故不重复取证):dx-bridge 2 例部署滞后 404/502(B-DX-1)、G11 无 CI、G9 锚点率口径。
2. 项目画像速览
- 业务:浠艾福 XAF —— 家庭教育 SaaS(家庭成员 / 五维能量 / 成长规划师 / 健康报告解析 / 商城分佣 / AI 管家 / 知识中心)。
- 技术栈:
cfc-backend(Spring Boot 2.7.18 + MyBatis-Plus + Java 8,9082)· cfc-web(Vue2 + ElementUI,8082)· cfc-frontend(uni-app H5/小程序)· cfc-langgraph(FastAPI + LangGraph + Chroma,9000,部署 192.168.16.251)· dan/danshop(独立商城 8888)。
- 关键路径:登录/家庭邀请 → 五维测评 → 成长任务审批 → 健康报告上传解析 → 商城下单分佣 → AI 对话 → 知识中心标签筛选(S-cfc-131,本轮新增契约)。
- 测试现状:后端 340 测试类(+1 新增契约类);前端 Jest 28 套件 475 例;管理端 Jest 17 套件 116 例;浏览器 live 28 例;langgraph 51 例(251 实派);根级黑盒 23 例。
- 质量目标:20 类全覆盖、G1≥95%、G2≤10 红、G6 28/28、G7 0 红、G9≥80%。
- 风险点:后端剩余 17 红集中在产品/契约待裁决(EnergySystem 6×500、Orchestration 2、WechatLogin 2、MembershipPay / PaymentORD / TeamProfitCron 各 1、DimensionRegistryMap 3 契约口径、platform_fee 截断);langgraph LLM 链路凭据 401 + 配额 429 未解(B-74/B-134);无 CI 全量门禁。
3. 20 类测试覆盖矩阵(三态:已实测 / 未发现 / 待核实)
| # |
测试类型 |
状态 |
证据 |
| 1 |
单元测试 |
✅ 已实测 |
后端全量 2918 例(本轮实跑)+ 新增契约 10 例;web 116;fe 472 |
| 2 |
组件测试 |
✅ 已实测 |
Vue shallowMount 组件用例(fe 28 套件 / web 17 套件全绿) |
| 3 |
接口 API 测试 |
✅ 已实测 |
后端控制器 MockMvc/直调;本轮新增 ArticleTagFilterContractTest 10 例(/list tag 过滤 + /tags 聚合) |
| 4 |
集成测试 |
✅ 已实测 |
integration.* 实跑(EnergySystem / GrowthRecordSync 等逐例比对) |
| 5 |
系统/端到端 E2E |
✅ 已实测 |
浏览器 live 28/28(admin 5 + fe 6 + shop 4 + health 13,本机单节点串行 workers=1) |
| 6 |
冒烟测试 |
✅ 已实测 |
浏览器 28 例 + Jest 588 例零红即冒烟面 |
| 7 |
回归测试 |
✅ 已实测 |
本轮后端全量 + Jest 全绿 + 浏览器 28/28;装置类 16 红转绿后回归面收敛 |
| 8 |
探索性测试 |
⚠️ 待核实 |
本轮定向探针(分佣链路静默跳过取证、ArticleService 异步任务计数取证);无 chartered 探索会话 |
| 9 |
验收 UAT / BDD |
⚠️ 待核实 |
无 cucumber/gherkin 执行证据 |
| 10 |
性能测试 |
⛔ 未授权未执行 |
压测属 execute 档(需联网授权),本轮未做 |
| 11 |
可靠性测试 |
⚠️ 待核实 |
无混沌/恢复演练;仅观察 429 配额窗口与 langgraph 401 |
| 12 |
安全测试(SAST/DAST/SCA/渗透) |
⛔ 未授权未执行 |
依赖漏洞扫描/DAST 需联网;仅静态项 + 鉴权契约 |
| 13 |
兼容性测试 |
⚠️ 待核实 |
仅 Chromium 单浏览器;无多浏览器矩阵 |
| 14 |
可用性测试 |
⚠️ 待核实 |
无真实用户可用性证据 |
| 15 |
无障碍测试 |
⚠️ 待核实 |
无 axe/WCAG 扫描 |
| 16 |
覆盖率度量 |
⚠️ 已实测(低) |
cfc-web 语句 10.09% / 分支 6.12% / 函数 7.50% / 行 9.97%(沿用 R130);后端 JaCoCo 未接入 |
| 17 |
变异测试 |
⛔ 未发现 |
无 PIT / mutation 资产 |
| 18 |
契约测试 |
✅ 已实测 |
health 鉴权 13/13 + shop 排序 4/4 + admin.referral 16/16(R132)+ 新增 article 标签 10/10 |
| 19 |
QA 流程 |
⚠️ 待核实 |
134 轮闭环可追溯;门禁未脚本化(G11) |
| 20 |
全项目代码审查 |
⚠️ 待核实 |
仅规范扫描,未跑全量静态审查 |
4. 实测结果明细(本轮真实信号)
4.1 后端全量(本机,JDK1.8.0_25 + Maven 3.6.1,mvn -o -B clean test)
- 343 类 / 2918 例 / 2897 过 / 16F + 1E + 4S = 99.28%(剔 skip 99.42%),56:53,BUILD FAILURE(仅测试红,编译零错)。
- 完整性:343/343 XML 全产出、静默丢失 0;testCompile 349 源 0 错;
target/classes 2326 个 class。
- 恒等式:
@Test 2917 + 参数化展开净增 1 − @Disabled 4(计为 skip)= 2918,误差 0(本轮无早退截断)。
- 10 个红类 / 17 红例(全部为已知产品/契约面,无装置类):
EnergySystemFlowTest 6 + DimensionRegistryMapContractTest 3 + GuideModuleIntegrationTest 1E + OrchestrationEngineTest 1 + OrchestrationIntegrationTest 1 + MembershipPaySwitchTest 1 + PaymentServiceORDRoutingTest 1 + UserServiceWechatLoginTest 1 + UserServiceWechatLoginContractTest 1 + TeamProfitCronContractTest 1。
- 方向性变化(对比 R130 基线 33 红 / 98.71%):红例 33 → 17(−16)、通过率 98.71% → 99.28%(+0.57pp);红类集合里
CfCommissionServiceSettleTest / ArticleAutoTagServiceTest / GrowthRecordSyncFlowTest / TaskPlanServiceTest 四类全部转绿,与测试侧改装置一一对应。
4.2 其余套件
| # |
维度 |
命令/方式 |
节点 |
结果 |
| 1 |
cfc-frontend Jest |
npx jest --ci |
本机 |
✅ 28 套件 / 472 过 / 3 跳 / 0 红(29.2s) |
| 2 |
cfc-web Jest |
npx jest --ci |
本机 |
✅ 17 套件 / 116 过 / 0 红(40.8s) |
| 3 |
根级黑盒 |
npx jest -c tests/jest.config.js --ci |
本机 |
⚠️ 7 过 / 16 红(8.5s,全 ECONNREFUSED 127.0.0.1:9082,B-36 第 33 轮零漂移) |
| 4 |
小程序 H5 E2E |
--project=frontend-mobile |
本机 |
✅ 6/6 |
| 5 |
商城排序契约 |
--project=shop-api |
本机 |
✅ 4/4 |
| 6 |
健康鉴权契约 |
-c playwright.config.health.js |
本机 |
✅ 13/13(6.1s) |
| 7 |
管理端 UI E2E |
-c playwright.config.live.js --project=admin-desktop |
本机 |
✅ 5/5(1.3m,B-59 修复后连续 2 轮稳定) |
| 8 |
langgraph pytest |
251 实派 /sc-data/cfc/cfc-langgraph |
251 |
⚠️ 44 过 / 7 红 / 51 例(125.6s,--ignore=tests/qna --ignore=tests/test_chat.py) |
| 9 |
S-cfc-131 契约 |
mvn -Dtest=ArticleTagFilterContractTest |
本机 |
✅ 10/10(见 §5) |
langgraph 7 红取证(全环境,非回归):
test_auto_tag.py 3 例(content_relevance / short_content / empty_content):call_chat 返回 429;
test_intent.py 4 例(classify_analysis / recommend / mind / health):断言 assert CHAT == ANALYSIS,日志 意图分类失败: Error code: 429 - API rate limit for free users (AgnesAI_error),默认 chat → 429 被静默兜底成 chat;
- 另有
chat_graph.py:148 召回记忆失败: 401 - api key ****ab12 is invalid → 记忆召回链路凭据失效(不影响用例判定,但会降低回答质量)。
- 窗口内
cfc-langgraph/app 与 tests 零 commit → 判环境红(B-74/B-134-4)。
主口径合计(本轮实测面):3621 例 / 3574 过 / 40 红 / 7 skip = 98.70%(剔 skip 98.89%)
= 后端 2918(2897 过 / 17 红 / 4 skip)+ 新契约 10(全绿)+ web 116 + fe 475(472 过 / 3 skip)+ 根级 23(7 过 / 16 红)+ langgraph 51(44 过 / 7 红)+ 浏览器 28。
5. 本轮测试侧闭环明细(16 红转绿 + 10 新契约例)
| # |
测试类 |
修复前 |
修复后 |
根因(测试 bug 点) |
处置 |
| 1 |
CfCommissionServiceSettleTest |
8 红(WantedButNotInvoked,cfBalanceService 零交互) |
12/12 绿(2.8s) |
类里缺 @Mock ProductOrderMapper / OrderItemMapper → calcOrderPpoints 内 productOrderMapper.selectById NPE 被 catch 吞掉 → basePpoints=0 → distributeToReferrers 静默 return(CfCommissionService.java:203) |
补 2 个 mock + 订单夹具;同步「P点=实付−成本」(c22aca496)新口径断言 |
| 2 |
ArticleAutoTagServiceTest |
4 红(TooManyActualInvocations / NeverWantedButInvoked) |
8/8 绿(0.35s) |
发布路径新增「朗读音频预生成」异步任务(ArticleService.java:915 / :1253),taskExecutor.execute 由 1 次变 2 次,旧断言写死 1 次 |
断言改 2 次(空标签)/ 1 次(标签非空,仅音频),差量即打标任务 |
| 3 |
GrowthRecordSyncFlowTest |
3 红(2 NPE + 1 文案断言) |
10/10 绿(130s) |
① uploadAndParse(null) 传 null 文件 → file.isEmpty() NPE;② createRecordWithOrder 未打桩 assessmentOrderService.createOrder → 返回 null → order.getOrderNo() NPE;③ 文案由「请选择孩子」改「请选择家庭成员」(AGENTS.md 口径) |
改用 MockMultipartFile + 打桩 store/parse 链路;打桩下单返回订单;断言对齐 Stage-1 返回结构 {sourceFileUrl, parsed, reportDateStr, hasDate} |
| 4 |
TaskPlanServiceTest |
1 红(planId 期望 100 实为 null) |
4/4 绿(0.33s) |
insert 的 Answer 把 ID 设到另一个对象 capturedInstance,而服务读的是传入实例 TaskPlanService.java:300 |
Answer 内改为对 invocation.getArgument(0) 赋值 |
| 5 |
ArticleTagFilterContractTest(新增) |
0(不存在) |
10/10 绿 |
S-cfc-131 content.article.listByTag 契约缺失(研发 R107 台账 RED 键) |
新建 10 例:tag JSON/逗号两种存储、空 tag 不过滤、无匹配空页、精确匹配(子串不命中)、频次降序、并列字典序、limit≤0 默认 20、空标签忽略、POST /api/articles/tags + body.tag 透传 |
说明:CfCommissionServiceSettleTest 修复前有 3 例 never() 断言是假绿(早退导致「零交互」天然成立),补 mock 后才真正守护「同家庭跳过 / 最多两级 / 幂等不重复记感恩」。这也是本轮把「装置缺陷」而非「产品回归」定性的关键证据——窗口内 CfCommissionService.java 零 commit。
6. 覆盖缺口清单
| # |
缺口类型 |
现状 |
风险 |
建议测试设计 |
优先级 |
闭环方式 |
| G-134-1 |
后端剩余 17 红(产品/契约) |
EnergySystem 6×500、Orchestration 2、WechatLogin 2、MembershipPay/PaymentORD/TeamProfitCron 各 1、DimensionRegistryMap 3(P-9 第 10 轮)、platform_fee 截断 |
真回归被淹没在固定红里 |
按类分批:产品类交研发修;P-9 由研发拍板口径后二选一改用例 |
P0 |
研发修完复跑该类 + 全量,连 2 轮绿销号 |
| G-134-2 |
langgraph LLM 链路 |
251 凭据 401(****ab12)+ AgnesAI 免费额度 429;intent_classifier.py:62 把 429 兜底成 chat |
配额/凭据故障被误读为分类缺陷 |
LLM 依赖用例标 @pytest.mark.llm 拆非门禁套件;429/401 抛外部服务异常而非默认 chat |
P0 |
运维换 Token + 研发改兜底语义后连跑 2 轮 |
| G-134-3 |
分润基数语义歧义 |
settle(...7参) javadoc 称 orderAmountCent 为「推荐人分润基数」,但实现 calcOrderPpoints 取 paidAmountCent |
用例断言面可能与产品意图不一致 |
研发确认后固化 javadoc 与用例(当前按 c22aca496 实现口径断言,已在用例注释标注待确认) |
P1 |
研发回帖确认 → 用例锁死口径 |
| G-134-4 |
锚点率 |
TC 唯一编号 863,末列可执行锚点约 10%(口径沿用 R130) |
用例→代码追溯弱 |
锚点口径固化「TC 末列含可执行用例名或 spec 路径」 |
P2 |
研发补锚点至 ≥80% |
| G-134-5 |
CI 全量门禁 |
无 CI 跑全量 |
回归无法自动拦截 |
落地 CI 全量 job(需联网建管道,未授权) |
P1 |
研发/运维建 pipeline |
| G-134-6 |
189 节点浏览器未派发 |
189:4090=200 且历史连续 4 轮 5/5,但 dispatch_shell.cjs 内置 tail 拉取与 Windows PowerShell 不兼容 |
缺第二节点冗余证据 |
为 Windows 节点补 Get-Content 分支的派发器 |
P2 |
派发器支持双平台后复跑 |
| G-134-7 |
用例更新纪律 |
本轮达标(G12):窗口内 SRS/场景零变更;S-cfc-131 由实现驱动补 10 例契约 |
— |
变更触发流程 |
— |
已满足 |
7. 域结论表
| 审查维度 |
负责专家 |
结论 |
关键证据 |
| 单元·组件级 |
苏雅 |
✅ 本轮显著改善 |
装置类 16 红转绿(4 类 34 例 → 33 绿);fe 472 / web 116 全绿;变异测试仍缺失 |
| 集成·接口级 |
柯砚 |
✅ 有推进 |
新增 article 标签契约 10/10;admin.referral 16/16(R132);GrowthRecordSync 10/10;dx-bridge 2 例部署滞后未重跑 |
| 系统·验收级 |
白樾 |
✅ 绿 |
浏览器 live 28/28(admin 5 / fe 6 / shop 4 / health 13);UAT/BDD 证据仍缺 |
| 测试保障级 |
闻朔 |
✅ 零回归 |
后端全量 + Jest 588 例 + 浏览器 28/28;B-59 时序哨兵连续 2 轮稳定 |
| 性能·可靠性 |
骆骋 |
⛔ 未授权未执行 |
压测未做;429 配额窗口与 401 凭据为环境可观测项 |
| 安全 |
关屿 |
⚠️ 静态趋稳 / 动态缺失 |
鉴权契约 13/13;SAST/DAST/SCA 未授权 |
| 兼容·体验 |
阮清 |
⚠️ 待核实 |
单 Chromium;无可用性/无障碍证据 |
| 流程·度量·代码 |
何序 |
⚠️ 有缺口 |
锚点约 10%、无 CI;@GetMapping 8 处仍违 AGENTS.md |
| langgraph 专项(251) |
陆谨汇总 |
⚠️ 环境红 7 |
44/51;红例全为 401 凭据 + 429 配额(非回归) |
8. 五要素问题清单
问题 1 · 分佣结算链路因测试装置缺 mock 而整链静默跳过(已自处置)
- ① 问题描述:
CfCommissionServiceSettleTest 8 例报 WantedButNotInvoked 且「cfBalanceService 零交互」,看起来像产品停止发放销售奖。
- ② 测试 bug 点:
CfCommissionServiceSettleTest.java:99-101 未声明 @Mock ProductOrderMapper / OrderItemMapper;CfCommissionService.java:349 调 productOrderMapper.selectById 在 try 内 NPE,被 :381 catch 吞成 log.warn → 返回 0 → :203 早退。
- ③ 最优修改方案:补 2 个
@Mock 字段 + setUp 内打桩订单(qty=1、无明细行),并按 c22aca496 的「P点=实付−成本」口径更新基数断言(100→10000;分离用例给成本 2000 → 断言 8000)。
- ④ 修改目的:让 12 例真正执行到
distributeToReferrers,恢复「两级销售奖 / 同家庭跳过 / 上限封顶 / P点日志」的守护力(原本 3 例 never() 是假绿)。
- ⑤ 闭环验证:
mvn -Dtest=CfCommissionServiceSettleTest → 12/12 绿(2.8s);全量红例集合中该类消失即闭环。
问题 2 · 发布路径异步任务数变化导致自动打标用例全红(已自处置)
- ① 问题描述:
ArticleAutoTagServiceTest 4 例红,报「多了 1 次 execute」或「本该 0 次却有 1 次」。
- ② 测试 bug 点:
ArticleAutoTagServiceTest.java:65/74/103/138 按「发布只调度 1 个异步任务」断言;生产 ArticleService.java:915、:1253 新增朗读音频预生成后发布路径有 2 个任务。
- ③ 最优修改方案:空标签发布改断言 2 次、标签非空改断言 1 次(差量即打标任务),并在用例注释写明 1 次=音频。
- ④ 修改目的:保留「标签为空才打标」的判定能力,同时不再因新增音频特性误报。
- ⑤ 闭环验证:
mvn -Dtest=ArticleAutoTagServiceTest → 8/8 绿(0.35s)。
问题 3 · 成长档案接口契约漂移导致 3 例红(已自处置)
- ① 问题描述:
GrowthRecordSyncFlowTest 2 例 NPE、1 例文案断言失败。
- ② 测试 bug 点:
GrowthRecordSyncFlowTest.java:204 传 null 文件给 uploadAndParse;:164 未打桩 assessmentOrderService.createOrder(返回 null → order.getOrderNo() NPE);:130 断言「请选择孩子」。
- ③ 最优修改方案:改传
MockMultipartFile + 打桩 storeFile/getFilePath/parseReport;打桩下单返回 AssessmentOrder;文案断言改「请选择家庭成员」,并按 Stage-1 契约 {sourceFileUrl, parsed, reportDateStr, hasDate} 断言。
- ④ 修改目的:对齐「孩子→家庭成员」重构与 Stage-1/Stage-2 拆分后的真实返回结构,避免用旧契约判产品。
- ⑤ 闭环验证:
mvn -Dtest=GrowthRecordSyncFlowTest → 10/10 绿(130s)。
问题 4 · S-cfc-131 标签筛选 RED 键缺契约测试(已自处置)
- ① 问题描述:研发 R107 台账
content.article.listByTag(S-cfc-131)红键,实现 6e9a511e2 已入链但无契约测试,键无法转 GREEN。
- ② 测试 bug 点:
cfc-backend/src/test 全目录无 listByTag/listTopTags 相关用例(grep 零命中)。
- ③ 最优修改方案:新增
ArticleTagFilterContractTest(10 例),锚定规格 §3.1 的 4 条条款。
- ④ 修改目的:把「知识中心 Tab 由五维改文章标签」这一 SRS 变更变成可回归的契约,防止 tag 参数被静默丢弃(前端传
tag、后端读 body.tag 的断裂点)。
- ⑤ 闭环验证:
mvn -Dtest=ArticleTagFilterContractTest → 10/10 绿(6.29s,BUILD SUCCESS);键可置 GREEN。
问题 5 · langgraph LLM 用例红为凭据 401 + 配额 429(待研发/运维)
- ① 问题描述:251 实派 51 例中 7 红,
auto_tag 3 例、intent 4 例。
- ② 测试 bug 点:非测试 bug;
app/agents/intent_classifier.py:62 捕获异常后 默认 chat,把 429 伪装成分类错误(吞错点)。
- ③ 最优修改方案:运维换有效 Token(当前
****ab12 401);研发把 429/401 抛 ExternalServiceError 而非回落 chat;LLM 依赖用例加 @pytest.mark.llm 并从门禁套件剔除。
- ④ 修改目的:让「分类错误」与「上游不可用」可区分,避免红线误判产品回归。
- ⑤ 闭环验证:换 Token 后 251 连跑 2 轮 51/51 绿即销号 B-74/B-134-4。
9. 门禁结论
| 门禁 |
指标 |
阈值 |
本轮 |
判定 |
| G1 |
主口径通过率 |
≥95% |
98.70%(主口径 3574/3621;剔 skip 98.89%) |
✅ |
| G2 |
红例数 |
≤10 |
40(后端 17 + 根级 16 + langgraph 7) |
❌ |
| G3 |
cfc-web Jest |
全绿 |
116/116 |
✅ |
| G4 |
cfc-frontend Jest |
全绿 |
472 过 / 3 跳 |
✅ |
| G5 |
编译 + XML 完整性 |
0 错 / 无沉默 |
编译 0 错 / 343 类 2326 class / 343 XML 无沉默 |
✅ |
| G6 |
浏览器 live |
28/28 |
28/28 |
✅ |
| G7 |
langgraph |
0 红 |
44/51(7 全环境) |
❌ |
| G8 |
鉴权契约 |
全 401/403 |
13/13(mind 已销号) |
✅ |
| G9 |
SRS/TC 锚点率 |
≥80% |
≈10% |
❌ |
| G10 |
节点分派 |
251 + 浏览器节点 |
251 ✅ / 189 未派发 |
⚠️ |
| G11 |
CI 全量门禁 |
存在 |
无 |
❌ |
| G12 |
SRS 变更→用例同步 |
合规 |
合规(S-cfc-131 补 10 例) |
✅ |
总裁决:⛔ 不通过(有条件) —— G2/G7/G9/G11 未达标,其中 G7 为环境红、G9/G11 为流程债;本轮把 16 个装置类红例清零并补齐 1 个 RED 键契约,属方向性改善。
复评条件:① 后端 17 红按批修复或口径裁决;② 251 换 Token 后 51/51;③ CI 落地全量 job;④ TC 锚点补齐至 ≥80%。
10. 附录 · 本轮命令
# 后端全量(本机)
cd cfc-backend && JAVA_HOME=/d/jdk1.8.0_25 PATH=$JAVA_HOME/bin:/d/maven/apache-maven-3.6.1/bin:$PATH mvn -o -B clean test
# 装置类定向验证
mvn -o -B -Dtest=CfCommissionServiceSettleTest,ArticleAutoTagServiceTest,GrowthRecordSyncFlowTest,TaskPlanServiceTest -DfailIfNoTests=false test
# 新增契约
mvn -o -B -Dtest=ArticleTagFilterContractTest test
# 前端/管理端/根级
cd cfc-frontend && npx jest --ci ; cd ../cfc-web && npx jest --ci ; cd .. && npx jest -c tests/jest.config.js --ci
# 浏览器(必须在 tests/ 目录内,B-52)
cd tests && npx playwright test -c playwright.config.live.js --project=frontend-mobile --project=shop-api
npx playwright test -c playwright.config.health.js
npx playwright test -c playwright.config.live.js --project=admin-desktop
# langgraph(251 实派,kick 分离 + 本地单次读)
MSYS_NO_PATHCONV=1 BASE=http://192.168.16.251:4096 DIR=/sc-data/cfc/cfc-langgraph \
CMD='cd /sc-data/cfc/cfc-langgraph && setsid nohup timeout 1700 .venv/bin/python -m pytest -q --ignore=tests/qna --ignore=tests/test_chat.py > /tmp/r134_pytest.log 2>&1 &' \
node docs/tdd/tools/dispatch_shell.cjs