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

docs(tdd): 测试负责人 10:45 轮(契约复验 71 例 68绿/3红(3红全为P-2 MapContract口径);testCompile 216源0错 B-10连续第5轮无复发;2 YELLOW 连续第5轮复验通过;研发 DONE 11/YELLOW 2/RED 0 SC-P-10/11 已上线;mark-green 实测仍被拒=纯状态机同步缺口第14轮;O-1 更新)

E2E Test Bot 1 неделя назад
Родитель
Сommit
df43ca9d0c

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
docs/tdd/orchestration/pending.md


+ 98 - 0
docs/tdd/test/automation-run-2026-11-05-1045.md

@@ -0,0 +1,98 @@
+# 测试负责人巡检报告(2026-11-05 10:45 轮)
+
+> 角色:测试负责人(cfc-tester)| 触发:自动化定时任务 10:27 | 工作区:d:/cfc(主分支 cfclub)
+> 数据来源:离线契约测试实跑 + `discover_tests.py` / `test_inventory.py` 重扫 + git 真理证据核验 + 研发侧汇报交叉对照
+
+---
+
+## 一、本轮核心证据
+
+### 1.1 契约测试实跑(本轮亲自执行,8 类 71 例 + CfBalance 33 例)
+
+| 测试类 | 用例数 | 结果 | 结论 |
+|---|---|---|---|
+| HealthReportControllerCreateReportTest | 5 | 5/5 | ✅ 全绿 |
+| DanAssessmentControllerGetActiveMaterialTest | 3 | 3/3 | ✅ 全绿 |
+| TrainingPlanControllerGetPlanDetailTest | 8 | 8/8 | ✅ 全绿 |
+| TaskControllerCreateTaskTest (S-cfc-12) | 7 | 7/7 | ✅ 全绿 |
+| TaskControllerReviewTest (S-cfc-13) | 17 | 17/17 | ✅ 全绿 |
+| TaskServiceReviewTest (S-cfc-13) | 15 | 15/15 | ✅ 全绿 |
+| DimensionRegistryTreeTest | 9 | 9/9 | ✅ 全绿 |
+| DimensionRegistryMapContractTest | 7 | **4/7(3 红)** | ⚠️ P-2 口径未决(历史 #35~#38 同口径) |
+| **契约小计** | **71** | **68 绿 / 3 红** | BUILD FAILURE(3 红全为 MapContract) |
+| CfBalanceServiceTest + unit/CfBalanceControllerTest | 25+8 | 33/33 | ✅ 全绿(B-10 无复发) |
+
+- **3 红明细(全部为 P-2 map 口径未决,非新回归)**:
+  - `map_emptyLegacy_returnsNullData:85` — JSON path `$.data` 期望 null 实得 ""
+  - `map_missingLegacy_returnsBadRequest:92` — 期望 400 实得 200
+  - `map_unknownLegacy_returnsNullData:76` — 期望 null 实得 "unknown_legacy_xyz"
+- **testCompile**:216 源文件 **0 错**(B-10 编译回归**连续第 5 轮无复发**,05:35 起同口径全过)
+- **2 个 YELLOW 键复验**:health.report.createReport / dan.assessment.getActiveMaterial **连续第 5 轮**独立复验通过(08:12→10:45 三轮同口径)
+
+### 1.2 git 真理证据核验(已推 origin/cfclub)
+
+| 证据 sha | 归属 | merge-base 核验 |
+|---|---|---|
+| `2a1f72ff5` | merge(S-cfc-12) createTask 契约测试(7 用例全绿) | ✅ IN origin/cfclub |
+| `291955bce` | test(S-cfc-13) review 契约级单测 | ✅ IN origin/cfclub |
+| `1767d4414` | createReport 实现(YELLOW) | ✅ IN origin/cfclub(研发 10:15 核对) |
+| `c3e32460a` | getActiveMaterial 实现(YELLOW) | ✅ IN origin/cfclub(研发 10:15 核对) |
+| `f41da2779` | merge SC-P-10 createTask 场景合入 | ✅ IN origin/cfclub(10:22 已上线) |
+| `ee70d2971` | 部署基线(最新实际部署提交) | ✅ 与 origin/cfclub 零 main 改动间隔 |
+
+### 1.3 研发侧状态机(10:15 汇报,交叉对照)
+
+- **DONE 11 / YELLOW 2 / RED 0**(createTask/review 已收口 DONE;2 YELLOW 只差测试 mark-green 落库)
+- SC-P-10(f41da2779)+ SC-P-11(291955bce)**已部署测试环境,三端 200**
+- 覆盖完整性:部署基线..origin **零 main 代码改动**;`--changes --days 3` 新增能力键 0
+- 池空稳态第 14 轮,无新任务可派发
+
+### 1.4 台账重扫(discover_tests + test_inventory,自动更新)
+
+| 指标 | 08:12 轮 | 本轮 | 增量说明 |
+|---|---|---|---|
+| 控制器 / handler | 358 / 1941 | 358 / 1941 | 0 |
+| handler 覆盖 | 371(19.1%) | 371(19.1%) | 0 |
+| 测试文件 / @Test | 215 / 1651 | **216 / 1665** | +1 文件 +14 @Test(`unit/TaskCreateScP10ContractTest` 14 例,S-cfc-12 实现合入后新增) |
+| 跨源用例合计 | 2853 | **2877** | 729 md + 436 PW + 47 py + 1665 Java + 9 场景 |
+
+---
+
+## 二、状态机同步缺口(主卡点 · 连续第 14 轮未闭环)
+
+- 本地 `.tdd/state.json` 仍为 **3 伪 RED**(health.report.createReport / dan.assessment.getActiveMaterial / guide.trainingPlan.getPlanDetail),`updated_at` 停 **2026-11-04 10:14:04**(14 轮未动);
+- 研发侧状态机(10:15)为 **DONE 11 / YELLOW 2 / RED 0**,且 createTask/review 键**不在本地状态机键集中**;
+- 本轮实测:`--role 测试 --mark-green health.report.createReport` → **❌ 被拒:「当前阶段 RED,须先 YELLOW」**(本地 state.json 过时所致,与 08:12 轮同因);
+- **定性**:证据层全部满足(实现 sha 已在远端、契约复验连续 5 轮全绿、部署已上线),阻塞为**纯状态机同步缺口**,同步责任在编排侧/主理人,测试侧不可自解(禁止手改 state.json)——见 O-1「已裁决推进」待收口。
+
+---
+
+## 三、测试发现问题情况
+
+- 本轮无新 blocker 登记;工作区 blockers.md 已有 B-14~B-18(38/39 轮巡检登记)待流入版本库(接触冲突风险,随业主批次提交)。
+- O-1:状态机同步缺口(责任:编排侧);O-2:SC 场景入池方案追认(待裁决)。
+
+---
+
+## 四、未实测清单(如实标注)
+
+| 维度 | 状态 | 原因 |
+|---|---|---|
+| 全量后端 surefire | 未重跑 | 采信 38/39 轮兄弟批次(G1 91.88% / G2 112 红/34 类 + B-14 补跑 46 例全绿);本轮仅跑契约+受影响类 |
+| 前端 jest | 未重跑 | 采信兄弟批次(296/296 连续多轮 100%) |
+| Playwright / 接口冒烟 / langgraph pytest | 未授权未执行 | 联网未授权 + 远端环境(9082 等)不实跑 |
+| JaCoCo / PIT / 性能 / 依赖漏洞 | 无工具未执行 | 本地未接入 |
+| mark-green 落账 | 实测受阻 | 本地 state.json 过时拒绝(已尝试,同 08:12 轮) |
+
+---
+
+## 五、结论:不通过(承袭,有条件)
+
+- **G4 testCompile**:✅ 0 错(本轮实跑 216 源);**G5 契约**:✅ 68 绿(3 红为 P-2 口径未决);**G3 前端**:✅ 100%(采信);**G7 状态机同步**:❌ 伪 RED 第 14 轮;
+- **G8 P-2 map 口径**:❌ 3 红待拍板;**G1/G2**:91.88% / 112 红(采信兄弟批次,B-18 已定位 54 例 A 类可自修);**G6 CI**:❌ 无。
+- **使绿顺序**:
+  1. 编排侧/主理人同步状态机 → 测试对 2 个 YELLOW 键 `--mark-green` 落库收口(卡点已就绪);
+  2. P-2 map 契约口径拍板(3 红闭环);
+  3. 测试侧批量修 B-18 A 类 54 例(G1 → ≈95.7%,G2 → 58);
+  4. B-14 固定 SHA 全量复验 + B-13 环境红(8 例)改造 `@ActiveProfiles("test")`;
+  5. 最小 CI 3 job 落地。

+ 5 - 3
docs/tdd/test/automation-status.md

@@ -21,10 +21,10 @@
 | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
 | 结构化测试用例(md) | 9 | 729 | 0 | 729 | 729 | 0 | 0 | 0 | 0 |
 | 用户场景(md) | 9 | 0 | 0 | 9 | 9 | 0 | 0 | 0 | 0 |
-| Playwright(e2e/integration) | 72 | 426 | 72 | 0 | 62 | 0 | 7 | 3 | 0 |
+| Playwright(e2e/integration) | 73 | 436 | 73 | 0 | 63 | 0 | 7 | 3 | 0 |
 | Python(pytest) | 11 | 47 | 11 | 0 | 11 | 0 | 0 | 0 | 0 |
-| Java后端测试 | 215 | 1651 | 215 | 0 | 198 | 0 | 15 | 2 | 0 |
-| **合计** | — | **2853** | **298** | **738** | 1009 | 0 | 22 | 5 | 0 |
+| Java后端测试 | 216 | 1665 | 216 | 0 | 199 | 0 | 15 | 2 | 0 |
+| **合计** | — | **2877** | **300** | **738** | 1011 | 0 | 22 | 5 | 0 |
 
 ## 二、结构化测试用例自动化状态(`tests/test-cases/*.md`)
 
@@ -782,6 +782,7 @@
 | `tests/e2e/api/nonfunc-perf-compat.spec.js` | 5 | 已自动化(e2e) | 通过 | — |
 | `tests/e2e/api/nonfunc-security.spec.js` | 11 | 已自动化(e2e) | 失败 | — |
 | `tests/e2e/api/sc-p-03-switch-role.spec.js` | 11 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/task-create-scp10.spec.js` | 10 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/api/wechat-login.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/article-management.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/assessment-appointment-functional.spec.js` | 7 | 已自动化(e2e) | 未跟踪 | — |
@@ -1067,6 +1068,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReviewCenterSummaryTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ReviewCenterSummary |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApproveTest.java` | 6 | 已自动化(@Test) | 未跟踪 | ServiceRoleApprove |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleFilterTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ServiceRoleFilter |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` | 14 | 已自动化(@Test) | 未跟踪 | TaskCreateScP10Contract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskPlanServiceTest.java` | 4 | 已自动化(@Test) | 未跟踪 | TaskPlanService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskProgressUpdateTest.java` | 3 | 已自动化(@Test) | 未跟踪 | TaskProgressUpdate |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/CfFormulaEvaluatorTest.java` | 8 | 已自动化(@Test) | 未跟踪 | CfFormulaEvaluator |

+ 3 - 2
docs/tdd/test/discovery.md

@@ -14,8 +14,8 @@
 | 单元-部分覆盖(handler 方法) | 192 |
 | 单元-未覆盖(handler 方法) | 140 |
 | 单元-无handler 方法 | 1 |
-| 测试文件数 | 215 |
-| @Test 方法总数 | 1651 |
+| 测试文件数 | 216 |
+| @Test 方法总数 | 1665 |
 | 含跳过/假设项(test 级 partial) | 4 |
 
 ## 二、未覆盖控制器(发现「缺口」· 非发明)
@@ -315,6 +315,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/TaskServiceReviewTest.java` | com | 15 | 0 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ArticleWorkflowTest.java` | com | 14 | 0 | 0 | ArticleController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/NutritionDeficiencyServiceTest.java` | com | 14 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` | com | 14 | 0 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionAdminControllerTest.java` | com | 13 | 0 | 7 | DimensionAdminController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyUserSwitchRoleTest.java` | com | 13 | 1 | 1 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuidePackageServiceTest.java` | com | 13 | 0 | 0 | GuideController | — |

+ 5 - 3
docs/tdd/test/inventory.md

@@ -9,11 +9,11 @@
 | 来源类型 | 文件数 | 用例/方法数 |
 | --- | --- | --- |
 | 结构化测试用例(md) | 9 | 729 |
-| Playwright(spec.js) | 72 | 426 |
+| Playwright(spec.js) | 73 | 436 |
 | Python(pytest) | 11 | 47 |
-| Java后端(测试文件) | 215 | 1651 (@Test) |
+| Java后端(测试文件) | 216 | 1665 (@Test) |
 | 用户场景(md) | 9 | 文件级 |
-| **合计** | — | **2853** 用例/方法 |
+| **合计** | — | **2877** 用例/方法 |
 
 ## 二、结构化测试用例(`tests/test-cases/*.md`)
 
@@ -775,6 +775,7 @@
 | `tests/e2e/api/nonfunc-perf-compat.spec.js` | 5 | `tests/e2e/api/nonfunc-perf-compat.spec.js` |
 | `tests/e2e/api/nonfunc-security.spec.js` | 11 | `tests/e2e/api/nonfunc-security.spec.js` |
 | `tests/e2e/api/sc-p-03-switch-role.spec.js` | 11 | `tests/e2e/api/sc-p-03-switch-role.spec.js` |
+| `tests/e2e/api/task-create-scp10.spec.js` | 10 | `tests/e2e/api/task-create-scp10.spec.js` |
 | `tests/e2e/api/wechat-login.spec.js` | 5 | `tests/e2e/api/wechat-login.spec.js` |
 | `tests/e2e/article-management.spec.js` | 5 | `tests/e2e/article-management.spec.js` |
 | `tests/e2e/assessment-appointment-functional.spec.js` | 7 | `tests/e2e/assessment-appointment-functional.spec.js` |
@@ -1062,6 +1063,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReviewCenterSummaryTest.java` | cfc-backend | 3 | ReviewCenterSummary | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReviewCenterSummaryTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApproveTest.java` | cfc-backend | 6 | ServiceRoleApprove | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApproveTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleFilterTest.java` | cfc-backend | 3 | ServiceRoleFilter | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleFilterTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` | cfc-backend | 14 | TaskCreateScP10Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskPlanServiceTest.java` | cfc-backend | 4 | TaskPlanService | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskPlanServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskProgressUpdateTest.java` | cfc-backend | 3 | TaskProgressUpdate | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskProgressUpdateTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/CfFormulaEvaluatorTest.java` | cfc-backend | 8 | CfFormulaEvaluator | `cfc-backend/src/test/java/com/etotem/cfc/util/CfFormulaEvaluatorTest.java` |

Некоторые файлы не были показаны из-за большого количества измененных файлов