|
@@ -0,0 +1,329 @@
|
|
|
|
|
+# 测试负责人工作汇报(第 138 轮 · 2026-11-11 06:10 GMT+8)
|
|
|
|
|
+
|
|
|
|
|
+> 角色:cfc-tester(测试负责人)|执行档:**review(内网 cfc.iwintrue.com/admin + /frontend 浏览器自动化;langgraph 实派 192.168.16.251;未联网装依赖、未启停服务、未改生产代码)**
|
|
|
|
|
+> 基线 HEAD:`d236569af`(R136 闭环,= 本地起点)→ 远端 `d63a51552`(窗口内仅研发负责人 docs 两笔,**后端/前端/langgraph 源码零变更**)
|
|
|
|
|
+> 节点:`189:4090`=200(admin 实派 5/5)|`251:4096`=200(langgraph pytest 实派 43 例)|`251:9000` `/health`=ok|`204:4090`=000(B-95 第 11 轮)|`9082`=000(B-36 第 36 轮)
|
|
|
|
|
+> 分工:**本机**=后端全量 + Jest(web/fe/根级)+ 浏览器 fe/shop/health/admin 复验|**189**=浏览器 admin 派发|**251**=langgraph pytest(实派)
|
|
|
|
|
+> 结论:⛔ **不通过(有条件)** — 可验证子集稳定:后端 **99.28%(历史新高)**、web 116/116、浏览器 28/28、前端红例全为预期 RED;红线仍在 **G2(51 红)/G9(锚点 11.7%)/G11(无 CI)**。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 0. 基本信息(测试负责人模板)
|
|
|
|
|
+
|
|
|
|
|
+| 项目 | 内容 |
|
|
|
|
|
+|------|------|
|
|
|
|
|
+| 汇报人 | `cfc-tester`(测试负责人) |
|
|
|
|
|
+| 汇报周期 | 2026-11-11(第 138 轮,基线 `d236569af`) |
|
|
|
|
|
+| 负责模块/单元 | cfc-backend(全量) · cfc-frontend(Jest) · cfc-web(Jest) · cfc-langgraph(pytest@251) · 浏览器 E2E(admin@189 + frontend/shop/health/dx@本机) · 根级黑盒 |
|
|
|
|
|
+| 执行档 | review(离线;未装依赖、未启停服务、未改生产代码) |
|
|
|
|
|
+
|
|
|
|
|
+### 0.1 测试用例建设与执行
|
|
|
|
|
+
|
|
|
|
|
+| 指标 | 数量 | 填写说明 |
|
|
|
|
|
+|------|------|----------|
|
|
|
|
|
+| **本轮新增测试用例数** | `0` 个 | 窗口 `d236569af..d63a51552` 对 specs / test-cases / user-scenarios / API_REFERENCE **零命中** → 无新增义务(G12 ✅) |
|
|
|
|
|
+| **本轮验证执行测试数** | `3722` 个 | 后端 2928 + 前端 582 + 管理端 116 + 根级 23 + langgraph 43 + 浏览器 30 |
|
|
|
|
|
+| **用例通过率** | `98.23%` | PASS 3656 / FAIL 51 / SKIP 15 |
|
|
|
|
|
+| **新增覆盖资产** | `1` 项 | `playwright.config.live.js` 新增 `dx-bridge` project(TC-DX-U01/U02 由「从未执行」转为可执行,404 时记 skip) |
|
|
|
|
|
+
|
|
|
|
|
+### 0.2 会话与任务分发
|
|
|
|
|
+
|
|
|
|
|
+| 指标 | 数量 | 填写说明 |
|
|
|
|
|
+|------|------|----------|
|
|
|
|
|
+| **分派任务数** | `3` 个 | ① 251 langgraph pytest(shell 通道,detach)② 189 admin 浏览器(opencode shell)③ 本机浏览器 fe/shop/health/admin + 三套 Jest + 后端全量(本地直跑) |
|
|
|
|
|
+| **恢复智能体会话数** | `0` 个 | 无会话中断/重建;189、251 通道本轮均一次成功 |
|
|
|
|
|
+| **当前在用会话数** | `2` 个 | 189:4090(admin,done 5/5)、251:4096(pytest,done 41/2) |
|
|
|
|
|
+
|
|
|
|
|
+### 0.2b 各会话当前工作状态
|
|
|
|
|
+
|
|
|
|
|
+| 会话标签 | 会话 ID | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
|
|
|
|
|
+|----------|---------|----------|----------|---------------|----------|------|
|
|
|
|
|
+| 251:4096 | shell(detach) | done | langgraph pytest 43 例 | — | `/sc-data/cfc/cfc-langgraph` | 41 过 / 2 红(429),167.42s;HEAD `d63a51552` |
|
|
|
|
|
+| 189:4090 | shell(cmd) | done | admin-desktop 5 例 | — | `C:\code\cfc` | 5/5(1.5m);spec 版本落后本机一版(B-59 前) |
|
|
|
|
|
+| 本机 | localhost | done | 后端全量 + 三套 Jest + 浏览器 4 套 | — | `d:\cfc` | 后端 43:12;web 116;fe 557/16;根级 7/16;浏览器 28 过 + 2 跳 |
|
|
|
|
|
+
|
|
|
|
|
+### 0.3 问题处置
|
|
|
|
|
+
|
|
|
|
|
+| 指标 | 数量 | 填写说明 |
|
|
|
|
|
+|------|------|----------|
|
|
|
|
|
+| **新测试发现问题数** | `2` 个 | ① dx 契约用例未挂入任何 project(已自处置);② 189 admin spec 版本落后本机(`bb49dd1ce` vs `4703d73fb`),节点结论可比但非同版 |
|
|
|
|
|
+| **已解决测试相关问题数** | `1` 个 | dx-bridge project 挂载完成,2 例可执行 |
|
|
|
|
|
+| **待解决测试相关问题数** | `5` 个 | 后端 17 红(产品/契约)· 前端 16 预期 RED · langgraph 429/401 · 根级 16 环境红 · dx 端点 404 |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 1. 历史审查记录(仅作对照,不作为本轮结论依据)
|
|
|
|
|
+
|
|
|
|
|
+| 轮次 | 时间 | 后端全量 | langgraph@251 | 浏览器 | 前端 Jest | 结论 |
|
|
|
|
|
+|---|---|---|---|---|---|---|
|
|
|
|
|
+| R134 | 11-11 02:10 | 343 类 / 2918 例 / 17 红 = 99.28% | 44 绿 / 7 红(401+429)/ 51 例 | 28/28 | 0 红(472 过/3 跳) | 不通过(有条件) |
|
|
|
|
|
+| R135 | 11-11 03:45 | 采信 R134(源码零变更) | 39 过 / 4 红 / 43 例 | 28/28(189 未派发) | 16 红(预期 RED)/ 9 跳 / 557 过 | 不通过(有条件) |
|
|
|
|
|
+| R136 | 11-11 04:50 | 采信 R134 | 38 过 / 5 红 / 43 例 | 28/28(189 实派 5/5) | 16 红 / 9 跳 / 557 过 | 不通过(有条件) |
|
|
|
|
|
+| R137 | 11-11 05:00 | 采信 R134 | 引用 R136(pytest 慢启动) | 28/28(189 报 3/5 伪失败) | 16 红 / 9 跳 / 557 过 | 不通过(有条件) |
|
|
|
|
|
+| **R138(本轮)** | **11-11 06:10** | **344 类 / 2928 例 / 17 红 = 99.28%(实跑 43:12)** | **41 过 / 2 红(全 429)/ 43 例** | **28/28 + dx 2 skip(新挂载)** | 16 红(预期 RED)/ 9 跳 / 557 过 | **不通过(有条件)** |
|
|
|
|
|
+
|
|
|
|
|
+**本轮相对 R136/R137 的变化(逐项)**
|
|
|
|
|
+
|
|
|
|
|
+1. **后端由「采信 R134」改为本轮实跑**:`mvn -o -B clean test` **43 分 12 秒** → **344 类 / 2928 例 / 2907 过 / 16F+1E+4S = 99.28%(剔 skip 99.42%)**。相对 R134(343/2918/17 红):**+1 类**(`DietRecommendationServiceTest` 17 例,即 R135 G12 补入的食材推荐用例)、**+10 例**、**红例持平 17**,红类集合与 R134 完全一致 → 后端无回归。
|
|
|
|
|
+2. **langgraph 红例 5 → 2(改善)**:43 例 **41 过 / 2 红 / 167.42s**;2 红均为 `test_auto_tag`(short_content / empty_content),日志 2 次 `RateLimitError 429 (AgnesAI_error)` + `chat_graph.py:148` 记忆召回 401(`****ab12 invalid`)→ **全部环境红**(上游配额 + 记忆凭据),非代码回归;窗口内 `cfc-langgraph/app` 与 `tests` 零 commit。
|
|
|
|
|
+3. **★ 覆盖缺口修复(测试侧自处置)**:`tests/e2e-live/dx-health-bridge-auth.spec.js`(TC-DX-U01/U02)**存在于仓库却未挂入任何 playwright project → 设计的用例从未被执行**。本轮在 `playwright.config.live.js` 新增 `dx-bridge` project,实测 **2 例均可执行(端点 404 → 记 skip,不产生假绿)**。浏览器口径由 28 扩至 **30(28 过 + 2 跳)**。
|
|
|
|
|
+4. **189 admin 恢复 5/5**(1.5m,含滑块 + 真实登录);R137 记录的 189「3/5 伪失败」本轮未复现(同 R123/R136 判节点偶发)。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 2. 项目画像速览
|
|
|
|
|
+
|
|
|
|
|
+- **业务**:浠艾福 XAF —— 家庭教育 SaaS(家庭成员 / 五维能量 / 成长规划师 / 健康报告解析 / 商城分佣 / AI 管家 / 知识中心标签筛选 / 食材推荐)。
|
|
|
|
|
+- **技术栈**:`cfc-backend`(Spring Boot 2.7.18 + MyBatis-Plus + Java 8,9082)· `cfc-web`(Vue2 + ElementUI,8082)· `cfc-frontend`(uni-app H5/小程序)· `cfc-langgraph`(FastAPI + LangGraph + Chroma,9000 @ 192.168.16.251)· `dan/danshop`(独立商城 8888)。
|
|
|
|
|
+- **关键路径**:登录/家庭邀请 → 五维测评 → 成长任务审批 → 健康报告上传解析 → 商城下单分佣 → AI 对话 → 知识中心标签筛选(S-cfc-131)→ 食材推荐/今日食谱(S-cfc-129/130)。
|
|
|
|
|
+- **测试现状**:后端 344 类 / 2928 例(本轮实跑);前端 Jest 37 套件 / 582 例(16 红 = 预期 RED);管理端 17 套件 / 116 例;浏览器 live 30 例(28 过 + 2 跳);langgraph 43 例(251 实派);根级黑盒 23 例。
|
|
|
|
|
+- **质量目标**:20 类全覆盖、G1≥95%、G2≤10 红、G6 28/28、G7 0 红、G9≥80%、G10 双节点、G12 SRS 合规。
|
|
|
|
|
+- **风险点**:后端 17 红集中在 EnergySystem(6×500)、DimensionRegistryMap(3,P-9 待裁决)、Orchestration(2)、分佣/支付/微信登录(各 1)、Guide 包创建(DataIntegrityViolation);前端 16 红为**实现未交付的预期 RED**;langgraph 429 配额未解;dx-bridge 线上 404(部署滞后,第 3 轮)。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 3. 20 类测试覆盖矩阵(三态:已实测 / 未发现 / 待核实)
|
|
|
|
|
+
|
|
|
|
|
+| # | 测试类型 | 状态 | 证据(本轮) |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| 1 | 单元测试 | ✅ 已实测 | 后端 2928 例(344 类,43:12);web 116;fe 582 |
|
|
|
|
|
+| 2 | 组件测试 | ✅ 已实测 | fe 37 套件 / web 17 套件(shallowMount 组件用例) |
|
|
|
|
|
+| 3 | 接口 API 测试 | ✅ 已实测 | 后端 MockMvc/直调 364 控制器面;langgraph 43 例 251 实派 |
|
|
|
|
|
+| 4 | 集成测试 | ✅ 已实测 | `integration.*` 实跑(EnergySystem / DimensionRegistryMap / GuideModule / dx 契约) |
|
|
|
|
|
+| 5 | 系统/端到端 E2E | ✅ 已实测 | 浏览器 30 例:189 admin 5/5 + 本机 fe 6/6、shop 4/4、health 13/13、dx 2 skip |
|
|
|
|
|
+| 6 | 冒烟测试 | ✅ 已实测 | 浏览器 28 通过 + Jest 698 例构成冒烟面 |
|
|
|
|
|
+| 7 | 回归测试 | ✅ 已实测 | 后端 17 红与 R134 逐类一致;web 116 零漂移;fe 16 红定性预期 RED |
|
|
|
|
|
+| 8 | 探索性测试 | ⚠️ 待核实 | 无 charter 记录(沿用历轮结论) |
|
|
|
|
|
+| 9 | 验收 UAT / BDD | ⚠️ 待核实 | 无 cucumber/gherkin 执行证据 |
|
|
|
|
|
+| 10 | 性能测试 | ⛔ 未授权未执行 | 压测属 execute 档,需联网显式授权 |
|
|
|
|
|
+| 11 | 可靠性测试 | ✅ 已实测(改善) | 后端 43:12 无中断、344/344 XML 无沉默;langgraph 167.42s 正常收尾、`EXIT=124` 未复现(B-126 观察第 4 轮) |
|
|
|
|
|
+| 12 | 安全测试(SAST/DAST/SCA/渗透) | ⛔ 未授权未执行 | 仅鉴权契约面:线上 5 端点匿名 POST 全 401(G8 ✅) |
|
|
|
|
|
+| 13 | 兼容性测试 | ⚠️ 待核实 | 仅 Chromium 单引擎(1440×900 / 375×812) |
|
|
|
|
|
+| 14 | 可用性测试 | ⚠️ 待核实 | 无真实用户可用性证据 |
|
|
|
|
|
+| 15 | 无障碍测试 | ⚠️ 待核实 | 无 axe/WCAG 扫描 |
|
|
|
|
|
+| 16 | 覆盖率度量 | ⚠️ 已实测(低) | web 语句 ≈10% / 分支 ≈6%(R130 基线);后端 JaCoCo 未接入 |
|
|
|
|
|
+| 17 | 变异测试 | ⛔ 未发现 | 无 PIT / mutation 资产 |
|
|
|
|
|
+| 18 | 契约测试 | ✅ 已实测 | health 13/13、shop 4/4、dx 2(skip=404 未部署)、S-cfc-29~54 契约(16 例预期 RED) |
|
|
|
|
|
+| 19 | QA 流程 | ⚠️ 待核实 | 138 轮闭环可追溯;门禁未脚本化(G11) |
|
|
|
|
|
+| 20 | 覆盖率门禁/CI | ⚠️ 待核实 | 无 CI 全量 job(G11 ❌) |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 4. 本轮实测明细
|
|
|
|
|
+
|
|
|
|
|
+### 4.1 后端全量(`mvn -o -B clean test`,JDK1.8.0_25 + Maven 3.6.1)
|
|
|
|
|
+
|
|
|
|
|
+| 指标 | 数值 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| 测试类 | **344**(surefire XML **344/344**,无沉默) |
|
|
|
|
|
+| 用例总数 | **2928** |
|
|
|
|
|
+| 通过 | **2907** |
|
|
|
|
|
+| 失败 / 错误 / 跳过 | **16 / 1 / 4** |
|
|
|
|
|
+| 通过率 | **99.28%**(剔 skip **99.42%**) |
|
|
|
|
|
+| 耗时 | **43:12** |
|
|
|
|
|
+| 编译 | `Compiling 350 source files` 0 错;`target/classes` 2326 个 class(R130 为 2325,产物完整) |
|
|
|
|
|
+
|
|
|
|
|
+**17 红逐条(三层归因)**
|
|
|
|
|
+
|
|
|
|
|
+| 层 | 用例 | 现象 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| 产品(12) | `EnergySystemFlowTest` 6 例(:150/:182/:212/:246/:282/:116) | 能量兑换/完成任务/概览/流水均 **500**;无家庭用户返回 **5001** 而非 500 |
|
|
|
|
|
+| 产品(1) | `GuideModuleIntegrationTest.testGuidePackageCreationFlow:63` | `DataIntegrityViolation`(引导包创建写库失败) |
|
|
|
|
|
+| 产品(2) | `OrchestrationEngineTest:176`、`OrchestrationIntegrationTest:105` | 编排引擎/集成断言失败 |
|
|
|
|
|
+| 产品(1) | `MembershipPaySwitchTest:209` | 虚拟支付开关缺失时仍生成订单(应返回 null) |
|
|
|
|
|
+| 产品(1) | `PaymentServiceORDRoutingTest:83` | 未知前缀回调路由返回 FAIL(期望 SUCCESS) |
|
|
|
|
|
+| 产品(2) | `UserServiceWechatLoginTest:120`、`UserServiceWechatLoginContractTest:110` | 首次微信登录未创建默认家庭 / 未返回 JWT |
|
|
|
|
|
+| 产品(1) | `TeamProfitCronContractTest:150` | 冷静期退款未将分享/奖励记录置 cancelled |
|
|
|
|
|
+| 契约待裁决(3) | `DimensionRegistryMapContractTest` :76/:85/:92 | `$.data` 缺失、缺失 legacy 应 400 实为 200(P-9 第 10 轮) |
|
|
|
|
|
+
|
|
|
|
|
+### 4.2 Jest 套件(本机)
|
|
|
|
|
+
|
|
|
|
|
+| 套件 | 结果 | 说明 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| `cfc-web` | **116/116(17 套件)** | 32.4s,零漂移 |
|
|
|
|
|
+| `cfc-frontend` | **557 过 / 16 红 / 9 跳 / 582 总(37 套件)** | 32.0s;3 红套件全为预期 RED |
|
|
|
|
|
+| 根级黑盒 | **7 过 / 16 红 / 23 总** | 全 `ECONNREFUSED 127.0.0.1:9082`(本机后端未启,B-36 第 36 轮) |
|
|
|
|
|
+
|
|
|
|
|
+**前端 16 红明细(预期 RED,非回归)**:`signature.healthPlan.test.js`(S-cfc-52,8 例,缺 `health-plan-summary.vue`)、`signature.consignee.test.js`(S-cfc-53,6 例,缺 `consignee-edit.vue`)、`growthHistory.view.test.js`(S-cfc-30,2 例,`growth-main/index.vue` 无按日期分组)。已核 `health-plan-summary.vue`、`consignee-edit.vue` **均不存在** → 待研发交付即转绿。
|
|
|
|
|
+
|
|
|
|
|
+### 4.3 浏览器 live(30 例,workers=1 串行)
|
|
|
|
|
+
|
|
|
|
|
+| 套件 | 节点 | 结果 | 说明 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| admin-desktop(1440×900) | **189 实派** + 本机复验 | **5/5** / 本机 **5/5** | TC-A-U01~U05,滑块 + 真实登录入后台主框架(189 1.5m / 本机 1.3m) |
|
|
|
|
|
+| frontend-mobile(375×812) | 本机 | **6/6** | TC-F-U01~U06(游客浏览/五维沙盘/TabBar/鉴权引导/关键资源) |
|
|
|
|
|
+| shop-api | 本机 | **4/4** | TC-S-U01~U04(price asc/desc/default/非法白名单拦截) |
|
|
|
|
|
+| health-api | 本机 | **13/13(5.6s)** | TC-HP-U01~U13 未鉴权 401 全覆盖 |
|
|
|
|
|
+| **dx-bridge(本轮新挂载)** | 本机 | **2 skip** | TC-DX-U01/U02 端点 404(部署滞后)→ 按设计记 skip,不假绿 |
|
|
|
|
|
+
|
|
|
|
|
+> **说明**:189 节点 `admin-live.spec.js` blob = `bb49dd1ce`(R97 版),本机 HEAD 版为 `4703d73fb`(R133 起含 B-59 `waitForURL` 时序修复)→ 189 跑的是**上一版 spec**,两版均 5/5,结论可比但不完全同版;已在 G10 备注。
|
|
|
|
|
+
|
|
|
|
|
+### 4.4 langgraph(192.168.16.251 实派)
|
|
|
|
|
+
|
|
|
|
|
+| 项 | 结果 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| 命令 | `setsid nohup timeout 1500 .venv/bin/python -m pytest tests --ignore=tests/qna --ignore=tests/test_chat.py -q --tb=line` |
|
|
|
|
|
+| 节点 HEAD | `d63a51552`(`git reset --hard origin/cfclub` 后) |
|
|
|
|
|
+| 结果 | **41 passed / 2 failed / 167.42s** |
|
|
|
|
|
+| 2 红 | `test_auto_tag.py::test_auto_tag_short_content`、`::test_auto_tag_empty_content`(断言 `500 == 200`) |
|
|
|
|
|
+| 归因 | 日志 2 次 `RateLimitError 429 (AgnesAI_error)`;另 `chat_graph.py:148` 记忆召回 `401 api key ****ab12 invalid` → **环境红** |
|
|
|
|
|
+| 同窗口 live | `/health` 200(4.9ms)、`POST /api/v1/chat` **200(12.21s/695B)**、`POST /api/v1/analyze` **200(10.21s/1079B)** → B-90 维持销号(连续第 3 轮绿) |
|
|
|
|
|
+
|
|
|
|
|
+### 4.5 线上鉴权对照组(POST,B-69 口径)
|
|
|
|
|
+
|
|
|
|
|
+`/api/mind/fortune`、`/api/energy/overview`、`/api/health/plan/list`、`/api/huawei-health/status`、`/api/xiaomi-health/status` → **全部 401(5/5)**,鉴权机制正常(G8 ✅)。
|
|
|
|
|
+
|
|
|
|
|
+### 4.6 dx-bridge 部署状态
|
|
|
|
|
+
|
|
|
|
|
+`POST /api/health/data-sources/bridge/list`、`.../sync-status` → **404 / 404**(第 3 轮)。TR-24 `health.dataSource.bridgeWrite` 部署 pending,属部署滞后,非产品缺陷。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 5. SRS / 场景覆盖闸门(G12)
|
|
|
|
|
+
|
|
|
|
|
+| 项 | 数值 | 判定 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| SRS 规格 | `docs/superpowers/specs/*.md` **201 份**;窗口 `d236569af..d63a51552` **零新增/零修改** | ✅ 无需更新用例 |
|
|
|
|
|
+| 用户场景 | `tests/user-scenarios/*.md` 11 份,`## 场景` 标题 **198** 个 | — |
|
|
|
|
|
+| 文档结构化用例 | `tests/test-cases/*.md` **15 份**,唯一 TC 编号 **366** 个 | — |
|
|
|
|
|
+| 异常流用例 | 含异常/负向/401/403/超时语义 **577** 处 | 覆盖充分(文档层面) |
|
|
|
|
|
+| **可执行锚点** | 366 个 TC 中 **43** 个能在代码中命中 → **11.7%** | ❌ G9 未达标(与 R123 17.1%/R130 9.9% 同量级,口径差异见 B-124) |
|
|
|
|
|
+| 新增用例 | **0**(SRS 零变更,G12 合规);本轮新增的是**配置挂载**(dx-bridge project),非新用例 | ✅ |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 6. 门禁结论
|
|
|
|
|
+
|
|
|
|
|
+| 门禁 | 阈值 | 本轮实测 | 判定 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| G1 通过率 | ≥95% | **98.23%**(3722 例 / 3656 过) | ✅ |
|
|
|
|
|
+| G2 红例总数 | ≤10 | **51**(后端 17 + 根级 16 + 前端 16 + lg 2) | ❌ |
|
|
|
|
|
+| G3 前端 Jest | 无红(或红全为预期 RED) | 16 红全为预期 RED(S-cfc-30/52/53) | ⚠️ 条件通过 |
|
|
|
|
|
+| G4 管理端 Jest | 全绿 | **116/116** | ✅ |
|
|
|
|
|
+| G5 编译/产物完整性 | 编译 0 错 + 无沉默 | 350 源 0 错;344/344 XML;2326 class | ✅ |
|
|
|
|
|
+| G6 浏览器 E2E | 28/28 | **28/28 + dx 2 skip** | ✅ |
|
|
|
|
|
+| G7 langgraph | 0 红 | **2 红(全 429/401 环境)** | ❌ |
|
|
|
|
|
+| G8 鉴权契约 | 匿名全 401 | 5/5 = 401;health 13/13 | ✅ |
|
|
|
|
|
+| G9 用例锚点 | ≥80% | **11.7%** | ❌ |
|
|
|
|
|
+| G10 双节点派发 | 双节点实派 | 189 admin 5/5 ✅ + 251 pytest 43 例 ✅ | ✅ |
|
|
|
|
|
+| G11 CI 全量 | 存在 CI job | 无后端全量 CI | ❌ |
|
|
|
|
|
+| G12 SRS 合规 | 变更驱动更新 | SRS 零变更 → 零新增用例;dx 用例已挂载可执行 | ✅ |
|
|
|
|
|
+
|
|
|
|
|
+**总判定:⛔ 不通过(有条件)**
|
|
|
|
|
+
|
|
|
|
|
+- 直击用户双目标:①「所有用例通过」→ ❌(51 红:后端 17 产品/契约 + 前端 16 预期 RED + 根级 16 环境 + lg 2 环境);②「覆盖全部 SRS + 用户场景含异常流」→ ❌(可执行锚点 11.7%,795+ 文档用例仍以文档形态存在)。
|
|
|
|
|
+- 但**无产品回归**:本轮实跑后端 17 红与 R134 逐类一致,前端/浏览器/langgraph 变化均为环境或未交付实现。
|
|
|
|
|
+
|
|
|
|
|
+**复评条件(进入有条件通过/通过的门槛)**
|
|
|
|
|
+1. 后端 17 红按批修复(EnergySystem 6 为最大单点,建议单独立项);
|
|
|
|
|
+2. 前端交付 `health-plan-summary.vue` / `consignee-edit.vue` + growth 分组逻辑 → 16 红转绿;
|
|
|
|
|
+3. 251 换 Token / 升配额(修复 429)+ 修复记忆召回 api key `****ab12`;
|
|
|
|
|
+4. dx-bridge 上线部署 → 2 例由 skip 转 401/403 断言;
|
|
|
|
|
+5. 建 CI 全量 job(G11)+ TC 锚点提到 80%(G9)。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 7. 五要素问题清单
|
|
|
|
|
+
|
|
|
|
|
+### 问题 1|EnergySystem 6 例全 500(P0 产品)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:`EnergySystemFlowTest` 完成任务发放能量、兑换心愿、概览、流水 4 类接口全部返回 **500**;无家庭用户返回 **5001** 而非约定 500。
|
|
|
|
|
+2. **测试 bug 点**:`cfc-backend/src/test/java/com/etotem/cfc/integration/EnergySystemFlowTest.java:150 / :182 / :212 / :246 / :282 / :116`。
|
|
|
|
|
+3. **最优修改方案**:定位能量服务 500 根因(看 surefire 输出栈:疑似 5 维能量配置缺失或空指针),统一异常映射:无家庭 → 500/5001 需与 `Result` 约定对齐。
|
|
|
|
|
+4. **修改目的**:五维能量是产品核心闭环(身/心/智/行/富),6 例全红意味着能量主链路不可用。
|
|
|
|
|
+5. **闭环方式**:修复后单跑 `mvn -o -B test -Dtest=EnergySystemFlowTest` → 7/7 绿(含 1 skip 转绿)即闭环。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 2|DimensionRegistryMap 契约 3 例(P1 待裁决 · 第 10 轮)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:`map_emptyLegacy` / `map_unknownLegacy` 断言 `$.data` 非空失败;`map_missingLegacy` 期望 400 实为 200。
|
|
|
|
|
+2. **测试 bug 点**:`cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryMapContractTest.java:76 / :85 / :92`。
|
|
|
|
|
+3. **最优修改方案**:产品与测试对齐契约——确定「空/未知 legacy 返回 `data:null` 还是空对象」「缺参是否 400」,随后二选一改实现或用例(当前用例按规格断言,实现未跟随)。
|
|
|
|
|
+4. **修改目的**:维度注册表是 Web 管理端配置入口,契约含糊会持续产生假红/假绿。
|
|
|
|
|
+5. **闭环方式**:裁决结论落到 spec 后,契约测试 3/3 绿 + 管理端维度配置页手工回归 1 次。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 3|Guide 包创建 DataIntegrityViolation(P1 产品)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:`testGuidePackageCreationFlow:63` 抛 `DataIntegrityViolation`,引导包写库失败。
|
|
|
|
|
+2. **测试 bug 点**:`cfc-backend/src/test/java/com/etotem/cfc/integration/GuideModuleIntegrationTest.java:63`。
|
|
|
|
|
+3. **最优修改方案**:核对 guide 包表非空约束(platform_fee 截断类问题在历轮已现)与外键,修实现或补测试夹具数据。
|
|
|
|
|
+4. **修改目的**:成长规划师端「引导包」是变现入口,写库失败即功能不可用。
|
|
|
|
|
+5. **闭环方式**:`mvn -o -B test -Dtest=GuideModuleIntegrationTest` 4/4 绿。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 4|分佣冷静期退款未置 cancelled(P1 产品/资金合规)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:`refundWithinCooling_cancelAllRecordsFundsNotPaid:150` 期望 `team_share_record`/`team_award_record` 全 cancelled,实际 `cancelled=0`。
|
|
|
|
|
+2. **测试 bug 点**:`cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitCronContractTest.java:150`。
|
|
|
|
|
+3. **最优修改方案**:补冷静期退款 cron 的级联置位(分享/奖励记录同事务置 cancelled),并核对 §8.2 条款。
|
|
|
|
|
+4. **修改目的**:涉及资金合规,未置 cancelled 会导致超发分佣。
|
|
|
|
|
+5. **闭环方式**:该用例转绿 + 与 `CfCommissionServiceSettleTest`(R134 已 12/12)联跑确认无连带。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 5|微信登录首次建家庭/JWT 缺失(P1 产品)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:首次登录未创建默认家庭(`:120` 期望非 null);契约用例 `:110` 期望 `jwt-token-1` 实为 null。
|
|
|
|
|
+2. **测试 bug 点**:`UserServiceWechatLoginTest:120`、`UserServiceWechatLoginContractTest:110`。
|
|
|
|
|
+3. **最优修改方案**:修 `wechatLogin` 首次分支的家庭初始化与 token 生成返回。
|
|
|
|
|
+4. **修改目的**:登录是新用户唯一入口,失败即全链路阻断。
|
|
|
|
|
+5. **闭环方式**:两用例转绿 + 线上新用户注册手工冒烟 1 次。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 6|前端 16 红:契约已合入、实现未交付(P0 预期 RED)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:3 套件 16 例红,均引用不存在的组件/逻辑。
|
|
|
|
|
+2. **测试 bug 点**:`cfc-frontend/__tests__/pages/signature/signature.healthPlan.test.js`、`signature.consignee.test.js`、`__tests__/pages/growth-main/growthHistory.view.test.js`。
|
|
|
|
|
+3. **最优修改方案**:交付 `pages/signature/components/health-plan-summary.vue`、`consignee-edit.vue`;`growth-main/index.vue` 补 `groupByDate` 分组渲染。
|
|
|
|
|
+4. **修改目的**:S-cfc-30/52/53 是已签字规格,未交付即需求未完成。
|
|
|
|
|
+5. **闭环方式**:三套件连续 2 轮 0 红后销号 B-135-1。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 7|langgraph 2 红:429 配额 + 记忆凭据 401(P0 环境)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:`test_auto_tag_short_content` / `empty_content` 断言 `500 == 200`;日志 2 次 429 + 记忆召回 401。
|
|
|
|
|
+2. **测试 bug 点**:`cfc-langgraph/tests/test_auto_tag.py:93`。
|
|
|
|
|
+3. **最优修改方案**:① 运维换 Token/升配额;② 修 `app/graphs/chat_graph.py:148` 记忆召回 api key;③ `app/agents/intent_classifier.py:62` 对 401/429 抛外部服务异常而非兜底 chat。
|
|
|
|
|
+4. **修改目的**:把「环境故障」与「分类错误」解耦,避免 429 伪装成产品缺陷(已连续 4 轮干扰判定)。
|
|
|
|
|
+5. **闭环方式**:251 复跑 43/43 且日志 0 次 429 → 销号 B-74/B-134-4。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 8|dx-bridge 用例未挂载 + 端点 404(P1 测试资产/部署)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:`dx-health-bridge-auth.spec.js` 存在但未挂入任何 project(本轮已修);两个端点线上 404。
|
|
|
|
|
+2. **测试 bug 点**:`tests/playwright.config.live.js`(缺 `dx-bridge` project)、`tests/e2e-live/dx-health-bridge-auth.spec.js:35`。
|
|
|
|
|
+3. **最优修改方案**:① 已完成——新增 `dx-bridge` project(2 例可执行);② 部署 TR-24 `47d203981` 至线上。
|
|
|
|
|
+4. **修改目的**:设计好的契约用例必须真实执行;404 状态下按 skip 记,不制造假绿。
|
|
|
|
|
+5. **闭环方式**:部署完成后复跑 → 2/2 断言 401/403;skip 归零即闭环。
|
|
|
|
|
+
|
|
|
|
|
+### 问题 9|根级黑盒 16 红(P2 环境)
|
|
|
|
|
+
|
|
|
|
|
+1. **问题描述**:`tests/jest.config.js` 23 例中 16 红,全 `ECONNREFUSED 127.0.0.1:9082`。
|
|
|
|
|
+2. **测试 bug 点**:`tests/` 根级黑盒套件(依赖本机后端常驻)。
|
|
|
|
|
+3. **最优修改方案**:CI/本地跑前自动拉起 `cfc-backend`(或用 `webServer` 配置 + 健康检查门),失败即跳过而非红。
|
|
|
|
|
+4. **修改目的**:环境型红例持续占据 G2 名额,淹没真实产品红。
|
|
|
|
|
+5. **闭环方式**:后端常驻后重跑 23/23,或改为 `test.skipif(!backendUp)`。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 8. 覆盖缺口清单
|
|
|
|
|
+
|
|
|
|
|
+| 缺口 | 现状 | 风险 | 建议测试设计 | 优先级 | 闭环方式 |
|
|
|
|
|
+|---|---|---|---|---|---|
|
|
|
|
|
+| 可执行锚点低 | 366 TC 仅 43 命中代码(11.7%) | 文档用例与自动化脱节,需求变更无法被测试感知 | 按域批量补 `TC-XX` 注释锚点,先把 198 个场景主流程锚到现有用例 | P0 | 锚点率 ≥60% 起算,≥80% 达标 |
|
|
|
|
|
+| 性能/可靠性 | 未授权联网,未执行 | 能量/报告解析等重接口无容量基线 | k6/Playwright trace 打点,内网授权后跑 50 并发基线 | P1 | 首次基线报告入库 |
|
|
|
|
|
+| 安全扫描 | 仅鉴权契约 | 无 SAST/SCA 证据 | 离线 `mvn dependency-check`(需联网库)→ 待授权 | P1 | 输出依赖漏洞清单 |
|
|
|
|
|
+| 兼容性 | 仅 Chromium | 小程序真机/WebView 差异未验 | 加 firefox/webkit project + 真机抽测 | P2 | 三引擎同套件绿 |
|
|
|
|
|
+| 无障碍 | 无 axe 扫描 | 家长端可用性合规风险 | 引入 `@axe-core/playwright` 对 5 个核心页 | P2 | 关键页 0 critical |
|
|
|
|
|
+| 变异测试 | 无资产 | 覆盖率质量不可信 | 后端引入 PIT(离线可行需插件包) | P3 | 关键域 mutation score ≥60% |
|
|
|
|
|
+| BDD/UAT | 无 gherkin | 验收标准不可执行 | 把 198 场景中 20 条主流程转 feature 文件 | P2 | 20 条可执行 |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 9. 本轮产出与变更
|
|
|
|
|
+
|
|
|
|
|
+| 文件 | 变更 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| `docs/tdd/orchestration/report-test-2026-11-11-R138.md` | 本报告 |
|
|
|
|
|
+| `docs/tdd/test/automation-run-2026-11-11-R138.md` | 执行记录(命令 + 原始数字) |
|
|
|
|
|
+| `docs/tdd/test/notice-2026-11-11-R138-研发通知.md` | 研发通知(结果有变化) |
|
|
|
|
|
+| `docs/tdd/test/blockers.md` | 追加 R138 段(B-138-1 dx 用例未挂载已修、B-74/B-134-4 第 4 轮、B-126 观察第 4 轮、B-DX-1 第 3 轮、B-95 第 11 轮、B-36 第 36 轮、B-135-1 第 3 轮) |
|
|
|
|
|
+| `tests/playwright.config.live.js` | **新增 `dx-bridge` project**(唯一代码级改动,测试资产) |
|
|
|
|
|
+| `docs/tdd/test/automation-status.md` | 追加 R138 附录 |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+**模板版本**:v1.1(测试负责人工作汇报模板)|**本轮**:R138(2026-11-11 06:10)
|