Kaynağa Gözat

docs(tdd): R106 回填 S-cfc-124 复核 — GuheLowSideRuleLoadContractTest 7F→10/10全绿(aaad839ff合入后复跑);后端契约132/130/2=98.48%、合计768/735=95.70%(+16绿);补 B-98 闭环

E2E Test Bot 3 gün önce
ebeveyn
işleme
d47a3aa697

+ 24 - 16
docs/tdd/test/automation-run-2026-11-09-R106.md

@@ -1,9 +1,13 @@
-# R106 自动化测试执行记录(2026-11-09 17:09~17:45)
+# R106 自动化测试执行记录(2026-11-09 17:09~18:00)
 
 > 执行人:测试负责人(软件测试专家团 · 陆谨)
-> 基线:`cfclub @ ba9fd2837`(= `origin/cfclub`,本地 HEAD 与远程一致,零漂移;含研发新合入 S-cfc-125 diet.food.healthAdjust 实现)
+> 基线:`cfclub @ 82cd8d79b`(含研发本轮合入 S-cfc-125 diet.food.healthAdjust + S-cfc-124 guhe.lowSide.ruleLoad T3 两个实现提交;本地 HEAD 与远程一致,零漂移)
 > 执行档:review(浏览器 E2E 本机串行 + 251 langgraph 派发已按既有授权通道执行;未联网装依赖、未改生产代码)
 > 环境:Windows / JDK1.8.0_25(JAVA_HOME=D:\jdk1.8.0_25)+ Maven 3.6.1(`-o` 离线)/ Node v22.22.2
+>
+> **测试窗口内研发合入两个实现提交**(拉取时发现并复核):
+> - `ba9fd2837` S-cfc-125 diet.food.healthAdjust(16:51)→ DietFoodHealthAdjustContractTest 9F→10/10 绿
+> - `aaad839ff` S-cfc-124 guhe.lowSide.ruleLoad T3(13:25 提交)→ GuheLowSideRuleLoadContractTest 7F→10/10 绿
 
 ---
 
@@ -11,18 +15,21 @@
 
 | 套件 | 执行 | 通过 | 红 | skip | 通过率 | 与 R105 对比 |
 |------|------|------|----|------|--------|-----------|
-| cfc-backend 定向契约(16 类) | 132 | 123 | 9 | 0 | 93.18% | R105: 114过/18红 → **+9 绿** |
+| cfc-backend 定向契约(16 类) | 132 | 130 | 2 | 0 | 98.48% | R105: 114过/18红 → **+16 绿** |
 | cfc-frontend (Jest) | 426 | 422 | 1 | 3 | 99.06% | 零漂移 |
 | cfc-web (Jest) | 116 | 116 | 0 | 0 | 100% | 零漂移 |
 | 根级 tests (Jest) | 23 | 7 | 16 | 0 | 30.43% | 零漂移(B-36 未解) |
 | 浏览器 E2E(live) | 15 | 15 | 0 | 0 | 100% | 零漂移(admin 5 + frontend 6 + shop 4) |
 | 健康鉴权契约 | 13 | 13 | 0 | 0 | 100% | 零漂移(B-61 维持) |
 | cfc-langgraph @251 | 43 | 32 | 11 | 0 | 74.42% | 零漂移(R104/R105 同值) |
-| **合计** | **768** | **728** | **40** | **3** | **94.79%** | R105: 719过/46红 → **+9 绿** |
+| **合计** | **768** | **735** | **33** | **3** | **95.70%** | R105: 719过/46红 → **+16 绿** |
 
-**门禁:有条件通过(RECOMMEND 有条件)。** 较 R104 显著改善(R105 719 过 → 本轮 728 过,46→40 红)。
-核心变化:**S-cfc-125 diet.food.healthAdjust(`ba9fd2837` 合入)让 DietFoodHealthAdjustContractTest 从 R105 的 9F 转全绿 10/10**,后端契约红从 18→9。
-剩余:GuheLowSideRuleLoad T3 7F(RED 契约、研发未实现)+ GuheEvidenceIsolate 2 NPE(B-88 连续第 5 次)+ 前端 REQ6 1F + 251 环境性 11 红。
+**门禁:有条件通过(RECOMMEND 有条件)。** 较 R105 显著改善(719 过 → 735 过,46→33 红)。
+两连串合入在测试窗口内均被复核生效:
+- S-cfc-125 `ba9fd2837` diet.food.healthAdjust → DietFoodHealthAdjustContractTest 9F→**10/10 全绿**
+- S-cfc-124 `aaad839ff` guhe.lowSide.ruleLoad T3 → GuheLowSideRuleLoadContractTest 7F→**10/10 全绿**
+后端契约红从 18→2(仅剩 GuheEvidenceIsolate 2 NPE,B-88 连续第 5 次)。
+剩余:GuheEvidenceIsolate 2 NPE(B-88)+ 前端 REQ6 1F + 251 环境性 11 红 + 根级 B-36。
 
 ---
 
