执行档:review(内网 cfc.iwintrue.com/admin + /frontend 已授权浏览器自动化;langgraph@251 分派;未联网装依赖、未启停服务、未改生产代码) 基线 HEAD:
387c5c69d(R131,23:16「第131轮新增 getArticleTags 用例」)→ 收尾 rebase 至560faad34(R131 重放)| 远端 origin/cfclub 前进至a8aab305a(上游合并181e830befeat(diet) +b42e90e7dfix(signature/product) + 工作台重设计 family-ops-workbench) 分工:189=admin-desktop 浏览器套件|本机=frontend-mobile / shop-api / health 浏览器套件 + Jest + 后端契约|251=langgraph pytest(实派)|204=失联(B-95 第 7 轮) 结论:⛔ 不通过(有条件) — 核心三项延续(G2 后端 33 红基线 / G9 锚点 9.9% / G11 无 CI)+ langgraph LLM 依赖 10 例全环境阻塞(B-126 复发 + 429);正向:TR-25AdminReferralContractTest16/16 新增全绿闭环、浏览器 28/28 维持、web/fe Jest 全绿(含工作台重设计合并复跑)
| 轮次 | 时间 | 后端全量 | langgraph@251 | 浏览器 | 结论 |
|---|---|---|---|---|---|
| R129 | 11-10 19:40 | 2865/2828/33 红(零漂移) | 35/43 → 37/43(429 复发) | 28/28 | 不通过(有条件) |
| R130 | 11-10 20:5x | 2865/2828/33 红(第 5 次零漂移) | 38/43(5 红全 429) | 28/28 | 不通过(有条件) |
| R131 | 11-10 23:16 | 用例新增 getArticleTags(未重跑全量) | 每小时快报 23:26 | 28/28 | 快报 |
| R132(本轮) | 11-10 夜 | test-compile 0 错 + 契约 16/16 新增绿(全量沿用 R130 基线,窗口内源码变更集中在 diet/signature/product + 工作台) | 33 绿 / 10 环境阻塞(B-126 挂起 + LLM 429) | 28/28 | 不通过(有条件) |
cfc-backend/src 变更仅随上游 diet/signature/product,已由 web/fe Jest 全绿覆盖相关面);langgraph 43 例拆分为非 LLM 31 例全绿(134s)+ LLM 依赖 10 例全环境阻塞(auto_tag 3 例后挂起、intent 2 例后挂起,EXIT=124);浏览器维持 28/28。/api/admin/referral/* 三端点零契约测试」,新建 AdminReferralContractTest 16 例,16/16 全绿(BUILD SUCCESS),补齐 admin.referral 权限门 / userId 校验 / summary 形态 / members 层级归一 / tree maxLevel 边界。EXIT=124 挂起(B-126 JavaClient coroutine 挂起复发)+ 429 配额延续,LLM 面 10 例无法得出有效结论。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)。| # | 测试类型 | 状态 | 证据 |
|---|---|---|---|
| 1 | 单元测试 | ✅ 已实测 | 后端 2865 例(R130 基线)+ 契约 16 例;web 116;fe 472 |
| 2 | 组件测试 | ✅ 已实测 | Vue shallowMount 组件用例(Families / AuditDetailDrawer 等 28 套件) |
| 3 | 接口 API 测试 | ✅ 已实测 | 后端控制器 MockMvc/直调;本轮新增 admin.referral 三端点契约 16 例 |
| 4 | 集成测试 | ✅ 已实测 | integration.* 实跑(R130 基线:EnergySystem 6 / GrowthRecordSync 3 / GuideModule 1 / DimensionMap 3 红,逐例一致) |
| 5 | 系统/端到端 E2E | ✅ 已实测 | 浏览器 live 28/28(admin 5 + fe 6 + shop 4 + health 13) |
| 6 | 冒烟测试 | ✅ 已实测 | 浏览器 28 例 + web/fe Jest 588 例零红即冒烟面 |
| 7 | 回归测试 | ✅ 已实测 | web/fe Jest 全绿(含工作台重设计合并复跑);langgraph 非 LLM 31/31 零漂移 |
| 8 | 探索性测试 | ⚠️ 待核实 | 本轮定向探针(dx-bridge list/sync 契约 + langgraph live),无 chartered 探索会话 |
| 9 | 验收 UAT / BDD | ⚠️ 待核实 | 无 cucumber/gherkin 执行证据 |
| 10 | 性能测试 | ⛔ 未授权未执行 | 压测属 execute 档(需联网授权),本轮未做 |
| 11 | 可靠性测试 | ⚠️ 待核实 | 无混沌/恢复演练;仅观察 429 配额窗口与 B-126 挂起 |
| 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(基线)+ TR-25 admin.referral 16/16 新增全绿 |
| 19 | QA 流程 | ⚠️ 待核实 | 132 轮闭环可追溯;门禁未脚本化(G11) |
| 20 | 全项目代码审查 | ⚠️ 待核实 | 仅规范扫描,未跑全量静态审查 |
| # | 维度 | 命令/方式 | 节点 | 结果 |
|---|---|---|---|---|
| 1 | 后端编译 | mvn -o -B test-compile |
本机 | ✅ EXIT=0,0 编译错(含新增 AdminReferralContractTest 16 例) |
| 2 | ★ 后端契约(TR-25) | AdminReferralContractTest(16 例,MockMvc/直调 + mock Service/Mapper + 反射注入) |
本机 | ✅ 16/16 全绿(BUILD SUCCESS),覆盖权限门 / userId 校验 / summary 形态 / members 层级归一(L3→ALL)/ tree maxLevel 默认 3 / 传值 8 / roleList 含 backend 放行 |
| 3 | cfc-web Jest | npx jest --silent(含工作台重设计合并复跑) |
本机 | ✅ 17 套件 / 116 例全绿(R130 后上游 family-ops-workbench 合并 +418 行未破坏既有用例) |
| 4 | cfc-frontend Jest | npx jest --silent |
本机 | ✅ 28 套件 / 475 例 = 472 过 / 3 skip / 0 红(含 R131 getArticleTags 新用例) |
| 5 | 管理端 UI E2E | playwright -c live --project=admin-desktop |
189 | ✅ 5/5(1.6m,TC-A-U01~U05 含滑块 + 真实登录入主框架) |
| 6 | 小程序 H5 E2E | --project=frontend-mobile |
本机 | ✅ 6/6(TC-F-U01~U06) |
| 7 | 商城排序契约 | --project=shop-api |
本机 | ✅ 4/4(TC-S-U01~U04) |
| 8 | 健康鉴权契约 | -c playwright.config.health.js |
本机 | ✅ 13/13(含 health/plan/generate 401) |
| 9 | langgraph 非 LLM | 251 pytest tests --ignore=tests/qna --ignore=tests/test_chat.py 拆跑 |
251 | ✅ 31/31 passed(134s) |
| 10 | langgraph analyze | 251 限时跑 tests/test_analyze.py |
251 | ✅ 2/2 passed(7s) |
| 11 | langgraph auto_tag | 251 限时跑 tests/test_auto_tag.py |
251 | ⚠️ RC=124(3 例后挂起,B-126 复发) |
| 12 | langgraph intent | 251 限时跑 tests/test_intent.py |
251 | ⚠️ RC=124(2 例后挂起,B-126 复发) |
| 13 | ★ dx-bridge 契约 | -c .tdd/_r132_dx.config.js(dx-health-bridge-auth.spec.js) |
本机 | ⚠️ 2 RED(404+502 混合):断言 [401,403] 实际 502;curl 复核 list=404 / sync=404(部署滞后)+ 偶发 000/502(网关瞬时)→ 判定环境/部署红,非产品缺陷 |
| 14 | 节点探活 | curl | 4 节点 | 251:4096=200 / 251:9000 /health=200 / 189:4090=200 / 204:4090=000(B-95 第 7 轮) |
合计(本轮实测面):浏览器 28/28 全绿 ✅ | Jest 588 例全绿 ✅(web 116 + fe 472)| 后端契约 16/16 新增全绿 ✅ | 后端编译 0 错 ✅ | langgraph 33 绿 / 10 环境阻塞 ⚠️ | dx-bridge 2 环境红 ⚠️。
langgraph 环境阻塞证据(/tmp/r132_lg.log、/tmp/r132_251_*.log)
EXIT=0,无挂起迹象。auto_tag 3 例后、intent 2 例后进程不退出 → timeout 650 以 EXIT=124 收口;日志含 JavaClient._get_client coroutine never awaited 警告 + 挂起线程(B-126 复发),且 auto_tag 断言面为 500 == 200(LLM 429 包装面,B-74 延续)。cfc-langgraph/app 与 tests 零 commit)。| # | 缺口类型 | 现状 | 风险 | 建议测试设计 | 优先级 | 闭环方式 |
|---|---|---|---|---|---|---|
| G-132-1 | LLM 依赖用例环境阻塞 | auto_tag/intent 两文件 EXIT=124(B-126)+ 429 延续 | 红线误判为产品回归 | LLM 依赖用例标 @pytest.mark.llm,CI 拆非门禁套件;intent_classifier 429/401 抛外部服务异常 |
P0 | 运维换 Token + 修 B-126 后连跑 2 轮全绿 |
| G-132-2 | 后端 33 红 | R130 基线(本轮未重跑全量) | 产品回归无法区分 | 逐类修复 + 每轮集合比对(已脚本化) | P0 | 研发修完复跑该类 + 全量,连 2 轮绿销号 |
| G-132-3 | dx-bridge 契约 | list/sync 404 + 偶发 502(部署滞后) | 误判为鉴权缺陷 | 部署会话确认后复跑 dx-health-bridge-auth 契约 |
P1 | 部署到 testing@47d203981 后复跑 2 例绿 |
| G-132-4 | 锚点率 | TC 锚点 9.9%(R130 基线) | 用例→代码追溯弱 | 锚点口径固化为「TC 末列含可执行用例名或 spec 路径」 | P2 | 研发补锚点至 ≥80% |
| G-132-5 | CI 全量门禁 | 无 CI 跑全量 | 回归无法自动拦截 | 落地 CI 全量 job(需联网建管道,未授权) | P1 | 研发/运维建 pipeline |
| G-132-6 | 204 节点 | :4090 连续 7 轮 000 |
无第三节点冗余 | 204 恢复前维持 189+本机拆跑 | P2 | 运维恢复 |
| G-132-7 | 用例更新纪律 | 本轮达标(G12):9e39128c6 → R131 getArticleTags;TR-25 → 本轮 16 例契约闭环;TR-26 → 后端契约已存在 |
— | 变更触发流程(合规) | — | 已满足 |
| 审查维度 | 负责专家 | 结论 | 关键证据 |
|---|---|---|---|
| 单元·组件级 | 苏雅 | 可用 | 后端编译 0 错 + 契约 16/16;web 116 / fe 472 全绿;变异测试缺失 |
| 集成·接口级 | 柯砚 | 有缺口 | TR-25 本轮补齐 16 例全绿;integration 红类沿用 R130;dx-bridge 2 环境红 |
| 系统·验收级 | 白樾 | ✅ 本轮绿 | 浏览器 live 28/28(189+本机);UAT/BDD 证据缺 |
| 测试保障级 | 闻朔 | ✅ 零回归 | web/fe Jest 全绿(工作台合并复跑);langgraph 非 LLM 31/31 零漂移 |
| 性能·可靠性 | 骆骋 | 未授权未执行 | 压测未做;429 配额窗口 + B-126 挂起观察 |
| 安全 | 关屿 | 静态趋稳 + 动态缺失 | 鉴权契约 13/13 + TR-25 权限门;SAST/DAST/SCA 未授权未执行 |
| 兼容·体验 | 阮清 | 待核实 | 单 Chromium;无可用性/无障碍证据 |
| 流程·度量·代码 | 何序 | 有缺口 | 锚点 9.9%、无 CI、@GetMapping 违规 |
| langgraph 专项(251 实派) | 陆谨汇总 | ⚠️ 环境阻塞 | 33 绿 / 10 环境阻塞(B-126 + 429);非 LLM 31/31 全绿 |
test_auto_tag.py(3 例后)与 test_intent.py(2 例后)进程不退出,timeout 650 以 EXIT=124 收口,LLM 依赖 10 例无有效结论。tests/test_auto_tag.py(断言 500 == 200)、tests/test_intent.py(assert CHAT == ANALYSIS);挂起源 JavaClient._get_client coroutine never awaited(B-126);auto_tag 断言失败被 429 包装(B-74)。源码 app/agents/intent_classifier.py:62 捕获 429 后默认回落 chat。intent_classifier 在 429/401 抛 ExternalServiceError,测试断言区分环境异常与分类错误。dx-health-bridge-auth.spec.js 2 例断言 [401,403] 实际 502;curl 复核 list/sync = 404(部署滞后),偶发 000/502(网关瞬时)。health.dataSource.bridgeWrite 实现 47d203981 部署 pending,线上端点尚未就绪。testing@47d203981 完成后复跑 2 例。ArticleAutoTagServiceTest(4)、CfCommissionServiceSettleTest(8)、DimensionRegistryMapContractTest(3)、EnergySystemFlowTest(6)、GrowthRecordSyncFlowTest(3)、GuideModuleIntegrationTest(1)、MembershipPaySwitchTest(1)、OrchestrationEngineTest(1)、OrchestrationIntegrationTest(1)、PaymentServiceORDRoutingTest(1)、TaskPlanServiceTest(1)、TeamProfitCronContractTest(1)、UserServiceWechatLoginContractTest(1)、UserServiceWechatLoginTest(1);清单见 _r130_agg.json。tests/test-cases/README.md 三套口径未归一。192.168.16.204:4090 连续 7 轮 HTTP 000;189 / 251 均正常。⛔ 不通过(有条件)
| 门禁 | 阈值 | 本轮 | 判定 |
|---|---|---|---|
| G1 全量通过率 | ≥95% | 沿用 R130 98.26%(本轮实测面全绿,未重跑后端全量) | ✅ |
| G2 红例数 | ≤10 | 后端 33(基线)+ 根级 16 + langgraph 10 环境阻塞 | ❌ |
| G3 前端 Jest | 0 红 | 472 过 / 3 skip / 0 红 | ✅ |
| G4 管理端 Jest | 0 红 | 116/116 | ✅ |
| G5 编译 / 产物完整性 | 0 错 | test-compile 0 错 + 契约 16/16 | ✅ |
| G6 浏览器硬契约 | 28/28 | 28/28 | ✅ |
| G7 langgraph 红 | 0 | 10 环境阻塞(B-126 + 429) | ❌ |
| G8 鉴权 / 契约 | 0 红 | health 13/13 + shop 4/4 + TR-25 16/16;dx-bridge 2 环境红 | ✅(产品面) |
| G9 TC 锚点率 | ≥80% | 9.9% | ❌ |
| G10 节点分派 | 251 + 189 | 251 pytest ✅ / 189 admin ✅ | ✅ |
| G11 CI 全量 | 有 | 无 | ❌ |
| G12 用例随 SRS 更新 | 变更即更新 | 本轮达标:9e39128c6→R131 getArticleTags;TR-25→16 例契约;TR-26→契约已存在 |
✅ |
正向:浏览器 live 28/28(189 admin 5/5 + 本机 fe 6/6 + shop 4/4 + health 13/13);web/fe Jest 588 例零红(含工作台重设计合并复跑);TR-25 admin.referral 契约 16/16 新增全绿闭环;langgraph 非 LLM 31/31 全绿;后端编译 0 错。
阻断:① langgraph LLM 依赖 10 例环境阻塞(B-126 复发 + 429);② 后端 33 红 R130 基线延续;③ 根级 16 环境红;④ G9/G11 长期不达标;⑤ 204 失联。
复评条件:① 修 B-126 + 运维升级 LLM 凭据后 251 连跑 2 轮 43 例全绿;② 部署 47d203981 后复跑 dx-bridge 2 例绿;③ 后端 33 红逐类修复并全量复跑;④ 锚点补至 ≥80%;⑤ 204 恢复。
testing@47d203981 后复跑 dx-health-bridge-auth 契约 2 例。