Просмотр исходного кода

test(r91): 测试负责人汇报 2026-11-08 20:08 — 前端 S-cfc-79 24 RED(B-73) + B-61 健康鉴权 live 闭环(13/13)

E2E Test Bot 4 дней назад
Родитель
Сommit
da322bff49
2 измененных файлов с 94 добавлено и 0 удалено
  1. 92 0
      docs/tdd/orchestration/report-test-2026-11-08-2008.md
  2. 2 0
      docs/tdd/test/blockers.md

+ 92 - 0
docs/tdd/orchestration/report-test-2026-11-08-2008.md

@@ -0,0 +1,92 @@
+# 闭环自动化测试 · TDD 测试负责人汇报(2026-11-08 20:08,第 91 轮,本自动化)
+
+> 角色/档位:cfc-tester 测试负责人;review 档,本机 204 直跑 + 远程派发尝试(189 派发失效 B-56 / 251:9000+4090 CLOSED B-55);langgraph 本地 venv 兜底;未联网、未改码、不派发远程 opencode(沿用历史口径)。
+
+## 一、实跑结果(与 R90 基线 @ 16:36 对比)
+
+| 维度 | 本轮结果 | R90 基线 | 判定 |
+|------|----------|----------|------|
+| cfc-frontend (Jest) | **358 pass / 24 fail / 1 skip**(22 suites,383 总) | 354 / 355(1 skip) | **有变化**(24 新增 RED 用例) |
+| cfc-web (Jest) | **116 / 116**(17 suites,EXIT 0) | 116 / 116 | 零漂移 |
+| cfc-langgraph (pytest, --ignore=tests/qna) | **32 pass / 12 fail**(44 collected,EXIT 1,237s) | 32 / 12 | 零漂移(251 CLOSED→本地 venv 兜底) |
+| 浏览器 admin-desktop (`cfc.iwintrue.com/admin`) | **5 / 5**(TC-A-U01~U05,1.8m) | 5 / 5 | 零漂移 |
+| 浏览器 frontend-mobile (`cfc.iwintrue.com/frontend`) | **6 / 6**(TC-F-U01~U06,50s) | 6 / 6 | 零漂移 |
+| 浏览器 shop-api | **4 / 4**(TC-S-U01~U04,7s) | 4 / 4 | 零漂移 |
+| 浏览器 health-api | **13 / 13**(TC-H-U07~U10 + TC-HP-U01~U03,6s) | 10 / 13(B-61 3 红) | **有变化(B-61 闭环)** |
+| 浏览器合计 | **28 / 28** | 28 / 28 | 零漂移(但 B-61 由 3 红转绿) |
+| cfc-backend 2398 @Test / 全量 Playwright | 本节点**不可执行**(无 Maven;远程派发失效) | 不可执行 | 同历史 |
+
+### 关键变化说明
+1. **前端 24 失败 = 新增 S-cfc-79 RED 契约测试**(commit `fb1e335e9`,462 行,28 例),随 SRS 变更 `49b4a71ef`(推荐食材页面改版 7 项需求 REQ1~REQ7)新增;24 失败覆盖 REQ1 去标题(2)/REQ2 互斥(3)/REQ3 4Tab(7)/REQ4 分页(12)/REQ5 `self-label="我"`(1)/REQ6 生成 loading(3)。**非既有用例回归**:354 通过用例零转红,纯为新增 RED 套件(功能未实现,属 TDD RED 态,待研发 YELLOW)。
+2. **health-api 13/13 全绿**:TC-HP-U01/02/03(`/api/health/plan/{adjust,attribution,generate}` 匿名 POST)本轮全部返回 **401**,B-61(P0 健康方案鉴权缺口,首现 R78)连续 7 轮后正式闭环(源码 `b3a02df92`/`de16f40b0` 合入 + 部署生效)。
+
+## 二、网络探活与节点
+- `cfc.iwintrue.com:443` OPEN(admin 302→login、frontend 302→login,可达)
+- `192.168.16.189:4090` OPEN 但 API 401 鉴权门控(B-56,派发失效)→ admin/frontend 浏览器套件本机 204 串行兜底
+- `192.168.16.251:9000/4090` **CLOSED**(B-55)→ langgraph 无法派发 251,本地 venv 兜底
+- Chromium:`%LOCALAPPDATA%\ms-playwright\chromium-1228` 已就位(B-51 类本轮回退后恢复,浏览器 4 套件独立重跑 28/28 印证)
+
+## 三、SRS / 测试用例更新核对(用户要求:SRS 变更须更新测试用例)
+- **SRS 变更**:`49b4a71ef` docs(specs) 推荐食材页面改版(去标题/Tab化/互斥选中/个人改「我」/生成提示/前端分页/共餐人选择,REQ1~REQ7)。
+- **测试用例更新**:`fb1e335e9` S-cfc-79 新增 `diet.recommendation.uiRework.test.js`(28 例,覆盖全部 7 项 REQ)。
+- **结论**:本轮 SRS 变更→测试用例更新闭环**已满足**(需求 7 项均有对应 RED 用例);新增 24 RED 待研发实现使绿。
+
+## 四、对照用户双目标
+- **目标① 所有测试用例全部覆盖并通过** ❌
+  - 前端 24 RED(S-cfc-79 预期 RED,待实现)+ langgraph 12 红(B-54 环境 10 + B-65 产品 2)+ 后端 2398 @Test 本节点不可验证(无 Maven / 远程派发失效)。
+  - 可本机验证子集 = 前端 358 + web 116 + lg 32 + 浏览器 28 = **534 例,其中 510 通过 / 24 失败(预期 RED)/ 12 失败(langgraph)/ 1 skip**。
+- **目标② 覆盖全部 SRS + 用户场景(含异常流)** ❌
+  - SRS 池未启用(0 锚点);`automation-status.md` 显示 795 文档用例/场景 已执行=0;后端约 130 handler uncovered;异常流 TC-*-E/-P 仅文档标注零执行。
+  - 本轮正向:S-cfc-79 已为 diet rework 7 项需求补齐 RED 用例,SRS→用例覆盖可见性提升。
+
+## 五、门禁结论
+**不通过**(双目标均未完全达成)。但较历史显著收敛:B-61(P0 安全缺口)闭环、浏览器 28/28 稳定、前端新增 RED 为预期 TDD 态、langgraph 零漂移。
+
+## 六、覆盖缺口清单(待闭环)
+| 缺口 | 现状 | 风险 | 建议测试设计 | 优先级 |
+|------|------|------|--------------|--------|
+| B-73 前端 S-cfc-79 24 RED | 功能未实现,24 红 | 用户目标①未达成 | 研发实现 diet rework → 套件 28/28 转绿 | P1 |
+| B-54 langgraph 环境 10 红 | chromadb DLL / LLM key | 报告解读/画像 AI 不可用 | 251 重建 chromadb 原生扩展 + 注入 LLM key 后派发 251 复跑 | P1 |
+| B-65 langgraph `analyze` 恒 500 | 缺 `thread_id` 配置 | 报告解读线上不可用 | 无状态去掉 MemorySaver 或 ainvoke 传 thread_id | P1 |
+| B-55 251 端口 CLOSED | langgraph 无法派发 251 | 丧失隔离验证节点 | 运维放通 251:9000/4090 | P1 |
+| B-56 189 派发失效 | 浏览器无法分派 189 | 单节点串行瓶颈 | 运维对齐 189 opencode API 版本路由 | P2 |
+| B-69 `/api/mind/` 匿名 400 | 安全口径漂移 | 私有数据端点口径不一致 | LOGIN_REQUIRED_PATHS 增 `/api/mind/` | P1 |
+| B-68 `totalFamilyMemberren` 拼写 | 管理端概览恒 0 | 功能不可用 | 后端双写 + 前端 3 处改读 | P1 |
+| 后端 2398 @Test 本机不可跑 | 无 Maven | 后端门禁缺口 | CI 接入后端 JUnit / 授权编译 | P1 |
+| SRS 池未启用 + 795 文档用例零执行 | 覆盖零验证 | 目标②缺口 | 启用 SRS 池 + 闭环 795 用例执行 | P0 |
+
+## 七、五要素问题清单(本轮新增/升级)
+### B-73 · 前端 S-cfc-79 24 例 RED(预期)
+1. **问题描述**:`diet.recommendation.uiRework.test.js` 24 例失败,覆盖推荐食材改版 7 项需求。
+2. **测试 bug 点**:`cfc-frontend/__tests__/pages/diet/recommendation.uiRework.test.js`(28 例,24 红)。
+3. **最优修改方案**:研发实现 S-cfc-79(`recommendation.vue` 去标题/Tab化/互斥/分页/`self-label="我"`/生成 loading;`DietRecommendationController` 契约对齐),使 24 例转绿。
+4. **修改目的**:达成用户目标①(全部用例通过)+ 闭环 SRS 变更后的契约验证。
+5. **闭环**:研发实现→jest 复跑该套件 28/28 全绿 + 状态机 S-cfc-79 置 YELLOW→GREEN。
+
+### B-61 · 健康方案鉴权缺口(本轮闭环)
+1. **问题描述**:`/api/health/plan/{adjust,attribution,generate}` 匿名 200 直通(应 401)。
+2. **测试 bug 点**:`tests/e2e-live/health-contract.spec.js` TC-HP-U01/02/03。
+3. **最优修改方案**:`JwtInterceptor.LOGIN_REQUIRED_PATHS` 增 `/api/health/plan/`(已合入 `b3a02df92`/`de16f40b0`)。
+4. **修改目的**:私有健康方案端点默认拒绝,消除越权/AI 配额滥用风险。
+5. **闭环**:本轮 live 实测 TC-HP-U01~03 返回 401 → **13/13 全绿,B-61 已闭环**。
+
+## 八、阻塞与风险(研发通知载体,见 blockers.md)
+- **已闭环**:B-61(P0 安全缺口,live 13/13 验证)。
+- **新增**:B-73(前端 S-cfc-79 24 RED,研发待实现 YELLOW)。
+- **持续未闭环**:B-54/B-65(langgraph 12 红)、B-55(251 CLOSED)、B-56(189 派发)、B-68/B-69(前后端契约/安全)、后端 JUnit 本机不可跑、SRS 池未启用。
+
+## 九、变更触发判定(用户规则:结果有变→提交远程+通知研发)
+- **本轮触发**:① 前端 24 新增 RED(S-cfc-79)② B-61 健康鉴权 3 红转绿闭环 → 结果**有变化**。
+- **动作**:本报告 + blockers.md(B-61 闭环 / B-73 新增)已 commit 并 push origin/cfclub(merge-base 核验 PASS)。
+- **通知研发重点**:S-cfc-79 实现使 24 例转绿(B-73);B-61 已闭环(安全缺口解除,无需动作);B-54/B-65/B-55/B-68/B-69 持续催办。
+
+## 十、产物
+- 本报告:`docs/tdd/orchestration/report-test-2026-11-08-2008.md`(已 push)
+- 阻塞台账:`docs/tdd/test/blockers.md`(B-61 闭环 + B-73 新增,已 push)
+
+## 十一、待办(持续)
+1. 研发实现 S-cfc-79(B-73)使前端 24 例转绿。
+2. 运维/研发:251 放通端口派发 langgraph + 重建 chromadb 原生扩展/注入 LLM key(B-54/B-55);修复 B-65 `analyze` thread_id。
+3. 运维恢复 189 派发通道(B-56)落实每节点单任务分派。
+4. 启用 SRS 需求池 + 闭环 795 文档用例执行(目标②)。
+5. CI 接入后端 JUnit 实跑固化基线(本节点无 Maven 不可回归)。

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

