Prechádzať zdrojové kódy

docs(tdd): 测试负责人 R96 执行汇报 2026-11-09 0431 — 前端 41→49 红(S-cfc-97 新增 8 RED 契约) + 251 再断(B-55) + B-83 新增 + B-81 续催

E2E Test Bot 4 dní pred
rodič
commit
f985f9274c

+ 84 - 0
docs/tdd/orchestration/report-test-2026-11-09-0431.md

@@ -0,0 +1,84 @@
+# 测试负责人汇报 · R96(2026-11-09 04:31,本自动化闭环)
+
+> 执行明细与证据见本文;本文件随 blockers.md 一并 push 至 origin/cfclub 作为研发通知载体(Agent Mail 不可用)。
+
+## 一、执行总览(R96 vs R95 基线)
+
+| 维度 | R96 结果 | R95 基线 | 变化 |
+|---|---|---|---|
+| 后端全量(JUnit) | **承袭 R95:2753 / 2634 过 / 115 红 / 4 skip = 95.68%**(本节点无 Maven,未重跑) | 同左 | 未重跑;上游 S-cfc-106 已修 GuheKbFieldExpose 6/6,未本地验证 |
+| cfc-frontend jest | **423 / 371 / 49 / 3 skip** | 408 / 365 / 41 / 2 | **变化**:+15 例 / +6 过 / **+8 红** / +1 skip |
+| cfc-web jest | **116 / 116 / 0 / 0** | 116 / 116 | 零漂移 |
+| tests/ 根级 jest | 承袭 R95 **23 / 7 / 16 / 0**(B-36 黑盒环境依赖,本轮未重跑) | 同左 | 零漂移(承袭) |
+| 浏览器 live(admin+frontend+shop) | **15/15 全绿** | 15/15 | 零漂移 |
+| 浏览器 health-contract | **13/13 全绿** | 13/13 | 零漂移 |
+| 浏览器 D/X 桥接 | 承袭 R95 **2 skipped**(404 未部署) | 2 skipped | 零漂移(承袭) |
+| langgraph 本机 pytest(`--ignore=tests/qna`) | **44 / 32 / 12**(EXIT 1,169.7s) | 44 / 32 / 12 | 零漂移 |
+| **langgraph 251 实派 pytest** | **不可用**(251:9000/4090 CLOSED,B-55 本轮再断) | 44 / 36 / 8 | **回退本机 venv 兜底**(权威口径缺失) |
+| 251 `chat` live 端到端 | 未探活(251 CLOSED) | 200 完整 JSON(B-77 已闭环) | 本轮不可验 |
+
+## 二、前端 49 红归因(关键,非回归)
+
+前端由 R95 的 **41 红 → 本轮 49 红(+8)**,逐文件精确拆分(jest `●` 失败子弹计数):
+
+| 文件 | 红数 | 归属 | 性质 |
+|---|---|---|---|
+| `recommendation.uiRework.test.js`(S-cfc-79) | 25(R95=24,+1) | diet 推荐改版 REQ1~REQ7 | 预期 RED(待实现) |
+| `recommendation.participantSelect.test.js`(S-cfc-80) | 8 | 共餐人选择 REQ7 | 预期 RED(待实现) |
+| `signature.canvas2d.test.js`(B-81 / S4-1·S4-2) | 9 | 签名 v2 竖屏直签+canvas2d | 预期 RED(v2 实现未推,S-cfc-116 入池待实现) |
+| `recommendation.healthAdjustUi.test.js`(**S-cfc-97,本轮新增**) | **8** | 推荐食材健康问卷调整提示条(B1-B3) | **新增预期 RED 契约** |
+
+**结论**:+8 红全部来自 **S-cfc-97 新增 RED 契约**(commit `eea38d6ec`,溯源 SRS `docs/superpowers/specs/2026-11-09-diet-recommendation-health-questionnaire-adjust.md` §2/§3/§4),属「SRS 变更 → 测试用例更新」闭环产出的预期 RED,**非生产回归**。B-81 测试侧装置修正(commit `7d7c0b23a`)未改变红数(仍 9 红),因签名 v2 实现尚未合入(研发负责人 04:10 轮记「签名 v2 实现未推」)。
+
+## 三、本轮节点/通道状态
+
+- **本机(204)**:Chromium-1228 就绪,浏览器单节点串行(live 15 + health 13 顺序执行,符合「每节点单任务」纪律)。
+- **192.168.16.189**:`:4090` OPEN 但 opencode 无 LLM 凭证 → 派发通道仍断(B-56,运维需在 189 配 apiKey 重启)。
+- **192.168.16.251**:`:9000`/`4090` 本轮 **CLOSED**(探活 `251:9000=404`/`251:4090=closed`)→ **B-55 再断**,langgraph 251 实派指令本轮无法落地,回退本机 venv(44/32/12)。251 能力维度(chat/pytest)本轮不可验。
+- **cfc.iwintrue.com:443** OPEN(admin/frontend/health 浏览器套件实测 28/28 全绿)。
+
+## 四、未闭环 P0/P1 催办(研发)
+
+| 优先级 | 编号 | 问题 | 状态 |
+|---|---|---|---|
+| **P0** | B-65 | langgraph `/api/v1/analyze` 恒 500(checkpointer 缺 thread_id) | 连续第 6+ 轮未修(本机 2 例 + 251 同因) |
+| **P0/P1** | B-55(再断) | 251:9000/4090 CLOSED,langgraph 派 251 通道中断 | 本轮新增,运维放通端口 |
+| **P1** | B-69 | `/api/mind/` 匿名仍非 401(缺 LOGIN_REQUIRED_PATHS) | 连续多轮未修 |
+| **P1** | B-81(S-cfc-116) | 签名 v2 契约 9 例 RED(S4-1/S4-2 未实施) | 待实现 |
+| **P1** | B-73(S-cfc-79) | diet uiRework 25 例 RED | 待实现 |
+| **P1** | S-cfc-80 | participantSelect 8 例 RED | 待实现 |
+| **P1(新)** | **B-83(S-cfc-97)** | healthAdjustUi 8 例 RED(健康问卷调整提示条) | **本轮新增,待实现** |
+| P1 | B-74 | langgraph conftest ASGITransport 不触发 startup(auto_tag5+chat1 500) | 测试侧自处置,251 已证明非生产缺陷 |
+| 环境 | B-54 | 本机 venv LLM key 401(intent 4 例) | 派 251 消除 env 假红(本轮 251 不可派) |
+
+## 五、测试侧自处置
+
+- 浏览器套件用隔离配置(live/health)顺序串行,未触碰主配置(B-80)。
+- langgraph 251 不可派 → 本机 venv 兜底,结果按 R95 口径「权威以 251 为准」标注缺失。
+- 前端 S-cfc-97 新增 RED 契约已随源码入库,符合 SRS→用例更新闭环。
+- tests/ 根级 jest(23/7/16,B-36 黑盒依赖)本轮承袭 R95,未重跑(环境依赖未变)。
+
+## 六、对照用户双目标
+
+- **目标① 所有用例通过**:❌ 未达成。可本机执行子集 = 前端 423(371 过/49 红)+ web 116(全绿)+ langgraph 44(32 过/12 红)+ 浏览器 28(全绿);后端 2753 例本机不可验证(115 红承袭)。仍有 49+12+后端红未绿。
+- **目标② 覆盖全部 SRS+用户场景含异常流**:❌ 未达成。SRS 需求池未启用(0 锚点);795 文档结构化用例/用户场景零执行验证;异常流(TC-*-E/-P)仅文档标注无执行级验证;后端 handler 覆盖缺口承袭。
+
+## 七、门禁结论
+
+**不通过**(双目标均未达成)。但本轮为「预期 RED 增长」型变化(S-cfc-97 新增 8 例契约),非生产回归;可验证子集稳定(web/浏览器 28/langgraph 本机均零漂移)。
+
+## 八、变更触发(用户规则:结果有变提交远程+通知研发)
+
+- 本轮结果**有变化**(前端 41→49 红,源于 S-cfc-97 新增 RED 契约 + uiRework 24→25)。
+- 动作:本报告 + blockers.md(B-83 新增 / B-55 再断登记 / B-81 更新)commit 并 push origin/cfclub;Agent Mail 不可用,以仓库报告+台账为研发通知载体。
+- 研发重点催办:实现 S-cfc-97(B-83)→ healthAdjustUi 8 例转绿;实现签名 v2(S-cfc-116/B-81)→ 9 例转绿;修复 B-65(P0)/B-69;运维放通 251(B-55)使 langgraph 派发恢复。
+
+## 九、证据清单
+
+- 前端:`_r96_jest_fe.log`(423/371/49/3)
+- 管理端:`_r96_jest_web.log`(116/116)
+- langgraph 本机:`_r96_pytest.log`(44/32/12)
+- 浏览器 live:`_r96_browser_live.log`(15/15)
+- 浏览器 health:`_r96_browser_health.log`(13/13)
+- 台账:`docs/tdd/test/blockers.md`(B-83 新增、B-55 再断、B-81 更新)
+- 基线对照:R95 `docs/tdd/orchestration/report-test-2026-11-09-0320.md`

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

