执行档:review(内网 cfc.iwintrue.com/admin + /frontend 已授权浏览器自动化;langgraph@251 分派;未联网装依赖、未启停服务、未改生产代码) 基线 HEAD:
df6c57a12(= 起点 origin/cfclub;跑测期间分支未漂移,收尾时 origin 前进至e759ba830=仅 docs 汇报,后端/前端/ai 源码窗口内 零变更) 分工:189=admin-desktop 浏览器套件|本机=frontend-mobile / shop-api / health 浏览器套件 + Jest|251=langgraph pytest(实派)|204=失联(B-95 第 6 轮) 结论:⛔ 不通过(有条件) — 核心三项延续(G2 红例 54 / G9 锚点 9.9% / G11 无 CI);B-90 langgraph live chat 挂死 9 轮后首次恢复(2/2 × 200)
| 轮次 | 时间 | 后端全量 | langgraph@251 | 浏览器 | 结论 |
|---|---|---|---|---|---|
| R127 | 11-10 17:30 | 2865/2828/33 红 | 43/43 全绿 | 28/28 | 不通过(有条件) |
| R128 | 11-10 18:08 | 2865/2828/33 红 | 43/43 全绿 | 28/28 | 不通过(有条件) |
| 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 环境红,定向复跑 5 红稳定复现) | 28/28 | 不通过(有条件) |
/api/v1/chat 连续 9 轮 90s 零字节,本轮 2/2 返回 200 正文;/api/v1/analyze 亦 200)。但不等于 B-74/B-129 已修——同一实例在 20:07~20:17 的 pytest 中仍 6 次 429,两者是不同失效面(LLM 上游配额 vs 端点挂死)。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 | 单元测试 | ✅ 已实测 | 后端 339 类 2865 例(surefire 339/339 XML);web 116;fe 426 |
| 2 | 组件测试 | ✅ 已实测 | Vue shallowMount 组件用例(Families / AuditDetailDrawer 等 26 套件) |
| 3 | 接口 API 测试 | ✅ 已实测 | 后端 365 控制器 MockMvc/直调;线上 4 端点匿名探针 4/4 = 401 |
| 4 | 集成测试 | ✅ 已实测 | integration.* 实跑(EnergySystem 6 / GrowthRecordSync 3 / GuideModule 1 / DimensionMap 3 红,与 R129 逐例一致) |
| 5 | 系统/端到端 E2E | ✅ 已实测 | 浏览器 live 28/28(admin 5 + fe 6 + shop 4 + health 13) |
| 6 | 冒烟测试 | ✅ 已实测 | 浏览器 28 例 + web/fe Jest 542 例零红即冒烟面 |
| 7 | 回归测试 | ✅ 已实测 | 后端与 R129 逐字段零漂移(第 5 次);web/fe 零漂移 |
| 8 | 探索性测试 | ⚠️ 待核实 | 本轮仅定向探针(鉴权 4 端点 + langgraph live chat/analyze ×3),无 chartered 探索会话 |
| 9 | 验收 UAT / BDD | ⚠️ 待核实 | 无 cucumber/gherkin 执行证据 |
| 10 | 性能测试 | ⛔ 未授权未执行 | 压测属 execute 档(需联网授权),本轮未做 |
| 11 | 可靠性测试 | ⚠️ 待核实 | 无混沌/恢复演练;仅观察 429 配额窗口与 B-90 恢复 |
| 12 | 安全测试(SAST/DAST/SCA/渗透) | ⛔ 未授权未执行 | 依赖漏洞扫描/DAST 需联网;仅静态项 + 鉴权契约 |
| 13 | 兼容性测试 | ⚠️ 待核实 | 仅 Chromium 单浏览器;无多浏览器矩阵 |
| 14 | 可用性测试 | ⚠️ 待核实 | 无真实用户可用性证据 |
| 15 | 无障碍测试 | ⚠️ 待核实 | 无 axe/WCAG 扫描 |
| 16 | 覆盖率度量 | ⚠️ 已实测(低) | cfc-web 语句 10.09% / 分支 6.12% / 函数 7.50% / 行 9.97%(与 R129 逐位一致);后端 JaCoCo 未接入 |
| 17 | 变异测试 | ⛔ 未发现 | 无 PIT / mutation 资产 |
| 18 | 契约测试 | ✅ 已实测 | 健康鉴权契约 13/13(全 401);商城排序契约 4/4;langgraph live 契约 3/3 = 200 |
| 19 | QA 流程 | ⚠️ 待核实 | 130 轮闭环可追溯;门禁未脚本化(G11) |
| 20 | 全项目代码审查 | ⚠️ 待核实 | 仅规范扫描(@GetMapping 8 处仍违 AGENTS.md),未跑全量静态审查 |
| # | 维度 | 命令/方式 | 节点 | 结果 |
|---|---|---|---|---|
| 1 | 后端全量 | mvn -o -B clean test(JDK1.8.0_25 + Maven 3.6.1) |
本机 | 339 类 / 2865 例 / 2828 过 / 30F+3E+4S / 33 红 = 98.71%(剔 skip 98.85%),46:17,BUILD FAILURE(仅测试红);339/339 XML 无沉默;testCompile 345 源 0 错;target/classes 2325 |
| 2 | 恒等式核对 | 源码统计 | 本机 | @Test 2854 − @Disabled 4 + 参数化/早退净增 15 = 2865,误差 0 |
| 3 | 红例集合比对 | 与 R129 JSON 逐例 diff | 本机 | 零漂移:ArticleAutoTag 4 / CfCommissionSettle 8 / DimensionRegistryMap 3 / EnergySystem 6 / GrowthRecordSync 3 / GuideModule 1 / MembershipPaySwitch 1 / OrchestrationEngine 1 / OrchestrationIntegration 1 / PaymentORD 1 / TaskPlan 1 / TeamProfitCron 1 / UserWechatLogin 2 = 33 |
| 4 | cfc-web Jest | CI=true npx jest --ci --runInBand --coverage |
本机 | ✅ 17 套件 / 116 例全绿(169.7s);覆盖率 10.09 / 6.12 / 7.50 / 9.97 |
| 5 | cfc-frontend Jest | CI=true npx jest --ci --runInBand |
本机 | ✅ 26 套件 / 426 例 = 423 过 / 3 skip / 0 红(46.5s) |
| 6 | 根级黑盒 Jest | npx jest -c tests/jest.config.js --ci |
本机 | ⚠️ 23 例 = 7 过 / 16 红(ECONNREFUSED 9082 未启,B-36 第 32 轮零漂移) |
| 7 | 管理端 UI E2E | playwright -c live --project=admin-desktop |
189 | ✅ 5/5(1.4m,TC-A-U01~U05 含滑块 + 真实登录入主框架) |
| 8 | 小程序 H5 E2E | --project=frontend-mobile |
本机 | ✅ 6/6(57.3s,TC-F-U01~U06) |
| 9 | 商城排序契约 | --project=shop-api |
本机 | ✅ 4/4(15.1s,TC-S-U01~U04) |
| 10 | 健康鉴权契约 | -c playwright.config.health.js |
本机 | ✅ 13/13(9.9s,含 health/plan/generate 401) |
| 11 | 线上鉴权探针 | curl -X POST 4 端点匿名 |
本机 | ✅ 4/4 = 401(B-69 销号维持第 4 轮) |
| 12 | langgraph pytest | 251 POST /api/shell 实派 + setsid 分离落盘 |
251 | ⚠️ 43 例 / 38 过 / 5 红 / 150.93s(R129 为 37 过);5 红 = auto_tag 3 + intent 2,全为 429 |
| 13 | langgraph 定向复跑 | 251 复跑 test_auto_tag.py + test_intent.py |
251 | ⚠️ 10 例 / 5 过 / 5 红 / 67.42s(红集合与首跑一致,429 稳定复现) |
| 14 | ★ langgraph live chat | POST /api/v1/chat(query/user_id/conversation_id) |
本机→251 | ✅ 2/2 HTTP 200:25.53s / 703B、13.03s / 215B(9 轮零字节后首次恢复) |
| 15 | ★ langgraph live analyze | POST /api/v1/analyze |
本机→251 | ✅ HTTP 200 / 4.20s / 1019B |
| 16 | 节点探活 | curl | 4 节点 | 251:4096=200 / 251:9000 /health=200(6.8ms) / 189:4090=200 / 204:4090=000(B-95 第 6 轮) |
合计:3501 例 / 3440 过 = 98.26%(红 54 = 后端 33 + 根级 16 + langgraph 5),skip 7。
langgraph 5 红证据(/tmp/r130_pytest.log 与 /tmp/r130b_pytest.log)
test_auto_tag.py::test_auto_tag_content_relevance / short_content / empty_content — 端点返回 500(assert 500 == 200)test_intent.py::test_classify_analysis / test_classify_mind — assert <Intent.CHAT> == <Intent.ANALYSIS>RateLimitError("Error code: 429 ... You've reached the API rate limit for free users ... AgnesAI_error"),intent_classifier.py:62 捕获后默认回落 chat → 断言失败的直接表现被包装成「分类错误」,实际根因是上游配额。cfc-langgraph/app 与 tests 零 commit)。| # | 缺口类型 | 现状 | 风险 | 建议测试设计 | 优先级 | 闭环方式 |
|---|---|---|---|---|---|---|
| G-130-1 | LLM 上游配额不稳 | pytest 6 次 429;live chat 却 200 | 红线误判为产品回归 | LLM 依赖用例标 @pytest.mark.llm,CI 拆为非门禁套件;断言侧区分 401/429 环境异常 |
P0 | 运维升级 Token 计划后连跑 2 轮全绿 |
| G-130-2 | 后端 33 红 | 第 5 次零漂移,研发窗口零进展 | 产品回归无法区分 | 逐类修复 + 每轮集合比对(已脚本化) | P0 | 研发修完复跑该类 + 全量,连 2 轮绿销号 |
| G-130-3 | 锚点率 | TC 827 行 / 唯一 TC ID 57 / 指向可执行用例 82(9.9%) | 用例→代码追溯弱 | 锚点口径固化为「TC 末列含可执行用例名或 spec 路径」 | P2 | 研发补锚点至 ≥80% |
| G-130-4 | 场景覆盖 | SC 244 / 被 TC 引用 149(61.1%) | 95 个场景无用例 | 按未引用 SC 生成用例骨架 | P1 | 补 95 场景的 TC 映射 |
| G-130-5 | CI 全量门禁 | 无 CI 跑全量 | 回归无法自动拦截 | 落地 CI 全量 job(需联网建管道,未授权) | P1 | 研发/运维建 pipeline |
| G-130-6 | 204 节点 | :4090 连续 6 轮 000 |
无第三节点冗余 | 204 恢复前维持 189+本机拆跑 | P2 | 运维恢复 |
| G-130-7 | 用例更新纪律 | SRS / 场景 / API_REFERENCE 窗口零变更 → 未新增用例 | — | 变更触发流程(合规) | — | 已满足(G12) |
| 审查维度 | 负责专家 | 结论 | 关键证据 |
|---|---|---|---|
| 单元·组件级 | 苏雅 | 可用 | 后端 2865 例 46:17 全量可跑;web 116 / fe 426 全绿;变异测试缺失 |
| 集成·接口级 | 柯砚 | 有缺口 | integration 红类与 R129 逐例一致;契约 17/17 绿(health 13 + shop 4) |
| 系统·验收级 | 白樾 | ✅ 本轮绿 | 浏览器 live 28/28(189+本机);UAT/BDD 证据缺 |
| 测试保障级 | 闻朔 | ✅ 零回归 | 后端第 5 次零漂移;web/fe 零漂移;冒烟面全绿 |
| 性能·可靠性 | 骆骋 | 未授权未执行 | 压测未做;429 配额窗口观察 |
| 安全 | 关屿 | 静态趋稳 + 动态缺失 | 鉴权 4/4 = 401;SAST/DAST/SCA 未授权未执行 |
| 兼容·体验 | 阮清 | 待核实 | 单 Chromium;无可用性/无障碍证据 |
| 流程·度量·代码 | 何序 | 有缺口 | 锚点 9.9%、场景 61.1%、@GetMapping 8 处、无 CI |
| langgraph 专项(251 实派) | 陆谨汇总 | ⚠️ 环境红 | 38/43;5 红全为 429;live chat/analyze 200 |
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。RateLimitError 429 (AgnesAI_error)。同实例 live /api/v1/chat 20:20 起却 2/2 返回 200。tests/test_auto_tag.py(3 例,断言 500 == 200)、tests/test_intent.py::test_classify_analysis / test_classify_mind;源码 app/agents/intent_classifier.py:62 捕获异常后 默认 chat,把 429 包装成「分类错误」。intent_classifier 在 429/401 时抛 ExternalServiceError 而非静默回落,测试断言可直接区分「环境异常」与「分类错误」;③ 用例加 @pytest.mark.llm,CI 拆非门禁套件。npx jest -c tests/jest.config.js → 7 过 / 16 红,全部 ECONNREFUSED 127.0.0.1:9082(本机后端未启动)。tests/integration/mini-games-api.spec.js(13)、tests/integration/plan-chain.spec.js(3)。API_BASE_URL 指向 cfc.iwintrue.com)后重跑,以区分真红/环境红;同时补 tests/.env.test 凭据夹具(B-16)。tests/test-cases/*.md 827 行 TC、唯一 TC ID 仅 57、指向可执行用例 82 个 → 锚点率 9.9%,远低于 80% 目标。docs/tdd/tools/test_report_metrics.py 三套正则口径未统一(严格 17.1% / 宽松 28.3% / 可执行 9.9%)。tests/test-cases/README.md 固化「TC 行末列必须为可执行用例名或 spec 路径」,并用脚本校验新增 TC 合规。192.168.16.204:4090 连续 6 轮 HTTP 000;189 / 251 均正常。⛔ 不通过(有条件)
| 门禁 | 阈值 | 本轮 | 判定 |
|---|---|---|---|
| G1 全量通过率 | ≥95% | 98.26%(后端 98.71%) | ✅ |
| G2 红例数 | ≤10 | 54(后端 33 + 根级 16 + langgraph 5) | ❌ |
| G3 前端 Jest | 0 红 | 426 = 423 过 / 3 skip / 0 红 | ✅ |
| G4 管理端 Jest | 0 红 | 116/116 | ✅ |
| G5 编译 / 产物完整性 | 0 错 / 无沉默 | 345 源 0 错;339/339 XML;classes 2325 | ✅ |
| G6 浏览器硬契约 | 28/28 | 28/28 | ✅ |
| G7 langgraph 红 | 0 | 5(全 429 环境红) | ❌ |
| G8 鉴权 / 契约 | 0 红 | 4/4 = 401 + health 13/13 | ✅ |
| G9 TC 锚点率 | ≥80% | 9.9% | ❌ |
| G10 节点分派 | 251 + 189 | 251 pytest ✅ / 189 admin ✅ | ✅ |
| G11 CI 全量 | 有 | 无 | ❌ |
| G12 用例随 SRS 更新 | 变更即更新 | SRS/场景/契约零变更 → 无需更新 | ✅ |
正向:浏览器 live 28/28(189 admin 5/5 + 本机 fe 6/6 + shop 4/4 + health 13/13);web/fe Jest 542 例零红;后端第 5 次逐例零漂移;B-90 langgraph live chat/analyze 恢复 200(9 轮后首次);B-69 鉴权 4/4 维持销号。
阻断:① 后端 33 红 5 轮零进展;② langgraph 429 配额(3 轮);③ 根级 16 环境红;④ G9/G11 长期不达标;⑤ 204 失联。
复评条件:① 研发逐类修后端 33 红;② 运维升级/轮换 LLM 凭据后 251 连跑 2 轮全绿;③ 起 9082 后根级 23 例重跑;④ 锚点补至 ≥80%;⑤ 204 恢复。