执行档:review(内网 cfc.iwintrue.com/admin + /frontend 已授权浏览器自动化;langgraph@251 分派;未联网装依赖) 基线 HEAD:
ada6cb7a8(= origin/cfclub,跑测期间分支/HEAD 未漂移) 分工:189=admin-desktop 浏览器套件|本机=frontend-mobile/shop-api/health 浏览器套件 + Jest|251=langgraph pytest(分派)|204=失联(B-95) 结论:⛔ 不通过(有条件) — 核心三项延续:G2 红例 / G9 锚点低 / G11 无 CI;langgraph LLM 配额 429 复发
| 轮次 | 时间 | 后端全量 | langgraph | 浏览器 | 结论 |
|---|---|---|---|---|---|
| R126 | 11-10 15:50 | 2865/33 红 | 39/43(B-74 401 复发) | 189 admin 5/5 | 有条件通过 |
| R127 | 11-10 17:30 | 2865/2828/33 红 | 43/43 全绿 | 189 admin 5/5 | 不通过(有条件) |
| R128 | 11-10 18:08 | 2865/2828/33 红 | 43/43 全绿 | 189 admin 5/5 + 本机 fe 6/6 | 不通过(有条件) |
| R129(本轮) | 11-10 19:4x | 2865/2828/33 红(零漂移) | ⚠️ 首跑 35/43 → 重跑 37/43(均 429 rate limit,复发确认) | 189 admin 5/5 + 本机 fe 6/6 + shop 4/4 + health 13/13 全绿 | 不通过(有条件) |
You've reached the API rate limit for free users (AgnesAI_error))→ 结论:根因从凭据失效演化为上游配额/限流,属环境性失败,非代码回归;重跑后 auto_tag 4→2 红(endpoint_responds/valid_format 偶发转绿),intent 4 例稳定红 → 配额窗口波动特征。git log 窗口内无 hits)→ 按纪律本轮不更新用例(合规,G12 ✅)。cfc-backend(Spring Boot 2.7.18 + MyBatis-Plus + Java 8,9082)· cfc-web(Vue2 + ElementUI)· cfc-frontend(uni-app H5/小程序)· cfc-langgraph(FastAPI + LangGraph + Chroma,9000,部署 192.168.16.251)· dan/danshop(独立商城 8888)。| # | 测试类型 | 状态 | 证据 |
|---|---|---|---|
| 1 | 单元测试 | ✅ 已实测 | 后端 339 类 2865 例(surefire);web 116;fe 426 |
| 2 | 组件测试 | ✅ 已实测 | Vue shallowMount 组件用例(Families/AuditDetailDrawer 等) |
| 3 | 接口 API 测试 | ✅ 已实测 | 后端 364 Controller MockMvc/直调;线上 4 端点鉴权探针 401 |
| 4 | 集成测试 | ✅ 已实测 | integration.* 实跑(EnergySystem 6×500 / GrowthRecordSync 3 / GuideModule 1 / DimensionMap 3 红,与 R128 一致) |
| 5 | 系统/端到端 E2E | ✅ 已实测 | 浏览器 live 28/28(admin 5 / frontend 6 / shop 4 / health 13) |
| 6 | 冒烟测试 | ✅ 已实测 | 浏览器 28 例 + Jest 全绿即冒烟面 |
| 7 | 回归测试 | ✅ 已实测 | 后端与 R128 逐字段零漂移;web/fe 零漂移 |
| 8 | 探索性测试 | ⚠️ 待核实 | 本轮仅定向探针(鉴权 4 端点 + langgraph live),无 chartered 探索会话 |
| 9 | 验收 UAT / BDD | ⚠️ 待核实 | 无 BDD(cucumber/gherkin)执行证据 |
| 10 | 性能测试 | ⛔ 未授权未执行 | 压测属 execute 档(需联网授权),本轮未做 |
| 11 | 可靠性测试 | ⚠️ 待核实 | 无混沌/恢复演练;仅观察 B-90/429 波动窗口 |
| 12 | 安全测试(SAST/DAST/SCA/渗透) | ⛔ 未授权未执行 | 依赖漏洞扫描/DAST 需联网;仅剩静态项 |
| 13 | 兼容性测试 | ⚠️ 待核实 | 仅 Chromium 单浏览器;无多浏览器矩阵 |
| 14 | 可用性测试 | ⚠️ 待核实 | 无真实用户可用性证据 |
| 15 | 无障碍测试 | ⚠️ 待核实 | 无 axe/WCAG 扫描 |
| 16 | 覆盖率度量 | ⚠️ 已实测(低) | cfc-web 语句 10.09% / 分支 6.12% / 函数 7.50% / 行 9.97%;后端 JaCoCo 未接入 |
| 17 | 变异测试 | ⛔ 未发现 | 无 PIT/mutation 资产 |
| 18 | 契约测试 | ✅ 已实测 | 鉴权契约 4/4 401;健康契约 13/13 401;商城排序契约 4/4 |
| 19 | QA 流程 | ⚠️ 待核实 | 129 轮闭环可追溯;门禁未脚本化(G11) |
| 20 | 全项目代码审查 | ⚠️ 待核实 | 本轮仅规范扫描(@GetMapping 违例延续),未跑全量静态审查 |
| # | 维度 | 命令/方式 | 节点 | 结果 |
|---|---|---|---|---|
| 1 | 后端全量 | surefire 汇总(R129 首跑) | 本机 | 339 类 / 2865 例 / 2828 过 / 33 红 / 98.85%;红例集合与 R128 完全一致(CfCommission 8 / EnergySystem 6 / ArticleAutoTag 4 / GrowthRecordSync 3 / DimensionMap 3 + 散例 9) |
| 2 | cfc-web Jest | CI=true npx jest --ci --runInBand --coverage |
本机 | ✅ 17 套件 / 116 例全绿(87s);覆盖率 stmt 10.09% / branch 6.12% / func 7.50% / line 9.97% |
| 3 | cfc-frontend Jest | CI=true npx jest --ci --runInBand |
本机 | ✅ 26 套件 / 426 例 = 423 过 / 3 skip / 0 红(25s) |
| 4 | 根级黑盒 Jest | npx jest -c tests/jest.config.js --ci |
本机 | ⚠️ 23 例 = 7 过 / 16 红(ECONNREFUSED 9082 未启,B-36 延续) |
| 5 | 管理端 UI E2E | playwright -c live --project=admin-desktop |
189 | ✅ 5/5(1.3m,TC-A-U01~U05 含滑块+真实登录入主框架) |
| 6 | 小程序 H5 E2E | --project=frontend-mobile |
本机 | ✅ 6/6(49s,TC-F-U01~U06) |
| 7 | 商城排序契约 | --project=shop-api |
本机 | ✅ 4/4(6.3s,TC-S-U01~U04) |
| 8 | 健康鉴权契约 | -c playwright.config.health.js |
本机 | ✅ 13/13(4.9s,全部 401) |
| 9 | 线上鉴权探针 | curl -X POST 4 端点匿名 |
本机 | ✅ 4/4 = 401(B-69 维持销号) |
| 10 | langgraph pytest | 251 POST /api/shell 实派(tee 落盘) |
251 | ⚠️ 首跑 35/43(8 FAILED)→ 重跑 37/43(6 FAILED,120.03s),两跑失败全为 LLM 用例(429),PYTEST_EXIT=124(B-126 再现) |
| 11 | langgraph live | POST /api/v1/chat(整数 schema + 90s cap) |
本机→251 | ❌ chat 90s HTTP 000 零字节 → B-90 延续(第 9 轮);/health ok、错误 schema 返 422(服务存活,LLM 链路挂死) |
| 12 | 节点探活 | curl | 4 节点 | 251:4096=200 / 251:9000={"status":"ok"} / 189:4090=200 / 204:4090=000(B-95 延续) |
langgraph 重跑详情(/tmp/r129b_pytest.log,120.03s,6 FAILED):
tests/test_auto_tag.py 2 例:short_content / empty_content(首跑另含 endpoint_responds/valid_format,本次转绿 → 配额波动)tests/test_intent.py 4 例:classify_analysis / classify_recommend / classify_mind / classify_health(两次一致红)intent_classifier.py:62 意图分类失败: Error code: 429 - ... You've reached the API rate limit for free users. Upgrade to a Token Plan ... (AgnesAI_error), 默认 chatPYTEST_EXIT=124:测试 120s 完成但解释器未退出(JavaClient._get_client coroutine never awaited 警告 + 挂起线程),被 timeout 1500 杀 → B-126 第 2 轮再现| # | 缺口类型 | 现状 | 风险 | 建议测试设计 | 优先级 | 闭环方式 |
|---|---|---|---|---|---|---|
| G1 | LLM 外部依赖不稳 | 401→429 波动,LLM 用例红数随上游配额漂移 | 红线误判为回归 | 红例与 LLM 探针绑定:429/401 一律标「环境红」并重跑确认 | P0 | 运维确认 Token 计划/配额;重跑全量取证 |
| G2 | 后端 33 红 | 14 例产品类已登记待研发闭环;integration 类需连库 | 产品回归无法区分 | 已有脚本跟踪逐轮集合对比(本轮零漂移) | P0 | 研发逐类修复,连续 2 轮绿才销号 |
| G9 | 锚点率 | TC 827 行 / 指向可执行用例 82(9.9%) | 用例→代码追溯弱 | 口径与 B-124 对齐(本轮沿用可复算口径) | P2 | 研发补锚点 |
| G11 | CI 全量门禁 | 无 CI 跑全量 | 回归无法自动拦截 | 落地 CI 全量 job(需联网建管道,未授权) | P1 | 研发/运维 |
| G10 | 浏览器双节点 | 189+本机 11/11 全绿(第 4 轮) | 204 失联无冗余 | 204 恢复前保持双节点拆跑 | P2 | 运维恢复 204 |
| G12 | 用例更新纪律 | SRS/场景零变更 → 未新增用例 | — | 变更触发用例更新流程(合规) | — | 已满足 |
| 审查维度 | 负责专家 | 结论 | 关键证据 |
|---|---|---|---|
| 单元·组件级 | 苏雅 | 基本可用 | 后端 2865 例可跑、web 116 / fe 426 全绿;变异测试缺失 |
| 集成·接口级 | 柯砚 | 有缺口 | integration 红类与 R128 零漂移;契约 21/21 绿 |
| 系统·验收级 | 白樾 | ✅ 本轮绿 | 浏览器 live 28/28 全绿(189+本机);UAT/BDD 证据缺 |
| 测试保障级 | 闻朔 | ✅ 零回归 | 后端逐例零漂移;web/fe 零漂移 |
| 性能·可靠性 | 骆骋 | 未授权未执行 | 压测未做;B-90 挂死观察中 |
| 安全 | 关屿 | 静态趋稳 + 动态缺失 | 鉴权 4/4 401;SAST/DAST/SCA 未授权未执行 |
| 兼容·体验 | 阮清 | 待核实 | 单 Chromium;无可用性/无障碍证据 |
| 流程·度量·代码 | 何序 | 有缺口 | 锚点 9.9%;无 CI;QA 流程 129 轮可追溯 |
| langgraph 专项(251 分派) | 陆谨汇总 | ⚠️ 待重跑确认 | 首跑 35/43(429 环境红 8);重跑中 |
Error code: 429 - API rate limit for free users (AgnesAI_error);R126 同组用例为 401,R127/R128 全绿。重跑后 auto_tag 2 例转绿 → 配额窗口波动。cfc-langgraph/tests/test_auto_tag.py(short/empty_content)、tests/test_intent.py::test_classify_*(4 例);源码 app/agents/intent_classifier.py:62 捕获异常后默认 chat。@pytest.mark.llm,CI 抽为独立非门禁套件;断言侧为 401/429 提供明确环境异常标记(当前 assert Intent.CHAT == Intent.HEALTH 掩盖根因)。query/user_id 整数)POST /api/v1/chat → HTTP 000、90s 零字节;/health 200、错误 schema 422 → 服务存活仅 LLM 链路挂死。app/routers/*.py chat 端点(LLM 调用段)。.tdd/_r129_red_list.txt。npx jest -c tests/jest.config.js → 7 过 / 16 红,全为 ECONNREFUSED 127.0.0.1:9082。tests/jest.config.js 挂测对象(mini-game 13 + plan-chain 3)。⛔ 不通过(有条件)
| 门禁 | 阈值 | 本轮 | 判定 |
|---|---|---|---|
| G1 全量通过率 | ≥95% | 后端 98.85%(零漂移) | ✅ |
| G2 红例数 | ≤10 | 后端 33(零漂移)+ 根级 16 + langgraph 6(环境 429) | ❌ |
| G6 浏览器硬契约 | 28/28 | 28/28 全绿 | ✅ |
| G7 契约/鉴权 | 0 红 | 21/21 绿 + 4/4 401 | ✅ |
| G9 锚点率 | ≥80% | 9.9% | ❌ |
| G11 CI 全量 | 有 | 无 | ❌ |
正向:浏览器 live 28/28 全绿(189 admin 5/5 + 本机 fe 6/6 + shop 4/4 + health 13/13);web/fe Jest 542 例零红;后端零漂移;B-69 鉴权 4/4 维持;B-122/189 节点能力第 4 轮稳定。 阻断:① langgraph LLM 429 复发确认(首跑 8 红 / 重跑 6 红,均环境红);② G2 红例存量;③ G9/G11 长期不达标;④ B-90 挂死第 9 轮;⑤ B-126(解释器不退出)第 2 轮。
复评条件:① 运维升级/轮换 LLM 凭据后 251 连跑 2 轮全绿 → B-74/B-129 销号;② 研发修 B-126(pytest 结束显式 exit / 去 JavaClient 挂起);③ 后端红例逐类修复闭环;④ 204 节点恢复或降级登记。