|
|
@@ -0,0 +1,90 @@
|
|
|
+# TDD 闭环 · 测试负责人巡检报告(2026-11-05 01:36)
|
|
|
+
|
|
|
+> 角色:测试负责人(cfc-tester,本会话/本工作区)
|
|
|
+> 分支:`cfclub`(无需切换);远端 `origin/cfclub` = `6f86cae9a`(本轮开始落后 HEAD `db095214a` 4 个 docs 提交,见下)
|
|
|
+> 模式:本工作区只读扫描 + 契约测试离线实跑复验 + 状态盘点;未派发 opencode(测试角色纪律)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、本轮核心证据(最关键发现)
|
|
|
+
|
|
|
+### P0 · B-10 编译回归【再次确认且升级】——阻断全部后端测试验证
|
|
|
+
|
|
|
+- **复跑命令**(与历史 8 轮连续全绿同口径):
|
|
|
+ `/d/tools/apache-maven-3.9.9/bin/mvn -o -B -f cfc-backend/pom.xml -DskipTests=false -Dtest='HealthReportControllerCreateReportTest,DanAssessmentControllerGetActiveMaterialTest,TrainingPlanControllerGetPlanDetailTest' test`
|
|
|
+- **结果**:`BUILD FAILURE` @ `testCompile`,**7 处编译错误**,位置 `cfc-backend/src/test/java/com/etotem/cfc/unit/CfBalanceControllerTest.java`:
|
|
|
+ - 行 **95 / 113 / 121 / 140**:`controller.balance(7L, null)` / `balance(99L, null)` / `balance(-1L, null)` / `balance(7L, null)` —— 控制器签名现为 `balance(@RequestAttribute("userId") Long userId)`(单参),实参 2 个 → **参数个数不符**
|
|
|
+ - 行 **169 / 189 / 202**:`controller.logs(7L, null, 1, 20)` —— 控制器签名现为 `logs(userId, page, size)`(3 参),实参 4 个 → **参数个数不符**
|
|
|
+- **根因**:`44b2f0d42`(2026-11-05 00:31,chore(sync) 工作区遗留 WIP 收尾同步)重写 `CfBalanceController`(`balance`→单参 `userId`、`logs`→`logs(userId,page,size)`,删除 `currentMemberId` 及 `stats`/`familySummary`),并**把测试文件从 `controller/` 迁移到 `unit/` 包**(现路径 `.../cfc/unit/CfBalanceControllerTest.java`);但测试仍以旧签名调用 → 未同步。
|
|
|
+- **后果(升级点)**:`testCompile` 为模块级全局编译,一处失败即**整模块 1474 @Test 零执行**;此前**连续 8 轮(15:10 起)16/16 全绿的 3 个契约测试**(createReport 5 / getActiveMaterial 3 / getPlanDetail 8)**本轮被连带阻断,无法编译、无法运行**。这不是契约回归,而是被 B-10 编译回归连带卡死。
|
|
|
+- 无并发 `java`/`mvn` 进程、无 `.loop.lock` 陈旧锁(本轮为干净环境,排除并发干扰)。
|
|
|
+- **需研发处置**:改 `unit/CfBalanceControllerTest.java` 7 处调用去掉多余实参(`balance(7L)` / `logs(7L,1,20)`),或回退 `44b2f0d42` 改写。**修复优先级 P0(阻断全模块测试验证 + 4 个待收口 YELLOW 键)。**
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、状态机与跨角色协同
|
|
|
+
|
|
|
+### 本地 `state.json`(测试侧事实源,mtime 仍 2026-11-04 10:14,未动)
|
|
|
+
|
|
|
+| 键 | 阶段 | 备注 |
|
|
|
+|---|---|---|
|
|
|
+| `health.report.createReport` | RED | 本地仍 RED;研发报告已列 YELLOW 证据 |
|
|
|
+| `dan.assessment.getActiveMaterial` | RED | 本地仍 RED;研发报告已列 YELLOW 证据 |
|
|
|
+| `guide.trainingPlan.getPlanDetail` | RED | 本地仍 RED;研发报告已列 **DONE** |
|
|
|
+
|
|
|
+### 研发负责人1(01:15 轮,已推送 `6f86cae9a`)报告的关键结论
|
|
|
+
|
|
|
+- **4 键置 YELLOW,待测试侧 `--mark-green`**(研发明示「证据齐备,等待测试角色收口,角色隔离研发不代确认」):
|
|
|
+ `dan.assessment.getActiveMaterial`(YELLOW 实现 `c3e32460a`)、`dimension.registry.getTree`(`57e162242`)、`dimension.registry.mapLegacyCode`(`57e162242`)、`health.report.createReport`(`1767d4414`)。
|
|
|
+- **4 键 DONE**:`addMember` / `listMembers` / `getPlanDetail`(`55caf6966`)/ `getPlanList`。
|
|
|
+- **7 个证据 sha 全部已在 `origin/cfclub`**(本轮我逐条 `git merge-base --is-ancestor` 核验 ✓):`57e162242`、`1767d4414`、`c3e32460a`、`e0ae1e459`、`73654bcf8`、`81d8883f7`、`faf3ca174`。
|
|
|
+- ⚠️ **本地 `state.json` 与研发侧状态机不同步**:`.tdd/` 为本地私有不入库,研发侧状态机与其报告在各自环境独立维护;本轮我以研发报告的 git 真理证据为观测口径,**不擅自改写研发侧阶段登记**(阶段推进须由对应角色经 `--mark-*` 显式登记)。
|
|
|
+
|
|
|
+### O-1 状态转变(详见 pending.md 更新)
|
|
|
+
|
|
|
+- 原 O-1 诉求「研发对 3 键补 `--mark-yellow`」——**证据层面已满足**(研发 01:15 报告 + 7 sha 在 origin/cfclub)。
|
|
|
+- **新阻塞点**:测试侧 `--mark-green` 复验被 **B-10 P0 编译回归阻断**(无法编译契约测试,无从验证)。即:YELLOW 证据已齐,**复验通道被 B-10 卡死**。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、台账重扫(只读,反映已提交代码)
|
|
|
+
|
|
|
+- `discover_tests.py`:**控制器 358 / handler 方法 1941(覆盖 365 = 18.8%)/ 测试文件 205(@Test 1545,部分 4)**;分布 covered=25 / partial=192 / uncovered=140 / no-handler=1。
|
|
|
+- `test_inventory.py`:跨源用例 **2731**(结构化 md 729 + Playwright 410 + Python 47 + Java @Test 1545 + 场景 9)。
|
|
|
+- 相对上一有效轮(23:25):handler 1944→1941(-3,与 `44b2f0d42` 删除 `stats`/`familySummary` 一致,**属已提交代码**);覆盖 363→365(+2);@Test 1536→1545(+9,**已随 WIP 收尾同步提交,非未提交 WIP**)。
|
|
|
+- 已重写 3 份共享台账:`docs/tdd/test/{discovery,inventory,automation-status}.md`(增量相对 HEAD 微小,18+/15-),本轮**随报告一并提交**(区别于 23:36 轮因增量来自未提交 WIP 而不提交——本次增量来自已提交代码)。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、结论与建议
|
|
|
+
|
|
|
+### 门禁结论:**不通过(承袭,有条件)**
|
|
|
+
|
|
|
+- **主卡点**:B-10 P0 编译回归(`unit/CfBalanceControllerTest.java` 7 处编译错误 → testCompile 失败 → **全模块 1474 @Test + 16 契约测试全部零执行**)。
|
|
|
+- **次卡点**:4 个 YELLOW 键(含 createReport/getActiveMaterial/getTree/mapLegacyCode)**证据齐备但无法复验收口**——被 B-10 阻断。
|
|
|
+- 本地 `state.json` 3 键仍 RED(研发侧已按 git 证据推进,属状态机不同步观测项,非本次可闭环)。
|
|
|
+
|
|
|
+### 使绿顺序(建议)
|
|
|
+
|
|
|
+1. **研发修复 B-10**:改 `unit/CfBalanceControllerTest.java` 7 处调用(`balance(7L)` / `logs(7L,1,20)`)或回退 `44b2f0d42`,`mvn -o testCompile` 恢复绿 → push。
|
|
|
+2. **测试复验收口**:B-10 解除后,重跑 16 契约测试 + 全量 surefire,确认后对 4 YELLOW 键 `--mark-green`。
|
|
|
+3. **研发补登 / 状态机对齐**:本地 `state.json` 3 键(createReport/getActiveMaterial/getPlanDetail)按 git 证据同步阶段(研发侧已登记,测试侧观测待对齐)。
|
|
|
+4. **SC→KEY_RE 衔接待裁决**(研发 01:15 报告提出,涉及 218 SC 场景覆盖矩阵,0/218 跑通):主理人仲裁口径。
|
|
|
+
|
|
|
+### 未实测项(显式声明,非达标)
|
|
|
+
|
|
|
+- 契约测试 16/16(**本轮无法运行**,被 B-10 testCompile 阻断;历史 8 轮全绿为对照,非本次证据)。
|
|
|
+- 全量后端 surefire / 前端 jest / Playwright E2E / langgraph pytest:需联网授权或依赖(本轮未授权/未配置)。
|
|
|
+- JaCoCo 覆盖率 / PIT 变异 / 性能 / 依赖漏洞扫描:本机无工具或需联网,不在范围。
|
|
|
+- 接口冒烟(`run_interface_tests_cron.sh`):默认公网目标本轮未跑(本任务已切换为 TDD discover/track 模式,接口冒烟为历史独立链路)。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、本轮提交内容
|
|
|
+
|
|
|
+- `docs/tdd/test/automation-run-2026-11-05-0136.md`(本报告)
|
|
|
+- `docs/tdd/test/blockers.md`(B-10 升级:01:31 复跑确认 7 处编译错误 + unit/ 定位 + 16 契约测试连带阻断)
|
|
|
+- `docs/tdd/orchestration/pending.md`(O-1 更新:研发 YELLOW 证据已齐 → 测试复验被 B-10 阻断)
|
|
|
+- `docs/tdd/test/{discovery,inventory,automation-status}.md`(台账重扫,增量来自已提交代码)
|
|
|
+
|
|
|
+> 工作树其余 70+ 处与本次无关的跨角色未提交改动(含 `.wt-*` 目录、前端测试、package.json、`_run*_agg.json` 等)**不触碰、不 sweep**(研发负责人1 01:15 报告明示「不 sweep 他人」;`--clean-check` 门禁按「完成=已提交+工作目录干净」提示,但清理他人改动属越权,仅提示不代做)。
|