@@ -34,10 +41,11 @@
 - `git pull --rebase` 后 HEAD = `ba9fd2837`,`rev-list` 双向 0/0 零漂移。
 - 该提交实现:Food 瞬态字段 adjustment/adjustmentReason、HealthFilterService 新增 5 方法(含 loadProfile 合并 allergySymptoms→allergies D1)、FoodRecommendService 计算 blocked>warning>boost>normal 调整等级、BeijingNutritionService 药物互斥+宗教饮食过滤。**正是 R105 报告 P0 缺口的实现**。
 
-### 2.2 后端定向契约(16 类,基线含 S-cfc-125 实现)
+### 2.2 后端定向契约(16 类,基线含 S-cfc-125 + S-cfc-124 实现)
 
 命令:`mvn -o -B test -Dtest=<16 类> -DfailIfNoTests=false -Dsurefire.timeout=300`(前置 `mvn -o -q compile` BUILD SUCCESS,target/classes=2322)
-结果:**132 例 / 123 过 / 7F + 2E = 9 红 / 0 skip(93.18%)**;16/16 类均产出 XML。
+结果:**132 例 / 130 过 / 2E = 2 红 / 0 skip(98.48%)**;16/16 类均产出 XML。
+补测说明:GuheLowSideRuleLoadContractTest 首跑于 `ba9fd2837` 基线(7F),随后远程合入 S-cfc-124 `aaad839ff`(13:25 提交、测试窗口内推送),重新编译后定向复跑 **10/10 全绿** → 采用含实现的最终结果。
 
 | 类 | 例 | F | E | 判定 | 对比 R105 |
 |---|---|---|---|---|---|
@@ -55,10 +63,10 @@
 | GuheLowSideAggregateContractTest | 6 | 0 | 0 | ✅ GREEN | 维持 |
 | GuhePageTailCleanContractTest | 6 | 0 | 0 | ✅ GREEN | 维持 |
 | GuheVersionSplitContractTest | 5 | 0 | 0 | ✅ GREEN | 维持 |
+| **GuheLowSideRuleLoadContractTest** | 10 | 0 | 0 | ✅ **GREEN** | **7红 → 10/10 全绿(S-cfc-124 aaad839ff 合入后复核)** |
 | GuheEvidenceIsolateContractTest | 12 | 0 | **2** | 10/12(2 NPE,B-88 第 5 次) | 维持 |
-| GuheLowSideRuleLoadContractTest | 10 | **7** | 0 | RED(T3 判据未实现) | 7F 维持 |
 
-9 红全部为「契约声明的未实现能力键」(7 例低侧判据 T3)+ 反射 NPE(2 例)→ **预期 RED/已知缺陷,非新回归**。
+2 红全部为反射 NPE(GuheEvidenceIsolate 2 例,B-88)→ **已知缺陷,非新回归**。原 GuheLowSideRuleLoad T3 7F 已随 S-cfc-124 实现闭环。
 
 ### 2.3 前端 / 管理端 / 根级
 
@@ -103,7 +111,7 @@
 | 缺口 | 现状 | 风险 | 优先级 | 闭环方式 |
 |------|------|------|--------|---------|
 | ~~DietFoodHealthAdjust T3 A1~A5~~ | **已闭环(S-cfc-125 ba9fd2837 本轮合入,10/10 转绿)** | — | — | ✅ 已由研发实现闭环 |
-| GuheLowSideRuleLoad T3 判据(7F) | 低侧判据规则未落地 | 低侧结论不可信 | P0 | 研发实现后定向复跑 10 例 |
+| ~~GuheLowSideRuleLoad T3 判据~~ | **已闭环(S-cfc-124 aaad839ff 本轮合入,10/10 转绿)** | — | — | ✅ 已由研发实现闭环 |
 | cfc-frontend REQ6(1F) | 失败路径 toast 契约不符(成功 icon) | 失败反馈误导 | P1 | 研发改 toast 分支后复跑 |
 | GuheEvidenceIsolate 2 NPE(B-88) | NPE 连续第 5 轮 | 隔离证据路径不稳 | P1 | 研发修 NPE 后复跑 |
 | B-65 analyze checkpointer | 连续第 13 轮未修(251 环境) | langgraph analyze 500 | P1 | 研发修 thread_id 隔离 |