@@ -97,3 +97,5 @@
 | B-69-Update(第 90 轮 · 连续第 3 轮) | `/api/mind/` 匿名仍非 401 | 研发 | **连续第 3 轮未修(2026-11-08 19:00)**。线上实测 `POST /api/mind/fortune` 匿名 → **HTTP 200**,`{"code":400,"message":"用户不存在"}`(用例期望 401)。源码复核(HEAD `b58d54775`):`cfc-backend/src/main/java/com/etotem/cfc/config/JwtInterceptor.java:87` 的 `LOGIN_REQUIRED_PATHS` 仍无 `"/api/mind/"`(`PUBLIC_PATHS` 仅含 `/api/mind/alert/*`、`/api/mind/traditional/*`)→ **源代码级未修**。闭环判据不变:匿名 401 + `MindFortuneControllerTest` 转绿 | 测试负责人(第 90 轮复现登记) | 2026-11-08 19:00 | 待处理(P1,连续第 3 轮) |
 | B-65-Update(第 90 轮 · 连续第 3 轮) | langgraph `/api/v1/analyze` 恒 500(checkpointer 缺 thread_id) | 研发 | **连续第 3 轮未修(2026-11-08 18:55)**。本轮 `pytest tests/ --ignore=tests/qna` 实测 44 收集 / 32 过 / 12 红,其中 `test_analyze.py` 2 例仍 `assert 500 == 200`,异常 `ValueError: Checkpointer requires one or more of the following 'configurable' keys: thread_id, checkpoint_ns, checkpoint_id`。其余 10 红为 B-54 环境(chromadb DLL 6 + LLM key 401 4)。闭环判据不变:两例 200 转绿 | 测试负责人(第 90 轮复现登记) | 2026-11-08 18:55 | 待处理(P1,连续第 3 轮) |
 | B-59-Update(第 90 轮 · 再次触发) | TC-A-U05 仍以 `test.skip(url.includes('/login'))` 吞掉前置失败 | 测试(下轮自处置) | **第 90 轮再次触发(2026-11-08 17:24)**。admin 首跑因 B-72 502 抖动导致 TC-A-U04 红,TC-A-U05 随即命中 `test.skip` 分支被记为 skipped(不计红)→ 套件显示 3 passed / 1 failed / 1 skipped。复跑(502 窗口结束)5/5 全绿。佐证 B-59 判定:**固定 `waitForTimeout(5000)` + skip 兜底会把环境抖动转成「不判定」**。修复建议不变:`waitForURL(/\/admin\/dashboard/, { timeout: 20000 })` 硬断言,或复用 `storageState` | 测试负责人(第 90 轮观察) | 2026-11-08 17:26 | 待处理(下轮自处置) |
