汇报人:测试负责人(软件测试专家团 · 陆谨)|汇报周期:2026-11-09 09:52 ~ 11:15(第 101 轮) 负责模块/单元:浠艾福 XAF(d:/cfc)· 全栈测试闭环(浏览器自动化 + langgraph@251 + 全量回归) 执行档:review(内网
/admin+/frontend+251 已授权;未联网装依赖;静默无人值守)
| 指标 | 数量 | 说明 |
|---|---|---|
| 本轮新增测试用例数 | 0 个 | 窗口内无新增 SRS 需求文档变更(docs/superpowers/specs/ 无新文件),不新建用例;SRS 状态变更 1 项已同步用例台账(见 1.4) |
| 本轮验证执行测试数 | 3465 个 | 后端 2829(首次全量实测)+ 前端 Jest 426 + 管理端 116 + 根级 tests 23 + langgraph@251 43 + 浏览器 E2E 28 |
| 用例通过率 | 95.01% | 3292 PASS / 3465 执行(红 166、SKIP 7) |
分套件实测:
| 套件 | 执行 | 通过 | 红 | 跳过 | 通过率 | 与 R100 对比 |
|---|---|---|---|---|---|---|
| cfc-backend(mvn 全量) | 2829 | 2726 | 99 | 4 | 96.36% | R100 未实测(沿用 R97 94.75%)→ 本轮首次实测,+1.61pp |
| cfc-frontend(Jest) | 426 | 383 | 40 | 3 | 89.9% | 零漂移 |
| cfc-web(Jest) | 116 | 116 | 0 | 0 | 100% | 零漂移 |
| 根级 tests(Jest) | 23 | 7 | 16 | 0 | 30.4% | 零漂移(B-36) |
| cfc-langgraph @251(pytest) | 43 | 32 | 11 | 0 | 74.4% | 零漂移(B-91 派发本轮恢复成功) |
| 浏览器 E2E(live) | 28 | 28 | 0 | 0 | 100% | 零漂移 |
| 指标 | 数量 | 说明 |
|---|---|---|
| 分派任务数 | 3 个 | ① 251 节点 langgraph pytest(ses_e41f57acdffe…,成功)② 本机 admin E2E ③ 本机 frontend E2E(189 失联,本机串行) |
| 恢复智能体会话数 | 0 个 | — |
| 当前在用会话数 | 1 个 | 251 派发会话(succeeded) |
| 会话标签 | 会话 ID | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
|---|---|---|---|---|---|---|
| 251-langgraph | ses_e41f57acdffeAuONBYaPOTEpRo | succeeded | langgraph pytest 43 例 | — | /sc-data/cfc/cfc-langgraph(09ba334af / cfclub) |
结果经 /api/shell 直读,未依赖 LLM 转述 |
| 本机-admin | — | done | admin E2E 5/5 | — | 干净 | 本机单节点(B-89 189 失联,降级) |
| 本机-frontend | — | done | frontend E2E 6/6 | — | 干净 | LIVE_BASE_URL=https://cfc.iwintrue.com |
| 指标 | 数量 | 说明 |
|---|---|---|
| 新测试发现问题数 | 3 个 | B-92(本机 D 盘 100% 满,隔离树建不出来)、B-93(线上 /api 全站 502 窗口 10:20~10:26)、B-94(B-84 派发不确定性的解法:/api/shell 直读通道) |
| 已解决测试相关问题数 | 2 个 | B-91 闭环(251 派发恢复成功)、B-81 闭环(签名 canvas2d 实现合入 + 14/14 绿) |
| 待解决测试相关问题数 | 9 个 | B-65(P0 第 9 轮)、B-69(P1 第 8 轮,本轮线上 4 端点 200 复证)、B-90(P0 第 2 次复证)、B-82、B-84、B-89、B-92、B-93、B-94 |
| 阶段 | 键数 | 备注 |
|---|---|---|
| UNTRACKED | — | CFC 发现/跟踪模式 |
| RED | 3 族 | Guhe 契约 41 例 / DietFoodHealthAdjust 9 例 / diet 前端 40 例(SRS 已定稿待实现收敛) |
| YELLOW | — | — |
| GREEN | 5 | 状态机 5 键沿用全 GREEN |
| DONE | +1 | signature.canvas2d.rewrite 用例台账置「已实现」(实现 c0db9643c 经 ff76e1607 09:07 合入 cfclub,定向复跑 14/14 绿) |
| 数据源 | 读取键数 | 是否正常 | 备注 |
|---|---|---|---|
| 需求侧(SRS) | 200 份 specs | 正常 | 窗口内零新增;DOC-2026-11-09-signature-canvas2d-rewrite 由 RED 转实现 |
| 测试用例(test-cases) | 13 文件 / 806 条 TC | 正常 | 本轮更新 signature.md 状态段 |
| E2E 用例 | 28 例(admin 5 + frontend 6 + health 13 + shop 4) | 正常 | 100% 通过 |
| 后端 surefire | 336 类 / 2829 例 | 正常 | 336 源含 @Test = 336 XML,完整性 336/336、静默丢失 0 |
| langgraph pytest @251 | 43 例 | 正常 | 251 派发成功(95.46s) |
| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
|---|---|---|---|---|---|---|
7bd633140 |
R101 汇报 + blockers(B-81/B-91 闭环、B-69/B-89/B-90 更新、B-92~B-94 新增)+ tests/test-cases/signature.md 状态 |
报告 | 文档(4 文件,+329/−2) | cfclub | ✅ 已推 origin/cfclub(329b202b5..7bd633140,0/0) |
结果有变触发推送 |
| 序号 | 建议标题 | 问题描述 | 根因分析 | 建议方案 | 优先级 | 状态 |
|---|---|---|---|---|---|---|
| 1 | langgraph analyze checkpointer(连续第 9 轮) | test_analyze.py 2 例 500(Checkpointer requires ... thread_id) |
analysis_graph.py:96 MemorySaver() + analyze.py:35 ainvoke 无 config |
去 MemorySaver 或显式传 thread_id |
P0 | 待评估 |
| 2 | 251 LLM 凭据 + LLM 调用超时(第 3 轮) | 251 pytest intent 4 例降级 CHAT(api key ****ocal is invalid);live chat 45s / analyze 90s 零字节超时(health 22ms 正常) |
251 侧 LLM 凭据失效 + 调用无 timeout/熔断(B-84 同源) | 注入有效 etotem/deepseek 凭据;所有 LLM/检索调用加 timeout+熔断 |
P0 | 待评估 |
| 3 | /api/mind/** 4 端点公开白名单(连续第 8 轮) |
本轮线上复测:/api/mind/alert/active、/api/mind/alert/checkin-alerts、/api/mind/traditional/mirror、/api/mind/traditional/compatibility 匿名 全部 200 |
JwtInterceptor.java:79-82 在 PUBLIC_PATHS |
4 条移入 LOGIN_REQUIRED_PATHS → 匿名 401 |
P1 | 待评估 |
| 4 | 线上可用性:/api 全站 502 窗口 |
10:20 起全站 /api/*(含 /api/system/health、/api/admin-auth/login)与站点根 / 均 502,10:26 自恢复(约 5~6 分钟) |
openresty 上游不可达(滚动重启/发布窗口),与 B-72 同族 | 发布/重启改蓝绿或健康检查灰度;恢复窗口自动告警 | P1 | 待评估 |
| 5 | diet-recommendation 7 条需求前端 40 例长期红 | REQ1~REQ7(去顶部标题/视图互斥/4Tab/分页/「我」/生成 loading/共餐人)全部未实现,recommendation.vue 对 currentTab/pagedFoods/loadMore/confirmParticipants 命中 0 |
SRS 2026-11-08-diet-recommendation-polish.md 标「RED 入池待派发」,实现未派发 |
派发 diet.recommendation.uiRework + participantSelect 两个能力键,按 TDD RED→GREEN 收敛 |
P1 | 待评估 |
| 6 | Guhe v2 契约 41 例待全量复验 | 本轮基线 ac4d7e97f 上 Guhe 9 类 41 例红(TDD 预期 RED);实现 ReportParserDispatchService(S-cfc-84/90)在 origin/cfclub 66873f066 已合入但不在本轮基线 |
跑测窗口内研发推进 5 提交(含 2 个生产文件 +155 行) | 下轮以 66873f066 为基线全量复跑,预期 41 例转绿;若仍红则按缺陷派单 |
P1 | 待评估 |
| 7 | platform_fee 列截断 |
GuideModuleIntegrationTest.testGuidePackageCreationFlow:Data truncation: Out of range value for column 'platform_fee' |
schema 列定义与代码写入值不一致 | 核验列定义/迁移脚本并统一精度 | P2 | 待评估 |
| 8 | EnergySystem 6 例 / PlannerBind 3 例 500·403 | 集成流 EnergySystemFlowTest 6 例 500、PlannerBindInviteFlowTest 3 例 403(含 1 例 doNothing() 误用属测试侧) |
需研发确认集成流依赖与角色闸门口径(连续 8 轮未决) | 研发确认后测试侧同步装置:A 类自修、B 类派单 | P2 | 待评估 |
| 阻塞项 | 影响范围 | 阻塞类型 | 处置进展 | 需要协调 |
|---|---|---|---|---|
| B-92(新增) | 隔离工作树 / 大盘产物写入 | 环境 | 本机 D 盘 293G/294G(可用 455MB),git worktree add 直接 No space left on device → 无法建隔离副本做「实现分支定向复验」 |
运维清理历史 _wt_* 树(7 个,各约 1GB)或扩容 |
| B-93(新增) | 线上全链路 | 运维/发布 | 502 窗口 10:20~10:26 已自恢复;同窗口浏览器用例已跑完(10:00~10:06),未受影响 | 运维确认是否为发布窗口 |
| B-89(第 3 轮) | admin 浏览器节点 | 运维 | 189 :22/:4090 全拒 → 本机单节点串行跑 admin+frontend(28/28 绿) |
运维恢复 189 或提供等价节点 |
| B-90(第 2 次复证) | AI 管家线上主链路 | 研发/运维 | 251 chat/analyze 均超时无响应(health 正常) |
研发+运维(LLM 凭据 + 超时) |
| B-65(第 9 轮) | AI 报告解析 | 研发 | 未修(源码未变) | 研发实现 |
| B-69(第 8 轮) | 鉴权边界 | 研发 | 本轮线上 4 端点匿名 200 复证 | 研发实现 |
| B-82 / B-84 | langgraph 意图分类 / 套件非终止 | 环境/测试 | 本轮以 /api/shell 直读绕开 LLM 转述(B-94),派发恢复 |
251 注入 LLM 凭据 |
| 计划项 | 预计完成时间 | 前置依赖 | 备注 |
|---|---|---|---|
以 origin/cfclub 66873f066 为基线全量复跑后端 |
下轮 | D 盘空间(B-92) | 预期 Guhe 41 例转绿 → 后端 ≈97.8% |
| 后端 49 例非预期红逐类归因与 A 类自修 | 下轮 | 无 | 优先 CfCommissionServiceSettleTest 8 例(未 stub 档位查询)与 ArticleWorkflowTest 3 例(文案过期) |
| diet 40 例跟踪 RED→GREEN | 下轮 | 研发派发 2 个能力键 | 前端通过率 89.9% 的天花板 |
| 251 langgraph 复验(凭据修复后) | 下轮 | 运维注入 LLM 凭据 | 本轮 43/32/11 已可稳定取回 |
/admin + /frontend)| 目标 | 节点 | 用例 | 结果 | 说明 |
|---|---|---|---|---|
http://cfc.iwintrue.com/admin |
189(失联 B-89)→ 本机降级 | admin-live 5 | ✅ 5/5(2.1m) | TC-A-U01~U05,含 U04 真实登录(滑块+凭据)与 U05 菜单遍历;workers:1 串行 |
http://cfc.iwintrue.com/frontend |
本机 | frontend-live 6 | ✅ 6/6(53.2s) | TC-F-U01~U06 游客只读链路 |
| 健康鉴权契约 | 本机 | health 13 | ✅ 13/13(11.9s) | 华为/小米 10 端点 + 健康方案 3 端点全 401(B-61 维持闭环) |
| 商城排序契约 | 本机 | shop 4 | ✅ 4/4(11.0s) | price asc/desc/默认/非法列白名单 |
每节点仅跑一个浏览器自动化任务:189 失联 → 本机串行执行两个 UI 任务 + 两个契约任务。
派发通道:opencode @ http://192.168.16.251:4096(Basic Auth)
会话:ses_e41f57acdffeAuONBYaPOTEpRo(provider=etotem / model=deepseek)
执行:cd /sc-data/cfc/cfc-langgraph && pytest tests --ignore=tests/qna --ignore=tests/test_chat.py -q --tb=line
节点仓库:09ba334af(branch cfclub)
结果:43 collected / 32 passed / 11 failed / 95.46s ← 与 R97·R99 逐例零漂移
11 红分布(与本轮 live 探测交叉印证):
| 红例分组 | 例数 | 归因 | 本轮 live 证据 |
|---|---|---|---|
test_analyze.py |
2 | B-65(Checkpointer requires thread_id → 500) |
live POST /api/v1/analyze 90s 无响应 |
test_auto_tag.py |
5 | B-74/B-82:chat 端点 500(LLM key 401) | — |
test_intent.py |
4 | B-82:意图分类降级 CHAT(api key ****ocal is invalid) |
— |
live 探测:/health 200(22ms)、/api/v1/chat 45s 零字节超时、/api/v1/analyze 90s 零字节超时 → B-90 第 2 次复证(与 pytest 同源:LLM 凭据失效 + 无超时)。
关键改进(B-94):本轮改用
/api/session/{id}/shell+/api/shell/{id}/output直读命令输出,不再依赖 agent 用自然语言转述结果 —— R98/R99/R100 的「轮询 780s 取不到 JSON」「agent 只回 reasoning 不回报文」全部消失,95.46s 拿到确定性结果。
| 指标 | 数值 |
|---|---|
| 命令 | mvn -o -B -DskipTests=false clean test(JDK 1.8.0_25 + Maven 3.9.9) |
| 结果 | 336 类 / 2829 例 / 2726 过 / 88F + 11E + 4S = 96.36%(剔 skip 96.49%) |
| 红类 / 红例 | 29 类 / 99 例 |
| 编译 | main 2112 源 0 错;test 342 源 0 错 |
| 完整性 | 336 源含 @Test = 336 XML,沉默 0 |
| 恒等式 | @Test 2819 + 参数化展开 26 − @Disabled 4 − 早退截断 12 = 2829,误差 0 |
| 对比 | R97(94.75%/143 红例)→ +1.61pp / 红例 −44 |
99 红例三层归因:
| 层 | 例数 | 明细 |
|---|---|---|
| 预期 RED(TDD 契约,SRS 已定稿) | 50 | Guhe 9 类 41(EvidenceIsolate 11 / LowSideRuleLoad 7 / V2Route 5 / KbQueryLowSidePatch 4 / LowSideAggregate 4 / ReportPersonalAssert 4 / LowSideNoSupplement 3 / VersionSplit 3)+ DietFoodHealthAdjustContractTest 9 |
| A 类(测试装置,可自修) | 27 | CfCommissionServiceSettleTest 8(未 stub 档位查询)、ArticleAutoTagServiceTest 4(执行器断言与实际调用路径不符)、DimensionScoreServiceImplTest 4E(No value present,Optional 未桩)、ArticleWorkflowTest 3(文案过期:仅已驳回 vs 仅已驳回或已撤回)、PlannerBindInviteFlowTest 1(doNothing() 用于非 void)、ServiceRoleApproveTest 2E、UserServiceWechatLogin(Contract) 2、TaskPlanServiceTest 1、TeamProfitCronContractTest 1、GrowthRecordSyncFlowTest 1 |
| B 类(产品/实现,需研发) | 22 | EnergySystemFlowTest 6(500)、PlannerBindInviteFlowTest 3(403 角色闸门)、DimensionRegistryMapContractTest 3(契约与实现不一致)、GrowthRecordSyncFlowTest 2E、MindFortuneControllerTest 1(B-69 401→实得 400)、GuideModuleIntegrationTest 1(platform_fee 截断)、其余 6 类各 1 |
修完 A 类 27 例 → 后端 97.31%;叠加 Guhe 41 例随实现转绿 → 98.76%(待下轮全量实证)。
| 集合 | 结果 | 依据 |
|---|---|---|
| cfc-frontend Jest | 26 套 / 383 过 / 40 红 / 3 跳(426) | 3 个失败套件全为 diet-recommendation:recommendation.participantSelect(8)、recommendation.uiRework(29)、recommendation.healthAdjustUi(3)→ REQ1~REQ7 未实现(TDD RED);签名 canvas2d 9 例已由红转绿 |
| cfc-web Jest | 17 套 / 116 全绿 | 41.9s |
| 根级 tests Jest | 3 套 / 7 过 / 16 红(23) | B-16/B-36:缺 ADMIN_PHONE/CFC_API_TOKEN 夹具,plan-chain/mini-games-api 打真服务 401/500 |
| 签名定向 | 14/14 绿 | npx jest __tests__/pages/signature → B-81 闭环判据达成 |
| 项 | 变更 | 处置 |
|---|---|---|
DOC-2026-11-09-signature-canvas2d-rewrite |
RED → 已实现(ff76e1607 09:07 合入 cfclub) |
tests/test-cases/signature.md 状态段更新为「已实现(GREEN,第 101 轮)」,附 14/14 实测证据 |
2026-11-08-diet-recommendation-polish.md(REQ1~REQ7) |
仍为 RED(实现未派发) | 无用例缺口,40 例已可执行、持续红 → 转研发建议 #5 |
2026-11-09-diet-recommendation-health-questionnaire-adjust.md |
仍为 RED | 后端契约 DietFoodHealthAdjustContractTest 9 例已就位、预期红 |
| 窗口内新增 SRS | 0 份 | 无新建用例义务 |
结论:⚠️ 不通过(有条件)
| 门禁 | 判据 | 实测 | 是否达标 |
|---|---|---|---|
| G1 用例通过率 | ≥95% | 全量 95.01%、后端 96.36% | ✅ |
| G2 红例数 | ≤20 | 166(后端 99 / 前端 40 / 根级 16 / langgraph 11) | ❌ |
| G3 前端套件 | 全绿 | 383/426(40 红) | ❌ |
| G4 管理端 | 全绿 | 116/116 | ✅ |
| G5 后端完整性 | 无沉默 | 336/336 XML、编译 0 错 | ✅ |
| G6 浏览器 E2E | 全通过 | 28/28(admin 5 + frontend 6 + health 13 + shop 4) | ✅ |
| G7 langgraph | 0 红 | 11 红 | ❌ |
| G8 鉴权契约 | 全 401 | health 13/13;/api/mind/** 4 端点 200 |
⚠️ 部分 |
| G9 SRS 可追溯 | TC 锚点 ≥80% | 61/806 = 7.6% | ❌ |
| G10 节点分派 | 按指令分派 | 251 ✅ / 189 ❌(本机降级) | ⚠️ 部分 |
| G11 CI 门禁 | blocking | 仍为软门禁(B-40) | ❌ |
| G12 资产入库 | 新资产已入库 | signature 台账已更新;无新增用例 | ✅ |
未实测项(不计入通过):覆盖率/变异(无 JaCoCo、PIT 不可用)、性能压测、DAST/SCA(未授权联网)、无障碍/多浏览器矩阵、真机(iOS/安卓)、UAT/BDD/探索性、tests/test_chat.py(B-84 无超时,主动排除)、tests/qna(死资产)。
复评条件(全部满足方转「通过」):
test_analyze.py 2 例转绿 + live analyze 连跑 3 次 200。/api/mind/** 移入 LOGIN_REQUIRED_PATHS,线上匿名 401。本轮 vs R100 存在方向性变化,触发推送与通知:
/api/shell 使结果确定性取回(B-94)。→ 本报告 + blockers + signature 台账 commit 并 push origin/cfclub;Agent Mail 不可用,以 blockers.md + 本报告 + 研发交接通知为研发通知载体。
本报告提交至 origin/cfclub(docs/tdd/orchestration/),并同步更新 docs/tdd/test/blockers.md。