@@ -123,3 +123,6 @@
 | B-81(第 95 轮新增) | 签名 v2 重写(S4-1 竖屏直签 + S4-2 canvas 2d)契约 RED 9 例 | 研发 | **P1 预期 RED(第 95 轮,2026-11-09 02:1x 实测)**。SRS 变更 `DOC-2026-11-09-signature-canvas2d-rewrite`(**取代 11-08 横屏方案,整份作废**)已入库:S4-1 弃横屏改竖屏直签(删 enterLandscape/restorePortrait/h5DegradeHint/.rotate-hint)、S4-2 canvas 重写 `type="2d"`(`createSelectorQuery().in(this).select().fields({node:true})` + `ctx.stroke()` 同步绘制 + `canvasToTempFilePath({canvas})` + `clearRect`)。测试侧已按 SRS 变更更新用例:新增 `signature.canvas2d.test.js` **11 例(9 RED 新契约 + 2 GREEN 保留契约**:computeCanvasHeight 保留、组件 props/emit 不变),旧横屏 `signature.landscape.test.js` 改名 `.superseded.js` 归档(验证已作废 S1/S2/S3 的 3 例假红移除,不参与 jest 匹配)。当前实现仍为旧横屏+旧 canvas → 9 RED 均归因「S4-1/S4-2 未实施」,待研发实现后转绿。闭环:`signature.canvas2d.test.js` 9 RED 转绿 + `tests/test-cases/signature.md` 状态置已实现 | 测试负责人(第 95 轮实测登记) | 2026-11-09 02:20 | 待处理(P1,预期 RED,待实现) |
 | B-82(第 95 轮 · 环境差异) | langgraph intent 分类 4 例:251 绿 / 本机红(API key 401) | 环境/运维 | **环境差异记录(第 95 轮,2026-11-09 02:50)**。`test_intent.py` 4 例(classify analysis/recommend/mind/health):251 实跑 **4/4 绿**(模型可用);本机 4 红(`Your api key: ****ocal is invalid` → 意图分类失败默认 CHAT,B-54 同源)。非生产缺陷、非回归——同 HEAD 同源码,差异仅模型凭据可用性。建议:本机 venv 注入有效 LLM 凭据后 intent 4 例预期转绿;**权威口径以 251 派发结果为准(36 过/8 红)** | 测试负责人(第 95 轮实测) | 2026-11-09 02:55 | 待处理(环境,低优先) |
 | B-75-Update(第 95 轮 · 作废) | signature.landscape.layout 被 v2 重写取代 | 测试(登记) | **作废(第 95 轮,2026-11-09 02:05)**。旧 SRS `DOC-2026-11-08-signature-landscape-fix` 已被 `DOC-2026-11-09-signature-canvas2d-rewrite` **整份取代(含 B-75 的 S1/S2/S3 实现 `adb032a61` 作废,不再按旧任务书实施)**。能力键由 `signature.landscape.layout` 迁移为 `signature.canvas2d.rewrite`(B-81)。旧契约 7 例(TC-SIG-01~04b/-03E)中 3 例(02/04/04b)验证已作废需求 → 已从执行范围移除(归档 `.superseded.js`),其余 4 例能力(computeCanvasHeight 竖屏计算、getPos 兜底)并入 v2 契约保持守护 | 测试负责人(第 95 轮登记) | 2026-11-09 02:05 | 已作废(由 B-81 接替) |
