角色:
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)。
| 项目 | 内容 |
|---|---|
| 汇报人 | 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 | 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) |
| 指标 | 数量 | 说明 |
|---|---|---|
| 分派任务数 | 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 = 本机基线祖先 |
admin.referral(TR-25)零覆盖、dx-bridge 未部署(G14)、根级黑盒 9082 不可达(B-36)。a7e3b6388),未触生产/测试源码;前端/管理端本轮仍实跑复核(与 R156 一致 → 采信期无漏检)。dan/danshop(8888)。/api/**(JwtInterceptor,8 个公开路径)、统一 @PostMapping、AiGateway 调 LangGraph、健康报告 PDF 上传解析、五维能量、测评订单、家庭关系与邀请、商城价格排序(会员门控 utils/membershipGate.js 自 R156 起有 7 例函数级守护)。@Test 2935;编译产出 *.class 2330;浏览器 spec:tests/e2e 75 份 + tests/e2e-live 5 份。| # | 测试类型 | 状态 | 本轮证据 |
|---|---|---|---|
| 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 死注入;本轮聚焦复跑无新增代码审查面(源码零变更) |
| 模块 | 命令 | 总数 | 通过 | 失败 | 跳过 | 结果 |
|---|---|---|---|---|---|---|
| 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。
| 维度 | 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 改善但未过阈值) |
langgraph pytest 收尾挂起(EXIT=124)连续 3 轮未复现:
EXIT= 行迹象(落盘修复未做)。| 失败文件 | 例数 | 失败表征 | 日志证据 |
|---|---|---|---|
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)。chat_graph.py:148 召回记忆失败: 401 Authentication Fails, Your api key: ****ab12 is invalid(记忆召回 key 失效,非本轮新增)。251:9000/health = 200(同 R156 口径探活)。说明「服务活、仅 LLM 面被配额掐断」。| 检查项 | 结果 |
|---|---|
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 例)持续有效 |
mvn clean test 全量 2946 例中 16F+1E,10 个类;其中 UserServiceWechatLoginTest、UserServiceWechatLoginContractTest、TeamProfitCronContractTest 不在 CI 排除清单内。cfc-backend/target/surefire-reports/(同 R156 证据,本轮源码零变更)。@Transactional 回滚、契约类产品裁决、装置类去 Thread.sleep;目的消除长期红底噪及收敛 G13/G2;闭环 = 修后 10 类 0 红 + 全量 0 红连续 2 轮。.gitlab-ci.yml:61 BACKEND_OBSERVED_CLASSES(33 类)未包含 UserServiceWechatLoginTest、UserServiceWechatLoginContractTest、TeamProfitCronContractTest → backend-blocking-junit 必然失败。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 死注入。schema.sql:5354、entity/NutritionAgeDosage.java:33-34、service/NutritionProductService.java:48。update_time + DatabaseInitializer.runMigrations() 幂等 ensureColumn 并同步 schema.sql + 清理死注入。⑤ 闭环:SQLSyntaxErrorException 归零 + SHOW CREATE TABLE 成功 + 剂量接口 200。intent_classifier.py:62 静默兜底把上游故障伪装成分类错误。intent_classifier 改为显式降级(degraded=true);③ 修补 chat_graph.py:148 记忆召回 key;④ LLM 依赖用例加 pytest.mark.env_skip(429 时 skip 不 fail)。⑤ 闭环:连续 2 轮 51/51 全绿(或红例全为显式 env_skip)→ 销号。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,本机后端未启动)。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 容器拉起后端后再跑。signature.consignee 2 例(AC-R1 确认回调方法缺失、AC-R2 模板缺 HandSignature 段)+ growthHistory.dayGroupView 1 例(RED-A7:3 条无效日期记录中 1 条未被跳过,flat.length 实测 7、期望 6)。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 兜底的记录直接跳过。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 强校验。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」契约用例。@SpringBootTest 上下文启动,每次重跑 DatabaseInitializer 全量迁移(DatabaseInitializer 10715 行 + cfc-scheduler 22365 行 = 全日志 29.7%);最慢类 UserServiceFamilyNameLinkTest 331s、GuidePackageServiceTest 307s、GuideRolePermissionTest 258s、AuthControllerTest 239s。DatabaseInitializer 与 @EnableScheduling;统一 webEnvironment=NONE 合并上下文;接 JaCoCo 顺带出覆盖率。⑤ 闭环:连续 2 轮全量 <35:00 红例集合不变 → 销号。| 缺口 | 现状 | 风险 | 建议测试设计 | 优先级 | 闭环方式 |
|---|---|---|---|---|---|
| 后端覆盖率不可度量 | 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 常绿 |
| 门 | 阈值 | 本轮实测 | 状态 |
|---|---|---|---|
| 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 改善但未过阈值,量变未质变)。
test_intent.classify_mind 转绿,429 配额时窗抖动);全量通过率 98.31% → 98.34%(+0.03pp)。a7e3b6388 为研发纯文档)→ 无新问题登记。origin/cfclub)+ 落地研发通知。BACKEND_OBSERVED_CLASSES 补 3 红类并剔除 26 绿类 → CI 一次跑绿。a7e3b6388,130 行 docs),R156 61:02 全量实跑证据于 00:50 落盘 → 采信成立;若出现源码变更将立即改为实跑。pom.xml 无 JaCoCo、无 PIT → 未实测,只有执行结果无可信覆盖率。MACHINE_JSON_PATH 凭据 → 仅做游客态可用性 + 鉴权契约,登录后业务流待核实。app.main):本机不启、生产在 ai.etotem.com.cn → 仅验 251 节点最小服务套件。# 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)