+| B-61-Update(第 91 轮 · 已闭环) | P0 健康方案鉴权缺口·线上部署已生效 | 研发 | **第 91 轮实测闭环(2026-11-08 20:08)**。`playwright.config.health.js` 契约实测:`TC-H-U01~U10` 10/10 全绿 + `TC-HP-U01/02/03`(`/api/health/plan/{adjust,attribution,generate}` 匿名 POST)**本轮全部返回 HTTP 401**(应 401/403),较 R78~R85 连续 7 轮 200 直通终告修复。根因(R85 已确认):`JwtInterceptor.LOGIN_REQUIRED_PATHS` 已含 `/api/health/plan/`(`b3a02df92`/`de16f40b0` 已合入 origin/cfclub),本轮线上 `cfc.iwintrue.com` 匿名 curl 探测 HP 三端点均 401 → **部署已生效**(R85 判定为「源码已修·部署滞后」,本轮滞后解除)。B-61(首现 R78)连续 7 轮后正式闭环。闭环判据:TC-HP-U01~03 由失败转 401 即通过 → **本轮达成(health 13/13)**。 | 测试负责人(第 91 轮复验登记) | 2026-11-08 20:08 | **已闭环(live 13/13 验证)** |
+| B-73(第 91 轮新增) | `cfc-frontend` S-cfc-79 `diet.recommendation.uiRework` 24 例 RED 契约测试 | 研发 | **P1 预期 RED(第 91 轮实测,2026-11-08 20:08)**。`cfc-frontend/__tests__/pages/diet/recommendation.uiRework.test.js`(commit `fb1e335e9`,462 行,28 例)随 SRS 变更 `49b4a71ef`(推荐食材页面改版 7 项需求 REQ1~REQ7)新增;本轮 jest 实跑 **24 失败 / 4 通过**(28 总)。24 失败分布:REQ1 去顶部标题(2)、REQ2 互斥选中(3)、REQ3 4Tab 切换(7)、REQ4 前端分页(12)、REQ5 `self-label="我"`(1)、REQ6 生成 loading(3)——均为「功能未实现」类断言(UI 结构/数据契约/行为契约)。**非既有用例回归**:前端 354 通过用例零转红,纯为新增 RED 套件。性质 = 预期 RED(S-cfc-79 任务处于 RED 态,待研发 YELLOW 实现 `recommendation.vue` 改版 + `DietRecommendationController` 契约)。影响:用户目标「全部用例通过」暂未达成(24 红);但「SRS 变更→测试用例更新」闭环已满足(需求 7 项均有对应 RED 用例覆盖)。通知研发:实现 S-cfc-79 使 24 例转绿(状态机置 YELLOW)。闭环:研发实现 diet rework → 该套件 28/28 全绿 + 状态机 S-cfc-79 置 YELLOW | 测试负责人(第 91 轮实测登记) | 2026-11-08 20:08 | 待处理(P1,预期 RED,待实现) |