+| B-83(第 96 轮新增) | `cfc-frontend` S-cfc-97 `diet.recommendation.healthAdjustUi` 8 例 RED 契约测试 | 研发 | **P1 预期 RED(第 96 轮实测,2026-11-09 04:31)**。`cfc-frontend/__tests__/diet/recommendation.healthAdjustUi.test.js`(commit `eea38d6ec`,S-cfc-97)随 SRS 变更 `docs/superpowers/specs/2026-11-09-diet-recommendation-health-questionnaire-adjust.md`(§2 调整分级语义 blocked/warning/boost/normal、§3 前端 B1-B3、§4 验收 V/C-1/6)新增;本轮 jest 实跑 **8 失败**(B2 食物卡片 adjustment 提示条 5 + B3 filteredFoods 分组 3)。均为「功能未实现」类断言。非既有用例回归;前端其余 371 通过用例零转红。性质 = 预期 RED(S-cfc-97 处于 RED 态,待研发实现 `recommendation.vue` 调整提示条与分组)。影响:用户目标①暂未达成(8 红);但「SRS 变更→测试用例更新」闭环已满足。通知研发:实现 S-cfc-97 使 8 例转绿。闭环:研发实现 → 该套件 8/8 全绿 + 状态机 S-cfc-97 置 YELLOW | 测试负责人(第 96 轮实测登记) | 2026-11-09 04:31 | 待处理(P1,预期 RED,待实现) |
+| B-55-Reopen(第 96 轮再断) | 251:9000/4090 CLOSED,langgraph 派 251 通道再次中断 | 运维 | **P1 派发阻断(第 96 轮实测,2026-11-09 04:31)**。探活 `192.168.16.251:9000` → HTTP 404、`192.168.16.251:4090` → closed(连接拒绝)。R95 曾记 B-55-Close(251:9000 服务恢复、llm/chromadb/java_backend 全 ok),本轮复探确认服务维度再次下线。影响:用户指令「langgraph 部署于 251 应派发该节点」本轮无法落地,langgraph 测试退回本机 venv 兜底(44/32/12,其中 intent 4 例因本机 LLM key 401 环境红,权威口径缺失)。闭环:运维放通 251:9000(uvicorn langgraph 服务)+:4090(opencode),使 `cfc-langgraph` 源码节点可实派 pytest | 测试负责人(第 96 轮实测) | 2026-11-09 04:31 | 待处理(运维:放通 251 端口) |
+| B-81-Update(第 96 轮 · 连续第 2 轮) | 签名 v2 重写(S4-1/S4-2)契约 9 例 RED 未变 | 研发 | **连续第 2 轮未修(2026-11-09 04:31)**。本轮 jest 实跑 `signature.canvas2d.test.js` 仍 **9 失败 / 2 通过**(TC-SIG2D-01~07 + 01b/01c/03b),源码级确认 `signature.vue`/`hand-signature.vue` 仍为旧横屏+旧 canvas 实现(S4-1 竖屏直签、S4-2 `type="2d"` 重写均未落地)。研发负责人 04:10 轮记「签名 v2 实现未推(待 08:15 派)」,S-cfc-116 已入池。闭环判据不变:9 RED 转绿 + `tests/test-cases/signature.md` 状态置已实现 | 测试负责人(第 96 轮复现登记) | 2026-11-09 04:31 | 待处理(P1,预期 RED,待实现) |