|
|
@@ -0,0 +1,377 @@
|
|
|
+# 测试负责人工作汇报(R191 轮)
|
|
|
+
|
|
|
+> 本汇报按《测试负责人工作汇报模板》填写。R191 为**后端全量实跑轮**(R189/R190 均为采信,按纪律必须实跑):基线起点 `cfclub @ 309fa0220`(R190 收口 12:35 之后),跑测窗口内并行会话把 HEAD 推进至 `123f768c7`(含 S-cfc-197 契约类),收尾经 HTTP 兜底 fetch 后快进至 **`5ad781a00`**(含 S-cfc-199 / S-cfc-200 三个契约类)。
|
|
|
+> **拓扑(用户指令)**:浏览器经 `http://cfc.iwintrue.com/admin`(后台)+ `http://cfc.iwintrue.com/frontend`(小程序);189 / 204 / 本机为浏览器节点(**每节点仅 1 个浏览器任务**,本机四个套件串行);langgraph 部署 251 → **本轮已实派并实跑**。
|
|
|
+> **★ 本轮关键事实**
|
|
|
+> ① 后端**恢复全量实跑**:`mvn -o -B clean test` **1:01h** → **386 类 / 3315 例 / 3232 过 / 73F+6E+4S = 97.50%(剔 skip 97.62%)**;386/386 XML 无沉默、2121 主源 + 392 测试源 0 编译错、dump 0。
|
|
|
+> ② **窗口与收尾两次新增契约类均已逐类实测取证**:本地窗口 S-cfc-197 `AdminReportParserManageContractTest` **37/37 GREEN** + S-cfc-198 `AdminKnowledgeBaseManageContractTest` **13 例 6 红/7 绿(预期 RED)**;收尾远端推入 S-cfc-199/200 三类 **52 例 39 红/13 绿(TDD 前瞻 RED)**。
|
|
|
+> ③ **存量红零漂移第 26 次**:13 类 / 24 红,与 R190 的 13 类逐类一致(唯一 −1 例为 `TaskReviewScP11ContractTest` 装置浮动 2F→1F)。
|
|
|
+> ④ **langgraph@251 4 红全为环境**:`429 AgnesAI 免费额度耗尽` + `401 api key ****ab12 invalid`;live `/health` 200/2ms 但 `/api/v1/chat` **000/40s**、`/api/v1/analyze` **000/50s** → B-142-2 复发 + B-186-1 延续。
|
|
|
+> ⑤ **浏览器任务级全绿**:本机四件套 28/28 + 跨节点 189 admin **5/5** + 204 fe **6/6(连续 2 轮,B-95 可销号)**;dx 2 跳承袭(B-DX-1)。
|
|
|
+> ★ **全站可比:4254 例 / 4088 过 = 96.10%(剔 skip 96.67%),红 141**。红数环比 +47 **全部为 TDD 前瞻契约 RED(+45:S-cfc-198 6 + 远端三类 39)与上游环境红(langgraph +3)**,**零缺陷回归**;剔除全部预期 RED 后为 **98.34%**。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 基本信息
|
|
|
+
|
|
|
+| 项目 | 内容 |
|
|
|
+|------|------|
|
|
|
+| 汇报人 | 测试负责人(自动化测试闭环任务 / 软件测试专家团·陆谨) |
|
|
|
+| 汇报周期 | 2026年11月13日 13:14 ~ 14:35(第 191 轮) |
|
|
|
+| 基线 | 起点 `cfclub @ 309fa0220`(=origin);跑测中推进 `123f768c7`;收尾 ff 至 **`5ad781a00`**(13:14 → 14:35 窗口) |
|
|
|
+| 窗口内需求变更 | **零** — `docs/superpowers/specs`(201 份)/ `tests/test-cases`(16 份)/ `tests/user-scenarios`(11 份)/ `API_REFERENCE.md` 窗口内 `git diff` 命中 0 → **G12 ✅,未触发用例编写闸门(我无需新增/改用例)** |
|
|
|
+| 窗口内源码变更 | **零功能源码** — `cfc-backend/src/main`、`cfc-frontend`、`cfc-langgraph` 窗口 diff 命中 0;唯一变更为**测试契约类 5 个**(S-cfc-197/198/199/200)+ cfc-web 版本号 bump + docs |
|
|
|
+| 负责模块/单元 | 全站:管理端 admin@本机 + 189 · 小程序 H5 fe@本机 + 204 · cfc-langgraph@251(实派) · cfc-backend JUnit(**全量实跑 + 收尾增量复验**) · cfc-web/cfc-frontend Jest · 线上 API 非功能层 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、本轮工作数据汇总
|
|
|
+
|
|
|
+### 1.1 测试用例建设
|
|
|
+
|
|
|
+| 指标 | 数量 | 填写说明 |
|
|
|
+|------|------|----------|
|
|
|
+| **本轮新增测试用例数\*** | **0 个(由我新增);并行会话 +102 例(本地窗口 50 + 收尾远端 52)** | SRS/场景/接口文档窗口零变更 → 未触发用例编写闸门(G12 ✅);窗口内并行会话新增 5 个契约测试类(S-cfc-197 37 例 / S-cfc-198 13 例 / S-cfc-199 17 例 / S-cfc-200 16+19 例),**全部本轮逐类实测取证**,未出现 B-189-2 式「推入未验证」 |
|
|
|
+| **本轮验证执行测试数\*** | **4254 个** | 后端 **3367**(全量实跑 3315 + 收尾增量 52)+ 前端 Jest 740(fe 624 + web 116)+ langgraph 51(**251 实派**)+ 浏览器 41(39 过 + dx 2 跳)+ 线上 API 32 + 根级 23 |
|
|
|
+| **用例通过率** | **96.10%**(4088/4254;剔除 skip **96.67%**) | 红 141 / 跳 25;环比 R190(97.22%)−1.12pct,**红数 +47 全为 TDD 前瞻契约 RED(+45)+ 上游环境红(langgraph +3)+ 装置浮动(−1)**;**剔除全部预期 RED 后 98.34%**,零缺陷回归 |
|
|
|
+| **用例台账** | `tests/test-cases` 16 份 / 表行 **1168** / 唯一 TC **618** | 严格锚点(tests JS/TS/py 排除 generated ∪ Java 测试)**153**;双向命中 **106 = 17.2%**;孤儿锚点 47 / 台账空转 512 |
|
|
|
+
|
|
|
+### 1.2 会话与任务分发
|
|
|
+
|
|
|
+| 指标 | 数量 | 填写说明 |
|
|
|
+|------|------|----------|
|
|
|
+| **分派任务数\*** | **8 个** | R191-1 本机 `admin-desktop`(5/5)+ `frontend-mobile`(6/6)+ `shop-api`(4/4)+ `health`(13/13,串行);R191-2 **189** `admin-desktop`(5/5);R191-3 **204** `frontend-mobile`(6/6);R191-4 **251** `langgraph pytest`(**47/51**,134.17s)+ live 三端点;R191-5 cfc-web Jest(116/116);R191-6 cfc-frontend Jest(609/3/12);R191-7 根级 Jest(7/16);R191-8 线上 API 非功能(25/0/7)+ 收尾增量 3 契约类(13/39) |
|
|
|
+| **恢复智能体会话数\*** | 0 个 | 各节点实探:`189:4090`=200、`204:4091`=200、`251:4096`=200、`251:9000`=404(根)/health 200、本机 4091=OPEN;未遇中断会话 |
|
|
|
+| **当前在用会话数** | 0 个 | 全部结束;251 残留 pytest 进程(2 个,存活 4m33s)已 `kill -9` 清理并 `ps` 复核 0 |
|
|
|
+
|
|
|
+### 1.2b 各会话当前工作状态列表
|
|
|
+
|
|
|
+| 会话标签 | 会话 ID/地址 | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
|
|
|
+|----------|--------------|----------|----------|---------------|----------|------|
|
|
|
+| `local-admin` | 本机 Playwright | done | admin-desktop UI E2E | 1.4m | `d:\cfc\tests` | **5/5**;TC-A-U01~U05 全过(U05 55.3s) |
|
|
|
+| `local-frontend` | 本机 Playwright | done | frontend-mobile UI E2E | 1.9m | `d:\cfc\tests` | **6/6**;B-185 维持消除 |
|
|
|
+| `local-shop` | 本机 Playwright | done | shop-sort API E2E | 9.7s | `d:\cfc\tests` | **4/4** |
|
|
|
+| `local-health` | 本机 Playwright | done | health 鉴权契约 E2E | 5.5s | `d:\cfc\tests` | **13/13**(TC-HP-U01~03 全 401) |
|
|
|
+| `remote-189` | 192.168.16.189:4090 | done | admin-desktop UI E2E | 1.3m | `C:\code\cfc\tests` | **5/5**;HEAD `8524533c8`,spec blob `4703d73fb`=本机 → 可比 |
|
|
|
+| `remote-204` | 192.168.16.204:4091 | done | frontend-mobile UI E2E | 44.7s | `D:\cfc\tests` | **6/6(连续 2 轮)**→ B-95 可销号 |
|
|
|
+| `remote-251` | 192.168.16.251:4096 | done | langgraph pytest + live 探针 | 134.17s | `/sc-data/cfc/cfc-langgraph` | **47/51**;4 红全 429/401 环境;node HEAD `563e6c62d`,`cfc-langgraph` 与本地零 diff |
|
|
|
+| `local-jest` | 本机进程 | done | cfc-web + cfc-frontend + 根级 | web 124s / fe 66s / root 7s | `cfc-web` / `cfc-frontend` / `tests` | web **116/116**、fe **609/3/12**(3 预期 RED)、根级 **7/16**(B-36) |
|
|
|
+| `local-backend` | 本机 mvn | done | **后端全量 386 类** + 收尾增量 3 类 | 1:01h + 2m43s | `d:\cfc\cfc-backend` | 全量 3315(3232/79/4)+ 增量 52(13/39) |
|
|
|
+| `virtual` | dx-bridge | done | D/X 桥接鉴权契约 | 瞬时 | `d:\cfc\tests` | **2 skip**(端点 404,B-DX-1 第 33 轮) |
|
|
|
+
|
|
|
+### 1.3 问题处置
|
|
|
+
|
|
|
+| 指标 | 数量 | 填写说明 |
|
|
|
+|------|------|----------|
|
|
|
+| **新测试发现问题数\*** | **3 个** | ① **B-191-1(P1 流程/证据)**:跑测窗口内远端连续推入 **3 个契约类**(`AdminSupplierManageContractTest` 16 例 10F、`SupplierManageAdminContractTest` 19 例 16F、`DimensionConfigAdminContractTest` 17 例 13F),若不做收尾 fetch + 增量复验,会把 39 例 TDD-RED 当作「未覆盖」或把后续轮次误判为回归 → 本轮已增量复验并计入;② **B-191-2(P1 装置/性能)**:后端全量 **1:01h**(R188 同源码 43:15),慢类 `ArticleCategoryControllerTest` **493.97s**、`AdminFamilyOverviewControllerTest` 341.2s、`GrowthPublicEndpointMappingTest` 334.2s、`GrowthRecordSyncFlowTest` 280.7s、`PlannerBindInviteFlowTest` 178.1s;`cfc-scheduler` 日志 **20524/73287 = 28.0%** → B-152-3 复现;③ **B-191-3(P2 工具/度量)**:线上 API 套件首跑仅 **26 例(19 过 + 7 跳)/5.4min**,二次同命令 **32 例(25 过 + 7 跳)/18.2s** → 首跑口径不完整,报告例数须以「`Running N tests` + summary 例数 = 点名例数」双校验 |
|
|
|
+| **已解决测试相关问题数\*** | **2 个** | ① **B-95 销号(204 节点)**:204 fe **6/6 连续 2 轮**(R190 46.1s + R191 44.7s),满足连续 2 轮判据;② **S-cfc-197 GREEN 确认**:`AdminReportParserManageContractTest` **37/37** 全绿 → 能力键 `admin.reportParser.manage` 实现已落地,可直接转 GREEN(前提:研发侧 `--mark-yellow`/`--mark-green` 登记) |
|
|
|
+| **待解决测试相关问题数** | P0×2 / P1×9 / P2×4 | ① B-152-1/2 CI 清单**漏拦扩至 18 / 陈旧 26**;② **TDD 前瞻契约 RED 94 例(12 类)**待研发实现;③ 存量装置/数据红 24 例(13 类);④ B-177-1 pytest 进程不退出(第 13 轮);⑤ B-156-1/B-170-1 迁移 DDL;⑥ B-162-1 未入库测试类;⑦ B-178-1 反射装置浮动;⑧ B-36 根级 16 红(9082 未起);⑨ B-DX-1 dx 404;⑫ **B-142-2 复发(429/401 上游)**;⑬ B-186-1 live chat/analyze 挂死;⑭ **B-189-1 git SSH 22 仍故障**;⑮ B-191-2 全量耗时劣化 |
|
|
|
+
|
|
|
+### 1.4 本轮 git 提交与推送证据(真理证据)
|
|
|
+
|
|
|
+| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
|
|
|
+|----------|-----------------|------|--------------|----------|------------|------|
|
|
|
+| `(本轮)` | 全站巡检 R191 + 后端全量实跑 + 5 契约类补验 + B-191-1/2/3 + B-95 销号 + S-cfc-197 GREEN | 汇报 | 报告 + 执行日志 + blockers + 研发通知 + 台账 | cfclub | ✅ 推送 `http://git.iwintrue.com/liaoxg/cfc.git`(**SSH 22 仍故障,B-189-1 第 2 轮 HTTP 兜底**) | 结果有变化 → 已提交并通知研发 |
|
|
|
+
|
|
|
+### 1.5 状态机阶段分布(全局进度,研发侧账本口径)
|
|
|
+
|
|
|
+| 阶段 | 键数 | 备注 |
|
|
|
+|------|------|------|
|
|
|
+| RED | 窗口新增 **5 个契约类**(S-cfc-197 已全绿可转 YELLOW/GREEN;S-cfc-198/199/200 为本轮 TDD-RED 前瞻) | 研发状态机口径另计(`sc-key-map.md` 窗口 3 次回填,241/241 全映射达成) |
|
|
|
+| YELLOW | 承袭 | 待研发 `--mark-yellow` 登记 |
|
|
|
+| GREEN | S-cfc-197(**本轮实测 37/37**);S-cfc-182(R190 14/14) | 测试侧已取证 |
|
|
|
+
|
|
|
+### 1.6 数据源健康度
|
|
|
+
|
|
|
+| 数据源 | 读取键数 | 是否正常 | 备注 |
|
|
|
+|--------|----------|----------|------|
|
|
|
+| 需求侧(⏳ wish) | 0 | 正常 | SRS 目标池未启用;specs 201 份可读 |
|
|
|
+| 契约常量(contract) | 5 类新增 | 正常 | S-cfc-197/198/199/200 全部可收集可执行 |
|
|
|
+| 测试用例引用(test_case_map) | 618 唯一 TC | 正常 | 台账扫描正常(表行 1168) |
|
|
|
+| 执行结果回填(case_results) | 全量 386 XML + 增量 3 XML | 正常 | 386/386 无沉默,dump 0 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、历史审查记录(阶段 -1 记忆召回)
|
|
|
+
|
|
|
+| 项 | 内容 |
|
|
|
+|---|---|
|
|
|
+| 上次审查 | **R190(2026-11-13 12:35,`0e6f285da`)**,结论「不通过(承袭,无回归、正向项明确)」,全站 4141/4026(97.22%),红 94;后端采信 R189;langgraph 50/51;204 节点恢复 |
|
|
|
+| 历史遗留 | 后端存量 25 红(13 类)· 根级 16 红(B-36)· fe 3 预期 RED(S-cfc-132/133)· CI 漏拦/陈旧(B-152-1/2)· B-177-1 · B-178-1 · B-186-1 · B-189-1 |
|
|
|
+| 本次是否改善 | **后端由采信转全量实跑(386 类 3315 例,零沉默零编译错)**;**B-95 销号(204 连续 2 轮 6/6)**;**S-cfc-197 37/37 GREEN**;存量 13 类逐类零漂移;浏览器六件套任务级全绿 |
|
|
|
+| 本次是否回退 | **langgraph 50/51 → 47/51(−3)**:4 红全为 `test_auto_tag`,日志 `429 AgnesAI 免费额度耗尽` ×3 + `401 api key ****ab12 invalid` ×5 → **上游凭据/配额环境型**(节点 `cfc-langgraph` 与本地零 diff、窗口源码零变更)→ 非代码回归;**G1 97.22% → 96.10%**(红 +47 全为 TDD 前瞻契约 RED 45 + 环境红 3 − 装置浮动 1) |
|
|
|
+| 教训应用 | ①「采信不得超过 2 轮」→ 本轮强制全量实跑(R189/R190 均采信);② 收尾**两次** fetch(提交前 + 推送前)→ 本轮第二次抓到远端 3 个新契约类并增量复验(B-191-1);③ 绝不用「类/分钟」外推或提前 kill(R188 教训):本轮前半程 31 类/22min 仍耐心等完,最终 1:01h 自然收口;④ 远程派发用 `setsid nohup` 分离 + 单次读,不在等待期建 shell(B-125);⑤ 上游 401/429 与代码回归用「节点源码零 diff + 窗口源码零变更」判别(B-142-2 判别式) |
|
|
|
+
|
|
|
+> 本次为该对象**第 191 次**审查,有历史记录;上述内容仅作对照,**本轮全站所有维度均为本轮实测**(后端全量 + 5 契约类定向 + 浏览器三节点 + langgraph 251 实派 + Jest 三套 + 线上 API),无承袭项。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、项目画像与覆盖矩阵
|
|
|
+
|
|
|
+### 3.1 项目画像
|
|
|
+
|
|
|
+| 维度 | 内容 |
|
|
|
+|------|------|
|
|
|
+| 业务定位 | 家庭教育成长平台(五维能量 身/心/智/行/富):小程序家长端 + 规划师端 + 管理后台 + 独立商城 |
|
|
|
+| 技术栈 | Spring Boot 2.7.18 + MyBatis-Plus + Java 8(9082)/ uni-app 微信小程序(Vue2)/ Vue2 + Element UI(8082)/ FastAPI + LangGraph + ChromaDB(9000@251) |
|
|
|
+| 模块结构 | `cfc-backend`(366 控制器 / 395 测试源 / 386 执行类)/ `cfc-frontend`(42 测试文件 / 624 例)/ `cfc-web`(17 套件 / 116 例)/ `cfc-langgraph`(51 例 @251)/ `tests`(e2e-live 5 文件 + e2e/api 点名 4 文件) |
|
|
|
+| 关键路径 | 登录/家庭/成员 → 五维能量 → 任务/成长记录 → 健康报告上传解析 → 测评订单 → 商城/支付 → AI 对话(LangGraph) |
|
|
|
+| 测试现状 | **本轮全实测**:后端全量 3315 + 增量 52 + fe 624 + web 116 + langgraph 51 + 浏览器 41 + API 32 + 根级 23 = **4254 例** |
|
|
|
+| 质量目标 | 全量用例全绿、覆盖 SRS 与用户场景(含异常流)、浏览器双节点可复现、结果变更即提交并通知研发 |
|
|
|
+| 风险点 | ① 后端 TDD 前瞻契约 RED 94 例(12 类)待实现;② 存量装置/数据红 24 例(13 类);③ CI 清单双向失真(**漏拦 18 / 陈旧 26**);④ 上游 LLM 凭据 + 配额双故障(429/401,live chat/analyze 挂死);⑤ 根级 16 红(9082 未起);⑥ 迁移 DDL 缺陷(B-156-1/B-170-1);⑦ pytest 进程不退出(B-177-1);⑧ 全量耗时劣化至 1:01h(B-191-2);⑨ git SSH 22 故障(B-189-1) |
|
|
|
+| 待核实项 | S-cfc-176 幂等分支排期 · 251 上游 key 更换(****ab12)与配额 · 204 销号后续稳定性 · B-156-1/B-170-1 修复状态 · S-cfc-186 跨家庭 IDOR 研发排期 · S-cfc-198 三项缺口(重试/分批/角色门禁)排期 |
|
|
|
+
|
|
|
+### 3.2 20 类测试覆盖矩阵(全类不省略)
|
|
|
+
|
|
|
+| # | 测试类型 | 三态 | 证据(本轮实测) |
|
|
|
+|---|----------|------|------------------|
|
|
|
+| 1 | 单元测试 | ✅ 已发现 | 后端全量 386 类 3315 例(**本轮实跑**)+ 增量 3 类 52 例;前端 624;管理端 116 |
|
|
|
+| 2 | 测试覆盖率 | ⚠️ 部分 | 管理端 Jest 覆盖率可产出(Lines 未变);后端未开 jacoco(未授权改 pom) |
|
|
|
+| 3 | 变异测试 | ❌ 未发现 | 全仓无 pitest/mutation 配置(扫描 0 命中) |
|
|
|
+| 4 | 集成测试 | ✅ 已发现 | `integration/*` **本轮实跑**:EnergySystemFlowTest 6F、GuideModuleIntegrationTest 1E、DailyCheckinStreakFlowTest 6/6、AdminFamilyOverview 341s 全绿等 |
|
|
|
+| 5 | 契约测试 | ✅ 已发现(本轮重点) | 5 类全实测:S-cfc-197 **37/37 GREEN**、S-cfc-198 **13(6F/7绿)**、S-cfc-199 **17(13F/4绿)**、S-cfc-200 **35(26F/9绿)**;历史契约窗 12 类 94 红承袭 |
|
|
|
+| 6 | 接口 API 测试 | ✅ 已发现 | 线上 API 32 例(本轮实测:**25 过 / 7 跳 / 0 红,18.2s**;首跑 26 例异常见 B-191-3) |
|
|
|
+| 7 | 系统/端到端 | ✅ 已发现 | 浏览器 41 例(**39 过 + 2 跳**):admin 5(本机+189)、fe 6(本机+204)、shop 4、health 13 |
|
|
|
+| 8 | 验收 UAT | ⚠️ 待核实 | 无独立 UAT 包;以浏览器 39 例作为系统级验收代理 |
|
|
|
+| 9 | BDD 规格 | ✅ 已发现 | 用户场景 11 份 / SC 唯一 244;被台账引用 152 = **62.3%** |
|
|
|
+| 10 | 冒烟测试 | ✅ 已发现 | `api-smoke.spec.js` 本轮全绿(含自注册链路) |
|
|
|
+| 11 | 回归测试 | ✅ 已发现 | 存量 13 类逐类零漂移(**第 26 次**);浏览器/fe/web/API 全绿或零漂移 |
|
|
|
+| 12 | 探索性测试 | ⚠️ 部分 | 历轮浏览器人工探索记录;本轮未安排新探索项 |
|
|
|
+| 13 | 性能测试 | ❌ 未实测 | 未授权联网压测;仅 API 时延观察 + 后端耗时画像(B-191-2 493.97s 单类) |
|
|
|
+| 14 | 可靠性测试 | ⚠️ 部分 | **B-177-1 第 13 轮复现**:summary 打印后进程存活 4m33s(`Sl`),`EXIT=` 永不落盘;pytest 本身 134.17s 正常收口 |
|
|
|
+| 15 | 安全测试 | ✅ 已发现 | `nonfunc-security.spec.js` 11 例本轮全绿;匿名 6 端点 **6/6 = 401** |
|
|
|
+| 16 | 兼容性测试 | ⚠️ 部分 | 双视口(desktop 1440 / mobile 375)实测通过;无多浏览器矩阵 |
|
|
|
+| 17 | 可用性测试 | ⚠️ 部分 | 登录-主框架-核心菜单旅程 5/5 × 2 节点;无专项可用性问卷 |
|
|
|
+| 18 | 无障碍测试 | ❌ 未发现 | 无 axe/pa11y 配置 |
|
|
|
+| 19 | QA 流程 | ⚠️ 部分 | 汇报/台账/blockers 闭环在跑;**CI 清单漏拦扩至 18**(B-152-1/2 第 22 轮) |
|
|
|
+| 20 | 质量指标 | ⚠️ 部分 | 全站 96.10%(G1 阈值 98% 未达);锚点 **17.2%**(R190 口径 20.1%,口径差异见 §附录 C) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、五要素问题清单
|
|
|
+
|
|
|
+### P1-1 后端 TDD 前瞻契约 RED 94 例(12 类)待研发实现
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | 本窗口与收尾远端共推入 5 个契约类,其中 4 类为 TDD-RED 先行态,累计 **94 例红 / 12 类**(`TeacherMindRecord` 12 · `TeacherAppointmentGuard` 10 · `AdminKnowledgeBaseManage` 6 · `FamilyAutoCreateForPurchase` 4 · `PlanContentSafetyReview` 4 · `TeacherDataIsolationScT13` 4 · `TeacherPlanCreate` 4 · `NutritionPlanTeacher` 3 · `TeacherAssessmentRecord` 3 · `TeacherDimensionScore` 2 · `GuideFamilyTaskReview` 2 · `TeacherFamilyOverview` 1 · 远端三类 39 例) |
|
|
|
+| ② 测试 bug 点 | `AdminKnowledgeBaseManageContractTest#syncFailureRetry_syncPathShouldSupportRetry` / `#largeBatch_syncAndBackfillShouldSupportBatching` / `#permissionFlow_kbWriteEndpointsShouldEnforceRole`(断言 `expected true but was false`);`SupplierManageAdminContractTest`(19 例 16F);`DimensionConfigAdminContractTest`(17 例 13F) |
|
|
|
+| ③ 最优修改方案 | 研发按能力键逐项实现:① `KnowledgeBaseController` / `KnowledgeBaseVectorController` 补平台角色门禁(对齐 `AdminUnifiedKnowledgeController.allowed`);② 同步/回填路径补 `syncBatch` / `BATCH_SIZE` 分批;③ 补 `maxRetries` / `syncWithRetry` / `@Retryable` 重试;④ SC-A-06 停用在售商品守卫;⑤ 各 Teacher/成长域实现按 `sc-key-map.md` 排期 |
|
|
|
+| ④ 修改目的 | 恢复「契约先行」闭环:契约红 → 实现 → GREEN;当前 94 红使 G2 无法归零,且掩盖真实回归信号 |
|
|
|
+| ⑤ 修改后能否闭环 | 能。复测方式:`mvn -o -B test -Dtest=<类>` 逐类定向,单类 0F 且连续 2 轮 → 移出台账;契约类全绿后 `gate_evaluator` 的 G2 分母同步收缩 |
|
|
|
+
|
|
|
+### P1-2 存量装置/数据红 24 例(13 类,零漂移第 26 次)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | 13 类 24 红:`EnergySystemFlowTest` 6F、`GrowthPublicEndpointMappingTest` 5E、`DimensionRegistryMapContractTest` 3F、`OrchestrationEngineTest`/`OrchestrationIntegrationTest`/`MembershipPaySwitchTest`/`PaymentServiceORDRoutingTest`/`TeamProfitCronContractTest`/`UserServiceWechatLoginTest`/`UserServiceWechatLoginContractTest`/`GuideModuleIntegrationTest`(1E)/`MembershipPlanPurchaseContractTest`/`TaskReviewScP11ContractTest` 各 1 |
|
|
|
+| ② 测试 bug 点 | `TaskReviewScP11ContractTest` 2F→1F 浮动(`ReflectionUtils` 反射装置无规则,B-178-1);`GrowthPublicEndpointMappingTest` 5E 因该文件未入库(`??`,B-162-1)且 334.2s;`TeamProfitCronContractTest` 平台费截断(数据) |
|
|
|
+| ③ 最优修改方案 | ① B-178-1 用 `@MockBean` 替代反射注入;② B-162-1 把 `GrowthPublicEndpointMappingTest` / `JwtInterceptorGrowthPolicyTest` / `ArticleTagsContractTest` 三个 `??` 文件入库;③ `TeamProfitCron` 平台费按 `BigDecimal` 精度修正(断言侧改 `compareTo` 或实现侧改舍入) |
|
|
|
+| ④ 修改目的 | 消除装置噪声,使「红」只代表产品缺陷(G2/G13 可信) |
|
|
|
+| ⑤ 修改后能否闭环 | 能。定向复跑单类 0F 连续 2 轮 → 从 `BACKEND_OBSERVED_CLASSES` 移除 → CI 硬门禁自动收紧 |
|
|
|
+
|
|
|
+### P1-3 B-191-1 窗口内多次推入契约类,全量与收尾口径不一致(流程)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | 13:14 基线 `309fa0220`;跑测中本地 HEAD → `123f768c7`(+S-cfc-197 37 例);收尾 fetch 远端 +11 提交(`5ad781a00`,+S-cfc-199/200 三个契约类 52 例)。若只跑一次全量就定稿,会把 52 例(39 红)记为「未覆盖」 |
|
|
|
+| ② 测试 bug 点 | 非用例缺陷,属**取证流程缺口**:单次 fetch + 单次全量无法覆盖窗口尾部的并行提交 |
|
|
|
+| ③ 最优修改方案 | 固化「双 fetch + 增量定向」:提交前 fetch 一次、推送前再 fetch 一次;若 `git diff --name-only` 命中 `src/test/**` → 逐类定向复跑并计入总量;命中 `src/main/**` → 全量重跑或标「截断」 |
|
|
|
+| ④ 修改目的 | 保证「报告例数 = 真实覆盖率」,避免已实现资产被漏记、避免把新契约红误判为回归 |
|
|
|
+| ⑤ 修改后能否闭环 | 能。本轮已按此执行(52 例全部取证,39 红计入 G2 的「前瞻契约」栏);下轮起写入 SOP §阶段 4 |
|
|
|
+
|
|
|
+### P1-4 B-152-1/2 CI 清单双向失真(漏拦扩至 18 类)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | `.gitlab-ci.yml:61` `BACKEND_OBSERVED_CLASSES` 33 类 vs 实测红类 25 类 → **漏拦 18 类**(含本轮 5 个新契约类:`AdminKnowledgeBaseManage` / `FamilyAutoCreateForPurchase` / `GuideFamilyTaskReview` / `NutritionPlanTeacher` / `PlanContentSafetyReview` / `TeacherAppointmentGuard` / `TeacherAssessmentRecord` / `TeacherDataIsolationScT13` / `TeacherDimensionScore` / `TeacherFamilyOverview` / `TeacherMindRecord` / `TeacherPlanCreate` / `SupplierManageAdmin`? 等)、**陈旧 26 类**(早已全绿仍被排除) |
|
|
|
+| ② 测试 bug 点 | 非用例缺陷,属 CI 配置漂移;`backend-blocking-junit` job 在含红例分支上必然失败,同时对 26 个已绿类失去回归守护 |
|
|
|
+| ③ 最优修改方案 | 用本轮实测红类集合重写清单(25 类),并加一条 CI 步骤:`mvn test` 后自动比对 surefire 红类与清单,差异即 fail 并输出差集 |
|
|
|
+| ④ 修改目的 | 让硬门禁真实生效(既不漏拦红类,也不虚化 26 类的守护) |
|
|
|
+| ⑤ 修改后能否闭环 | 能。验证方式:在含红例分支跑一次 CI,`backend-blocking-junit` 应「必红且红因准确」 |
|
|
|
+
|
|
|
+### P1-5 B-142-2 复发 + B-186-1 live 链路挂死(上游 LLM)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | langgraph@251:pytest **47/51**,4 红全 `test_auto_tag`;日志 `429 You've reached the API rate limit for free users (AgnesAI)` ×3 + `401 Authentication Fails, Your api key: ****ab12 is invalid` ×5;同实例 `/health` 200/2.07ms,但 `/api/v1/chat` **000/40.0s/0B**、`/api/v1/analyze` **000/50.0s/0B** |
|
|
|
+| ② 测试 bug 点 | `app/graphs/chat_graph.py:148/195`(召回/保存记忆 401)、`app/agents/intent_classifier.py:62`(429 后 `默认 chat` 静默兜底) |
|
|
|
+| ③ 最优修改方案 | 运维更换有效 key 并升级配额;研发把 `intent_classifier` 的兜底改为「显式降级 + 可观测指标」;`chat_graph` 对 401 快速失败而非重试挂死 |
|
|
|
+| ④ 修改目的 | 使「单测绿」与「真实链路可用」不再背离(R188 曾出现 51/51 绿 + chat 120s 零字节) |
|
|
|
+| ⑤ 修改后能否闭环 | 能。判据:pytest 51/51 **且** live chat/analyze 200 且 p95 < 30s,连续 2 轮 |
|
|
|
+
|
|
|
+### P2-1 B-191-2 全量耗时劣化至 1:01h(装置/性能)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | 同源码 R188 43:15 → 本轮 1:01h(+41%);慢类 `ArticleCategoryControllerTest` **493.97s**、`AdminFamilyOverviewControllerTest` 341.2s、`GrowthPublicEndpointMappingTest` 334.2s、`GrowthRecordSyncFlowTest` 280.7s、`PlannerBindInviteFlowTest` 178.1s(前 5 占 ~45%);`cfc-scheduler` 日志 20524/73287 = **28.0%**、上下文启动多次 |
|
|
|
+| ② 测试 bug 点 | 装置层:controller 层 `@SpringBootTest` 全上下文 + `src/test/resources` 缺 `application-test.yml` → 每类重跑 `DatabaseInitializer` 全量迁移;`@EnableScheduling` 在测试态常驻 |
|
|
|
+| ③ 最优修改方案 | ① 增设 `src/test/resources/application-test.yml`(禁 `@EnableScheduling`、共享 datasource);② 慢类改 `@WebMvcTest + @MockBean`;③ 修 B-156-1/B-170-1 两条迁移语法错(避免 34 次建表全失败的重试开销) |
|
|
|
+| ④ 修改目的 | 把全量压回 ≤45min,使「每轮全量实跑」可持续(当前 1h+ 已挤压巡检预算) |
|
|
|
+| ⑤ 修改后能否闭环 | 能。判据:`mvn -o -B clean test` 的 `Total time` ≤ 45:00 且类数不变 |
|
|
|
+
|
|
|
+### P2-2 B-191-3 线上 API 套件首跑例数不完整(工具/度量)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | 首跑 `--reporter=line` 得 **26 例(19 过 + 7 跳)/5.4min**;二次同命令 `--reporter=list` 得 **32 例(25 过 + 7 跳)/18.2s**(与 R190 一致)。首跑 6 例未计入,且耗时高 18 倍 |
|
|
|
+| ② 测试 bug 点 | 无用例缺陷;属**运行口径不可复现**(疑与首次冷启动/网络抖动/`--output` 目录复用有关) |
|
|
|
+| ③ 最优修改方案 | 采集侧固化「双校验」:必须同时满足 `Running N tests` 的 N = 点名文件静态用例数、summary 的 pass+fail+skip = N;任一不符即重跑并记录两次口径 |
|
|
|
+| ④ 修改目的 | 防止「例数漂移」被当成覆盖变化(本项目已多次出现 990 vs 32 的口径问题,B-173-2) |
|
|
|
+| ⑤ 修改后能否闭环 | 能。本轮已用二次运行定案(32 例);下轮起把双校验写入附录命令模板 |
|
|
|
+
|
|
|
+### P2-3 B-177-1 pytest 进程不退出(第 13 轮)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | `summary` 已打印(`4 failed, 47 passed in 134.17s`)但 2 个进程存活 **4m33s**(`ps` 状态 `Sl`),`echo EXIT=$rc` 永不执行 → 日志无 `EXIT=` 行;`kill -9` 后清理干净 |
|
|
|
+| ② 测试 bug 点 | `app/main.py` lifespan 未 `await client.aclose()`(线索 `RuntimeWarning: coroutine 'JavaClient._get_client' was never awaited`);派发器缺超时兜底 |
|
|
|
+| ③ 最优修改方案 | 产品侧补 shutdown 钩子关闭 http client;派发器命令加 `timeout -k 10 900`,并以 summary 文本 + 进程存活双判据定案 |
|
|
|
+| ④ 修改目的 | CI 里 pytest job 不挂死(否则流水线超时) |
|
|
|
+| ⑤ 修改后能否闭环 | 能。判据:进程在 summary 后 ≤10s 退出且 `EXIT=0` 落盘 |
|
|
|
+
|
|
|
+### P2-4 B-189-1 git SSH 22 故障(第 2 轮)
|
|
|
+
|
|
|
+| 要素 | 内容 |
|
|
|
+|---|---|
|
|
|
+| ① 问题描述 | `git fetch origin` 走 `git@git.iwintrue.com:iwt/cfc.git` 报 `Please make sure you have the correct access rights`;改 `http://git.iwintrue.com/liaoxg/cfc.git` 后 fetch/推送均成功 |
|
|
|
+| ② 测试 bug 点 | 环境侧(Gogs sshd 22 端口不可用),非代码 |
|
|
|
+| ③ 最优修改方案 | 运维恢复 22 端口;或把 CI/自动化节点的 `origin` fetch URL 一并改为 HTTP(当前 push URL 已是 HTTP,fetch 仍 SSH) |
|
|
|
+| ④ 修改目的 | 保证自动化闭环的「真理证据」通道不依赖人工兜底 |
|
|
|
+| ⑤ 修改后能否闭环 | 能。判据:`git fetch origin` 无凭据报错且 `rev-list --left-right --count` 可算 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、域结论表
|
|
|
+
|
|
|
+| 审查维度 | 负责专家 | 结论 | 关键证据 |
|
|
|
+|---|---|---|---|
|
|
|
+| 单元·组件级(单元/覆盖率/变异) | 苏雅 | ⚠️ 部分通过 | 后端 386 类 3315 例实跑(3232 过 / 79 红 / 4 跳);386/386 XML 无沉默;覆盖率仅管理端可产出;**变异测试全仓 0 配置** |
|
|
|
+| 集成·接口级(集成/契约/API) | 柯砚 | ⚠️ 部分通过 | 集成域实跑(EnergySystemFlow 6F、GuideModule 1E、DailyCheckin 6/6);契约 5 类全实测(S-cfc-197 GREEN、S-cfc-198 6F、远端三类 39F);线上 API 32 例 25/0/7 |
|
|
|
+| 系统·验收级(E2E/UAT/BDD) | 白樾 | ✅ 通过(浏览器级) | admin 5/5(本机+189)、fe 6/6(本机+204)、shop 4/4、health 13/13;UAT 无独立包(以 39 例代理);SC 244 映射 152 = 62.3% |
|
|
|
+| 测试保障级(冒烟/回归/探索) | 闻朔 | ✅ 通过 | 冒烟全绿;回归零漂移第 26 次;探索性无新增章程(承袭) |
|
|
|
+| 性能·可靠性 | 骆骋 | ⚠️ 部分 | 全量 **1:01h**(B-191-2,慢类 493.97s);pytest 进程不退出(B-177-1 第 13 轮);未授权压测 |
|
|
|
+| 安全 | 关屿 | ✅ 通过(本轮实证) | 匿名 6 端点 **6/6 = 401**;`nonfunc-security` 11 例全绿;S-cfc-198 揭示知识库写入**无角色门禁**(已记 P1-1 ③) |
|
|
|
+| 兼容·体验 | 阮清 | ⚠️ 部分 | 双视口通过;无多浏览器矩阵;无 axe/pa11y |
|
|
|
+| 流程·度量·代码 | 何序 | ⚠️ 部分 | CI 漏拦 18 / 陈旧 26(G11 ❌);锚点 17.2%;`@GetMapping` 8 处仍违规范;specs 201 份、控制器 366 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 六、门禁结论
|
|
|
+
|
|
|
+**结论:不通过(有条件)** —— 全站 4254 例 / **4088 过 = 96.10%(剔 skip 96.67%)**,红 141。红数环比 +47 的构成:**TDD 前瞻契约 RED +45**(本地 S-cfc-198 6 + 收尾远端三类 39)、**上游环境红 +3**(langgraph 429/401)、**装置浮动 −1**(`TaskReviewScP11` 2F→1F),**零缺陷回归**;剔除全部预期 RED(97 例)后 **98.34%**。阻断项为**前瞻契约待实现 + 存量装置红 + CI 清单失真 + 上游 key/配额失效 + 全量耗时劣化**,均非本轮新增回归。
|
|
|
+
|
|
|
+| 门禁 | 判定 | 依据(本轮实测) |
|
|
|
+|------|------|------------------|
|
|
|
+| G1 全站通过率 ≥98% | ❌ **96.10%** | 4088/4254(剔 skip 96.67%,剔预期 RED 98.34%);−1.12pct 因前瞻契约 +45 与环境 +3 |
|
|
|
+| G2 后端红归零/契约裁决 | ❌ **118 红** | 全量 79(73F+6E)+ 增量 39 = 存量 **24(13 类)** + 前瞻契约 **94(12 类)**;存量逐类零漂移 |
|
|
|
+| G3 前端双绿 | ⚠️ fe 609/624(3 预期 RED)+ web **116/116**;浏览器 fe **6/6 双节点** | 3 红全为 S-cfc-132/133 未交付(AC-R1/AC-R2/AC-2 RED-A7) |
|
|
|
+| G4 编译可编译 | ✅ | `Compiling 2121 main + 392 test source files`,0 错(含 5 个新契约类) |
|
|
|
+| G5 结果完整性 | ✅ | **386/386** XML 可聚合、无沉默类;`*.dump` 0;增量 3 XML 完整 |
|
|
|
+| G6 浏览器 E2E | ✅ **39 过 + 2 跳** | admin 5/5(本机 1.4m + 189 1.3m)、fe 6/6(本机 1.9m + 204 44.7s)、shop 4/4(9.7s)、health 13/13(5.5s)、dx 2 跳 |
|
|
|
+| G7 langgraph | ❌ **47/51(92.2%)** | 4 红全 `test_auto_tag`;429 AgnesAI ×3 + 401 `****ab12` ×5;live chat 000/40s、analyze 000/50s;节点源码与本地零 diff → 环境红 |
|
|
|
+| G8 匿名鉴权 401 | ✅ **6/6** | mind/fortune、energy/overview、health/plan/list、xiaomi-health、huawei-health、admin/families/overview 全 **401 `请先登录`** |
|
|
|
+| G9 用例锚定 SRS | ❌ **17.2%** | 双向命中 106 / 台账 618;锚点 153(孤儿 47、空转 512);SC 映射 62.3% |
|
|
|
+| G10 节点可比 | ✅ 三节点 | 189 admin 5/5(spec blob `4703d73fb`=本机)、204 fe 6/6、251 pytest(`cfc-langgraph` 与本地零 diff)+ 本机四件套 |
|
|
|
+| G11 CI 硬门禁 | ❌ | 清单 33 vs 实测红 25 → **漏拦 18 / 陈旧 26**(第 22 轮未修) |
|
|
|
+| G12 SRS 变更驱动用例更新 | ✅ | specs 201 / test-cases 16 / 场景 11 / API_REFERENCE 窗口**零变更** → 我无需新增或改用例;窗口 5 个契约类由并行会话产出,**本轮全部补验** |
|
|
|
+| G13 存量红零漂移 | ✅ **第 26 次** | 13 类逐类与 R190 一致(唯一差异 `TaskReviewScP11` 2F→1F 装置浮动) |
|
|
|
+| G14 场景→用例映射 | ⚠️ **62.3%** | 244 SC 中 152 被台账引用 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 七、变更触发动作(用户规则:结果有变 → 提交远程 + 通知研发)
|
|
|
+
|
|
|
+| 项 | 内容 |
|
|
|
+|---|---|
|
|
|
+| 结果是否变化 | **是** — 后端由「采信」转全量实跑(386 类 3315 例,新增 5 契约类 102 例);langgraph 50/51→47/51;B-95 销号;S-cfc-197 GREEN;红 94→141(全为预期 RED/环境) |
|
|
|
+| 提交 | 本轮报告 + 执行日志 + blockers + 研发通知 + 台账(详见 §1.4) |
|
|
|
+| 推送 | ✅ `http://git.iwintrue.com/liaoxg/cfc.git` → `cfclub`(SSH 22 故障,HTTP 兜底第 2 轮) |
|
|
|
+| 通知研发 | ① 仓库 `docs/tdd/notice-2026-11-13-R191-研发通知.md`;② `docs/tdd/test/blockers.md` R191 段(P0/P1 排序);③ Agent Mail **仍不可用**(`GetMe` → `not_bound`,「请勿重试」)→ 以 ①+②+推送落地 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 八、待办
|
|
|
+
|
|
|
+| 优先级 | 事项 | 归属 |
|
|
|
+|---|---|---|
|
|
|
+| P0 | CI `BACKEND_OBSERVED_CLASSES` 按实测 25 类重写(漏拦 18 / 陈旧 26) | 研发/CI |
|
|
|
+| P0 | 251 上游 LLM key 更换(`****ab12` invalid)+ 配额升级 | 运维 |
|
|
|
+| P1 | 前瞻契约 RED 94 例逐键实现(S-cfc-198 重试/分批/角色门禁优先) | 研发 |
|
|
|
+| P1 | 存量 13 类装置红治理(`@MockBean` 替反射、3 个 `??` 测试类入库、平台费精度) | 研发/测试 |
|
|
|
+| P1 | 全量耗时压回 ≤45min(`application-test.yml` + 慢类拆 `@WebMvcTest`) | 测试/研发 |
|
|
|
+| P2 | pytest shutdown `aclose()` + 派发器 `timeout -k 10 900` | 研发/测试 |
|
|
|
+| P2 | git SSH 22 恢复(或把 fetch URL 一并改 HTTP) | 运维 |
|
|
|
+| P2 | 9082 本地起服务后复跑根级 16 红(B-36) | 测试 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 附录 A:本轮命令与口径(可复现)
|
|
|
+
|
|
|
+```bash
|
|
|
+# 环境探针(SOP 第一步)
|
|
|
+/d/jdk1.8.0_25/bin/java -version && JAVA_HOME=/d/jdk1.8.0_25 /d/maven/apache-maven-3.6.1/bin/mvn -v
|
|
|
+
|
|
|
+# 后端全量(工程根必须在 cfc-backend)
|
|
|
+cd d:/cfc/cfc-backend && JAVA_HOME=/d/jdk1.8.0_25 /d/maven/apache-maven-3.6.1/bin/mvn -o -B clean test # 1:01h
|
|
|
+# 聚合:surefire XML → 386 类 / 3315 例 / 73F+6E+4S
|
|
|
+
|
|
|
+# 收尾增量(快进 5ad781a00 后)
|
|
|
+mvn -o -B test -Dtest='AdminSupplierManageContractTest,SupplierManageAdminContractTest,DimensionConfigAdminContractTest' # 52 例 / 39F
|
|
|
+
|
|
|
+# 浏览器(必须在 tests/ 内跑;每节点 1 个浏览器任务,本机串行)
|
|
|
+cd d:/cfc/tests
|
|
|
+npx playwright test --config=playwright.config.live.js --project=admin-desktop
|
|
|
+npx playwright test --config=playwright.config.live.js --project=frontend-mobile
|
|
|
+npx playwright test --config=playwright.config.live.js --project=shop-api
|
|
|
+npx playwright test --config=playwright.config.health.js # health 不在 live config 的 project 内
|
|
|
+npx playwright test --config=playwright.config.live.js --project=dx-bridge
|
|
|
+
|
|
|
+# 189 节点 admin(单节点任务)
|
|
|
+node _r190_189_admin.cjs kick && node _r190_189_admin.cjs read
|
|
|
+# 204 节点 frontend(openCode 在 204:4091,项目 D:\cfc)
|
|
|
+node _r190_204_run.cjs
|
|
|
+# 251 节点 langgraph pytest(setsid 分离 + 单次读,禁止轮询建 shell)
|
|
|
+node _r191_251_lg.cjs kick / read / run
|
|
|
+
|
|
|
+# Jest
|
|
|
+cd d:/cfc/cfc-web && npx jest --ci # 116/116
|
|
|
+cd d:/cfc/cfc-frontend && npx jest --ci # 609 passed / 3 failed / 12 skipped
|
|
|
+cd d:/cfc/tests && npx jest --config=jest.config.js # 7/16(9082 未起)
|
|
|
+
|
|
|
+# 线上 API 32 例(点名 4 文件,勿带全量 testMatch)
|
|
|
+cd d:/cfc/tests && npx playwright test -c playwright.config.api.js --output=../_r191_api2 \
|
|
|
+ e2e/api/api-smoke.spec.js e2e/api/nonfunc-security.spec.js \
|
|
|
+ e2e/api/nonfunc-perf-compat.spec.js e2e/api/traceability-p94-p95-c26.spec.js --reporter=list
|
|
|
+
|
|
|
+# 匿名鉴权探针
|
|
|
+for u in /api/mind/fortune /api/energy/overview /api/health/plan/list /api/xiaomi-health/status /api/huawei-health/status /api/admin/families/overview; do
|
|
|
+ curl -s -m 12 -X POST -H 'Content-Type: application/json' -d '{}' -w " [%{http_code}]\n" "http://cfc.iwintrue.com$u"; done
|
|
|
+```
|
|
|
+
|
|
|
+## 附录 B:窗口 5 个契约类定向实测明细(B-191-1 补验)
|
|
|
+
|
|
|
+| 契约类 | 关联键 | 例数 | 通过 | 红 | 结论 |
|
|
|
+|---|---|---|---|---|---|
|
|
|
+| `AdminReportParserManageContractTest` | S-cfc-197 `admin.reportParser.manage` | 37 | **37** | 0 | **GREEN ✅**(实现已落地,可转 YELLOW/GREEN) |
|
|
|
+| `AdminKnowledgeBaseManageContractTest` | S-cfc-198 `admin.knowledgeBase.manage` | 13 | 7 | **6** | 预期 RED:同步失败重试 / 大批量分批 / base+vector 角色门禁三项未实现 |
|
|
|
+| `DimensionConfigAdminContractTest` | S-cfc-199 `admin.dimension.config` | 17 | 4 | **13** | 预期 RED(维度/权重/上限 CRUD + 来源比例治理未落地) |
|
|
|
+| `AdminSupplierManageContractTest` | S-cfc-200 `admin.supplier.manage` | 16 | 6 | **10** | 预期 RED(410 废弃壳 / 边界门禁 / role 守卫) |
|
|
|
+| `SupplierManageAdminContractTest` | S-cfc-200 契约级 | 19 | 3 | **16** | 预期 RED(SC-A-06 停用在售商品守卫未落地) |
|
|
|
+| **合计** | — | **102** | **57** | **45** | 45 红全为 TDD 前瞻态,非缺陷回归 |
|
|
|
+
|
|
|
+## 附录 C:度量口径声明(B-124 并存口径)
|
|
|
+
|
|
|
+| 指标 | 本轮口径 | 数值 | 与 R190 差异说明 |
|
|
|
+|---|---|---|---|
|
|
|
+| 台账 TC 唯一 | `tests/test-cases/*.md` 全量 `TC-*` 去重 | **618** | R190 报 308 为「单套命名」口径;本轮含 `TC-<域>-<标签>-<NN>` 与 `TC-<域>-U<NN>` 两套命名 |
|
|
|
+| 表行 | 台账 md 中以 `|` 开头行 | **1168** | R190 报 876(同一差异来源) |
|
|
|
+| 严格锚点 | `tests/**` JS/TS/py(排除 `generated`)∪ `cfc-backend/src/test/**/*.java` | **153** | R190 报 115(未并 Java 测试锚点) |
|
|
|
+| 双向命中(G9) | 台账 ∩ 锚点 | **106 = 17.2%** | R190 报 20.1%(= 62/308,分母口径不同) |
|
|
|
+| 场景→用例 | SC ∩(台账出现的 SC) | **152/244 = 62.3%** | R190 报 57.9%/72.1%(三套口径并存,见 B-124) |
|
|
|
+
|
|
|
+> 口径差异属既有 B-124 问题(度量脚本多口径),**不与 R190 直接比大小**;本轮同时给出全部原始数以便追溯。
|
|
|
+
|
|
|
+## 附录 D:本轮遗留取证文件(未入库,供复核)
|
|
|
+
|
|
|
+`_r191_backend_full.log`(1:01h 全量日志 73287 行)、`_r191_incr.log`(增量 52 例)、`_r191_browser.log`、`_r191_api.log`、`_r191_web_jest.log`、`_r191_fe_jest.log`、`_r191_root_jest.log`、`_r191_251_lg.cjs`、`_r191_metrics.py`、`_r191_api/`、`_r191_api2/`、`_r191_pw_*`。
|