Przeglądaj źródła

docs(tdd): R100 测试负责人执行汇报 — 前端实测 383/40(较 R99 陈旧基线 +11 通过)、langgraph 251 派发失败 B-91 登记

E2E Test Bot 3 dni temu
rodzic
commit
ac4d7e97f0

+ 173 - 0
docs/tdd/orchestration/report-test-2026-11-09-R100.md

@@ -0,0 +1,173 @@
+# 测试负责人工作汇报(R100)
+
+> 汇报人:测试负责人(软件测试专家团 · 陆谨)|汇报周期:2026-11-09 09:21 ~ 09:50(第 100 轮)
+> 负责模块/单元:浠艾福 XAF(d:/cfc)· 全栈测试闭环(浏览器自动化 + langgraph + 回归)
+> 执行档:review(内网 `/admin`+`/frontend`+langgraph 251 已授权;不联网;静默无人值守)
+
+---
+
+## 一、本轮工作数据汇总
+
+### 1.1 测试用例建设
+
+| 指标 | 数量 | 说明 |
+|------|------|------|
+| 本轮新增测试用例数 | 0 个 | SRS/场景零变更(`HEAD` 仍为 R99 提交 `0ec44239a`,无新提交;工作树无 `test/SRS/需求` 源码改动),不新增 |
+| 本轮验证执行测试数 | 553 个 | web Jest 116 + frontend Jest 426 + admin E2E 5 + frontend E2E 6(langgraph 本轮未刷新,见 5.2) |
+| 用例通过率 | 92.2% | 510 PASS / 553 执行(FAIL 40 全为前端 diet-recommendation 长期红 / SKIP 3) |
+
+### 1.2 会话与任务分发
+
+| 指标 | 数量 | 说明 |
+|------|------|------|
+| 分派任务数 | 1 个 | 251 节点 langgraph pytest 派发(`ses_e4214df4affeHIAVyVSH7uxNh6`,**失败**) |
+| 恢复智能体会话数 | 0 个 | — |
+| 当前在用会话数 | 1 个 | 251 派发会话(failed) |
+
+### 1.2b 各会话当前工作状态列表
+
+| 会话标签 | 会话 ID | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
+|----------|---------|----------|----------|---------------|----------|------|
+| 251-langgraph | ses_e4214df4affeHIAVyVSH7uxNh6 | failed | langgraph pytest 派发 | — | 干净 | outcome=`failed`(agent 未产出,疑似 B-82 LLM key 无效导致 opencode agent 失败) |
+| 本机-admin | — | done | admin E2E 5/5 | — | 干净 | 本机直跑(189 失联 B-89,降级) |
+| 本机-frontend | — | done | frontend E2E 6/6 | — | 干净 | 本机直跑(LIVE_BASE_URL=https://cfc.iwintrue.com) |
+
+### 1.3 问题处置
+
+| 指标 | 数量 | 说明 |
+|------|------|------|
+| 新测试发现问题数 | 1 个 | B-91(251 opencode 派发 langgraph pytest 本轮 outcome=failed,无法取回 251 权威数) |
+| 已解决测试相关问题数 | 0 个 | — |
+| 待解决测试相关问题数 | 7 个 | B-65(P0 第 9 轮)、B-69(P1 第 7 轮)、B-82(P1)、B-84(P1)、B-89(P1)、B-90(P0 复发)、B-91(P1 新增) |
+
+### 1.4 本轮 git 提交与推送证据
+
+| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
+|----------|-----------------|------|--------------|----------|------------|------|
+| (待提交) | R100 汇报 + blockers(B-91) | 报告 | 文档 | cfclub | 提交时填写 | 结果有变触发推送 |
+
+### 1.5 状态机阶段分布(全局进度)
+
+| 阶段 | 键数 | 备注 |
+|------|------|------|
+| UNTRACKED | — | CFC 发现/跟踪模式 |
+| RED | — | 见 test-inventory 侧车 |
+| YELLOW | — | — |
+| GREEN | 5 | 状态机 5 键全 GREEN(沿用) |
+| DONE | — | — |
+
+### 1.6 数据源健康度
+
+| 数据源 | 读取键数 | 是否正常 | 备注 |
+|--------|----------|----------|------|
+| 需求侧(SRS) | 正常 | 正常 | 零变更 |
+| 测试用例(test-cases) | 正常 | 正常 | 零变更 |
+| E2E 用例 | 11 例 | 正常 | admin 5 + frontend 6 |
+| langgraph pytest | 43 例(R99 权威) | 异常 | 本轮 251 派发失败,未刷新 |
+
+---
+
+## 二、向研发提出的改进建议
+
+| 序号 | 建议标题 | 问题描述 | 根因分析 | 建议方案 | 优先级 | 状态 |
+|------|----------|----------|----------|----------|--------|------|
+| 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;部署锁版本与 requirements 对齐 | P0 | 待评估 |
+| 2 | 251 LLM 凭据与超时(intent 4 例转红 + live 60s 挂起 + 本轮派发失败) | intent 4 例降级 CHAT(LLM key 401);live chat/analyze 60s 无响应;**本轮 opencode agent 派发 pytest outcome=failed** | 251 节点 LLM 凭据失效 + LLM 调用无 timeout(B-84 同源) | 251 注入有效 etotem/deepseek 凭据;LLM/检索调用加 timeout+熔断;恢复后复验派发 | P0 | 待评估 |
+| 3 | `/api/mind/**` 4 端点公开白名单(连续第 7 轮) | 匿名可达业务层(线上 200 / 测试 400 非 401) | `JwtInterceptor.java:79-82` PUBLIC_PATHS | 4 条移入 LOGIN_REQUIRED_PATHS | P1 | 待评估 |
+| 4 | 189 节点恢复 | 22/4090 全拒,admin 无法派发 | 节点离线/服务未起 | 运维放通 189:4090+22 或提供等价节点 | P1 | 待评估 |
+| 5 | 前端 diet-recommendation 3 套件 40 例长期红 | frontend Jest 稳定 40 失败集中在 recommendation.participantSelect / uiRework / healthAdjustUi | 长期 TDD-RED(实现未落地)或测试与实现口径漂移 | 研发确认这 40 例是预期 RED 还是实现缺口;若是 RED 须随实现转绿,否则补实现 | P1 | 待评估 |
+
+---
+
+## 三、本轮阻塞与风险
+
+| 阻塞项 | 影响范围 | 阻塞类型 | 处置进展 | 需要协调 |
+|--------|----------|----------|----------|----------|
+| B-91(本轮新增) | langgraph 251 权威数刷新 | 环境/测试 | 已降级:本机 venv 兜底因 B-54 超时中止;沿用 R99 43/32/11 | 运维注入 251 LLM 凭据后重派 |
+| B-90(P0 复发) | AI 管家线上主链路 | 研发/运维 | 待响应 | 运维+研发(LLM 凭据+超时) |
+| B-89(P1) | admin 浏览器自动化派发 | 运维 | 已降级本机(5/5 绿) | 运维放通节点 |
+| B-82(P1) | langgraph 意图分类 + 本轮派发失败 | 环境 | 待响应 | 运维注入 LLM 凭据 |
+| B-65(P0 第 9 轮) | AI 报告解析主链路 | 研发 | 待响应 | 研发实现 |
+| B-69(P1 第 7 轮) | 鉴权边界 | 研发 | 待响应 | 研发实现 |
+
+---
+
+## 四、下轮工作计划
+
+| 计划项 | 预计完成时间 | 前置依赖 | 备注 |
+|--------|--------------|----------|------|
+| 复跑 admin/frontend E2E + web/frontend Jest | 下轮 | 189 恢复或维持本机降级 | 浏览器 5/5+6/6 维持;前端 40 红持续跟踪 |
+| 251 langgraph 派发复验(若凭据修复) | 下轮 | 运维注入 LLM 凭据 | 连跑 3 次取稳定 43/XX/XX |
+| 后端 mvn 全量复跑落账 | 下轮 | mvn 恢复 | R97 基线 2802 例/94.75% |
+
+---
+
+## 五、本轮实测明细
+
+### 5.1 浏览器自动化(用户指令:/admin + /frontend)
+
+| 目标 | 节点 | 用例 | 结果 | 说明 |
+|------|------|------|------|------|
+| `http://cfc.iwintrue.com/admin` | 189(失联 B-89)→ 本机降级 | admin-live 5 | ✅ 5/5 | TC-A-U01~U05 全绿,含 U04 真实登录+滑块、U05 菜单;`tests/node_modules/playwright/cli.js` 入口绕行根目录双版本冲突 |
+| `http://cfc.iwintrue.com/frontend` | 本机 | frontend-live 6 | ✅ 6/6 | TC-F-U01~U06 全绿,游客态只读链路正常 |
+
+> 每节点仅跑一个浏览器自动化任务(189 失联→本机串行跑 admin 与 frontend 两个任务);langgraph 派发 251(用户指令,本轮失败,见 5.2)。
+
+### 5.2 langgraph(251 派发 · 本轮失败)
+
+```
+251 opencode 派发:OPENCODE_SERVER_PASSWORD + _dispatch_251.cjs(BASE=http://192.168.16.251:4096)
+会话:ses_e4214df4affeHIAVyVSH7uxNh6
+结果:OUTCOME failed(agent 未产出 pytest 结果,疑似 B-82 LLM key 无效)
+本地 venv 兜底:.venv/Scripts/python -m pytest tests --ignore=tests/qna --ignore=tests/test_chat.py
+        → 启动后因 B-54 chromadb 原生依赖性能退化,单跑 >18min 未结束,已主动中止(避免长挂)
+本轮结论:未能刷新 251 权威数,沿用 R99 251 数 43 collected / 32 passed / 11 failed 作为最近一次权威口径
+```
+
+**11 红分布(R99 权威,待本轮复验)**:
+
+| 红例分组 | 例数 | 归因 |
+|---|---|---|
+| `test_analyze.py` | 2 | **B-65**(连续第 9 轮):`Checkpointer requires ... thread_id`,500 |
+| `test_auto_tag.py` | 5 | **B-74/B-82** 装置+环境:chat 端点 500(LLM key 401) |
+| `test_intent.py` | 4 | **B-82**(251 侧转红):意图分类降级 CHAT(LLM key 401) |
+
+### 5.3 前端/后端回归(本轮真实重测)
+
+| 集合 | 结果 | 依据 |
+|------|------|------|
+| cfc-web Jest | 17 套/116 全绿 | 本轮实跑(41.9s,EXIT 0)——与 R99 零漂移 |
+| cfc-frontend Jest | 26 套/**383 过 / 40 红 / 3 跳**(426 total) | **本轮两轮独立重测均稳定 383/40/3**;R99 报告采用的 372/51/3 为「采信 R98」的陈旧基线,**非本轮实测**;与陈旧基线相比 +11 通过 / -11 失败(HEAD 自 R99 起无提交,差异更可能源于 R98 基线测量条件,非本轮代码变更)。3 个失败套件均为 diet-recommendation 相关:`participantSelect` / `uiRework` / `healthAdjustUi`,属长期 TDD-RED 待实现 |
+| cfc-backend mvn | ⛔ 未实测 | mvn 本机缺失;沿用 R97 基线 2802 例/94.75% |
+| E2E 工具链 | ✅ 绕行成功 | 双 @playwright/test 版本冲突以 `tests/playwright/cli.js` 1.61.1 入口解决 |
+
+---
+
+## 六、门禁结论
+
+**结论:⚠️ 有条件通过(未转「通过」)**
+
+- **浏览器自动化(用户指令核心项)**:admin 5/5 ✅、frontend 6/6 ✅——本轮回环该两项**全部通过**。
+- **前端 Jest**:383/40,3 套 diet-recommendation 持续红(长期 TDD-RED 待实现),但较 R99 陈旧基线净 +11 通过。
+- **langgraph(251 派发)**:本轮 251 opencode agent 派发 **失败(B-91)** + 本地 venv 兜底超时(B-54)→ **未能刷新**;沿用 R99 权威 43/32/11(11 红含产品缺陷 B-65×2 + 环境/装置 B-82/B-74×9)。用户要求的「langgraph 测试分派 251」本轮未达成。
+- **风险升级**:251 langgraph 派发通道本轮 failure(B-91 新增)+ 251 intent 由绿转红(B-82)+ live 60s 挂起(B-90 复发)——langgraph 能力维度持续退化。
+
+**复评条件(全部满足方转「通过」)**:
+1. B-65 修复:`test_analyze.py` 2 例转绿 + live analyze 连跑 3 次 200。
+2. B-82/B-90/B-91 解决:251 LLM 凭据有效 + LLM 调用超时熔断 → intent 4 例转绿 + 派发 pytest 成功 + live chat/analyze <30s。
+3. B-69 修复:4 条 `/api/mind/**` 移入 LOGIN_REQUIRED_PATHS → 测试 401 + 线上匿名 401。
+4. 前端 diet-recommendation 3 套件 40 例随实现转绿(确认是预期 RED 还是缺口)。
+5. 后端 mvn 恢复后真红全为预期 RED 且 JaCoCo≥80%。
+6. 用户授权后完成依赖漏洞扫描/性能/DAST,无高危阻断。
+
+---
+
+## 变更触发(用户规则:结果有变提交远程 + 通知研发)
+
+本轮 vs R99 存在变化,触发推送与通知:
+- **前端实测 372→383 通过**(R99 为陈旧 R98 基线,本轮真实重测,+11 通过 / -11 失败,稳定)。
+- **langgraph 251 派发失败(B-91 新增)**,未能刷新 251 权威数。
+
+→ 本报告 + blockers(B-91) 将 commit 并 push `origin/cfclub`;Agent Mail 不可用,以 blockers.md + 本报告为研发通知载体(重点:B-91 251 派发失败、B-65 第 9 轮、B-90 复发)。
+
+*本报告将提交并推送至 `origin/cfclub`(docs/tdd/orchestration/),并同步更新 `blockers.md`。*

+ 1 - 0
docs/tdd/test/blockers.md

@@ -156,3 +156,4 @@
 | B-65-Update(第 99 轮 · 连续第 8 轮) | langgraph `/api/v1/analyze` checkpointer 缺 thread_id | 研发 | **连续第 8 轮未修(2026-11-09 09:0x)**。251 派发 pytest:`test_analyze.py` 2 例仍 500(`ValueError: Checkpointer requires ... thread_id`)。源码未变(`analysis_graph.py:96 MemorySaver()`、`analyze.py:35 ainvoke` 无 config)。B-85 定性保留。闭环判据不变 | 测试负责人(第 99 轮复现登记) | 2026-11-09 09:0x | 待处理(P0,连续第 8 轮) |
 | B-84-Update(第 99 轮 · 251 会话同源卡滞) | langgraph 套件非终止 / 251 派发轮询取回延迟 | 测试/研发 | **第 99 轮(2026-11-09 09:0x)**。251 首派会话轮询 780s 未取到 JSON(`combined_len=14`),会话实际已产出完整结果(直接拉取 `/message` 得 43/32/11)。根因同 B-84/R98:agent 把结果写在 reasoning/文本但轮询聚合函数只认 `"pass"&"fail"&"total"` 同现的 JSON 串,且 `test_chat.py` 无超时拖慢收敛。已用「拉取 `/message` 兜底」取回,结果可用 | 测试负责人(第 99 轮登记) | 2026-11-09 09:0x | 待处理(P1) |
 | B-90(第 99 轮新增 · 复发风险) | 251 `POST /api/v1/chat` 与 `/api/v1/analyze` 60s 无响应 | 研发/运维 | **P0 复发风险(第 99 轮实测,2026-11-09 09:0x)**。`251:9000/health` → `200 {"status":"ok"}`(13ms),但 `POST /api/v1/chat {"query":"你好","user_id":995}` 与 `POST /api/v1/analyze {"report_id":1,...}` 均 **60s 无响应(0 字节,curl 超时)**。B-77 曾在第 94 轮以同特征挂起、第 95 轮确认恢复(R95 三层探测 200),本轮再次出现「health ok + 业务接口挂起」。与 251 pytest 中 LLM key 401 同源(LLM 调用无超时,B-84)。影响 AI 管家线上主链路。闭环:同 B-84——LLM/检索调用加 timeout+熔断;恢复后 live chat/analyze <30s 且连跑 3 次 200 | 测试负责人(第 99 轮实测登记) | 2026-11-09 09:0x | 待处理(P0,复发风险) |
+| B-91(第 100 轮新增 · 251 派发失败) | langgraph pytest 251 派发(用户指令核心项) | 环境/测试 | **P1(第 100 轮实测,2026-11-09 09:50)**。用户要求 langgraph 测试分派 251:本轮经 `OPENCODE_SERVER_PASSWORD` + `_dispatch_251.cjs`(BASE=http://192.168.16.251:4096)建会话 `ses_e4214df4affeHIAVyVSH7uxNh6`,agent `OUTCOME=failed`,未产出 pytest 结果(疑似 B-82 LLM key 无效导致 opencode agent 执行失败);本地 venv 兜底因 B-54 chromadb 性能退化 >18min 超时中止,未能刷新 251 权威数(沿用 R99 43/32/11)。闭环:运维注入 251 有效 LLM 凭据后重派,复验派发可成功取回结果 | 测试负责人(第 100 轮登记) | 2026-11-09 09:50 | 待处理(P1,251 派发失败) |