@@ -117,11 +125,11 @@
 ## 四、历史审查记录
 
 - 上轮 R105(16:34~17:05):合计 768/719=93.62%,门禁**有条件通过**;遗留缺口——Diet 9F(S-cfc-127 仅 UI 侧)、GuheLowSideRuleLoad 7F、前端 REQ6 1F、B-65/B-74/B-82/B-88/B-89/B-92。
-- 本轮改善:**+9 绿(DietFoodHealthAdjustContractTest 9F→全绿,S-cfc-125 实现合入闭环)**;后端契约 18→9 红。
-- 未改善:GuheLowSideRuleLoad 7F、前端 REQ6、B-65/B-36/B-89/B-88(2NPE)维持。
+- 本轮改善:**+16 绿**(DietFoodHealthAdjust 9F→全绿、GuheLowSideRuleLoad 7F→全绿,两实现提交测试窗口内合入并复核生效);后端契约 18→2 红。
+- 未改善:前端 REQ6、B-65/B-36/B-89/B-88(2NPE)维持。
 
 ## 五、门禁结论
 
 **有条件通过。** 全部 7 个执行套件中 4 个 100%(cfc-web / 浏览器 E2E 28 / 健康 13),
-后端契约 93.18%(+9 绿)、前端 99.06%(零漂移)、langgraph 74.42%(零漂移)。
-放行条件:GuheLowSideRuleLoad T3 / 前端 REQ6 两项 RED 契约由研发实现转绿后复核;B-88 2 NPE、251 环境 11 红持续跟进。
+后端契约 **98.48%(R106 历史最高,+16 绿)**、前端 99.06%(零漂移)、langgraph 74.42%(零漂移)。
+放行条件:前端 REQ6 1F 由研发实现转绿后复核;B-88 2 NPE、251 环境 11 红持续跟进。

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

@@ -213,3 +213,7 @@
 | B-82-Update(第 106 轮 · 连续第 9 轮) | langgraph `test_intent.py` 4 例红(分类降级) | 研发 | **连续第 9 轮未修**。251 实派:`test_intent.py` 4 例 `assert <Intent>` 失败。闭环判据不变 | 测试负责人(第 106 轮复现) | 2026-11-09 17:24 | 待处理(P1,研发) |
 | B-88-Update(第 106 轮 · 第 5 次) | `GuheEvidenceIsolateContractTest` 2 例 NPE | 研发/测试 | **仍有 2 NPE(第 5 次)**。定向复跑 **12 例 10 绿 / 2 E**(同 R104/R105 点位:反射入口 `:267`)。闭环判据不变 | 测试负责人(第 106 轮复验) | 2026-11-09 17:35 | 更新(10/12 绿,剩 2 NPE) |
 | B-92-Update(第 106 轮 · 延续) | D 盘满导致工具链异常风险 | 环境 | **延续(第 106 轮)**。可用 461MB(100%);本轮 Playwright 以 `--output=<未占用目录>` 规避 `[safe-delete] ETIMEDOUT`(浏览器 28/28 无假红)。闭环:释放 ≥10GB | 测试负责人(第 106 轮实测) | 2026-11-09 17:40 | 待处理(P1,运维) |
+
+<!-- ===== 第 106 轮补充复核(18:00,S-cfc-124 合入后)===== -->
+
+| B-98-Close(第 106 轮 · 测试窗口内闭环) | GuheLowSideRuleLoad T3 判据 7F | 研发 | **已闭环(第 106 轮复核转绿)**。首跑于 `ba9fd2837` 基线 7F;测试窗口内远程合入 `aaad839ff feat(attribution.ruleLoad): 低侧判读规则入库 T3(S-cfc-124)`(新增 3 规则码 + INTERPRET_LAW_LOW_SIDE + U_SHAPE_CALIBER_HINT + lowSideInterpretRules()),重新编译后定向复跑 **GuheLowSideRuleLoadContractTest 10/10 全绿(BUILD SUCCESS)**。闭环判据达成 | 测试负责人(第 106 轮复核) | 2026-11-09 18:00 | 已闭环 |