|
@@ -0,0 +1,57 @@
|
|
|
|
|
+# T8 新旧分流(L1-3)复核闭环报告 — S-cfc-117
|
|
|
|
|
+
|
|
|
|
|
+- **任务**:T8 新旧分流(guhe.l1.versionSplit),计划 `docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md` §三-T8 / §一-L1 接入归一化 ③ / §2.1
|
|
|
|
|
+- **契约测试**:`cfc-backend/src/test/java/com/etotem/cfc/unit/GuheVersionSplitContractTest.java`(反射结构契约,4 断言 + 1 权限流不适用用例)
|
|
|
|
|
+- **结论**:**测试已全绿(5/5),实现无需改动** —— T8/L1-3 实现(S-cfc-84,commit `4ef901c48`)已在 origin/cfclub 合入
|
|
|
|
|
+- **日期**:2026-11-09
|
|
|
|
|
+
|
|
|
|
|
+## 一、问题背景
|
|
|
|
|
+
|
|
|
|
|
+T8(L1-3)要求按 `报告格式版本` 分流:旧 21 键走原 v5 流程,32 键 guhe_v2 走专用提取器;
|
|
|
|
|
+**禁把 32 键误判成路由错误**(不落 unknown→LLM 兜底)、**禁把旧 21 键强套 guhe_v2**(§2.1:
|
|
|
|
|
+谷禾 2026-11 新版标准报告 = 旧 21 键打底 + 11 增量键 = 32 键;判定链 `aidefansi→beijing→guhe_v2→standard`)。
|
|
|
|
|
+
|
|
|
|
|
+## 二、RED 登记溯源(测试红为基线过期,非实现缺失)
|
|
|
|
|
+
|
|
|
|
|
+- 测试侧在第 72 轮取证 R98「Guhe 9 类 41 例 RED」登记的基线为 `ac4d7e97f`,**不包含** S-cfc-84/90
|
|
|
|
|
+ 的实现(`docs/tdd/orchestration/report-test-2026-11-09-R101.md` 第 91 行:"
|
|
|
|
|
+ 实现 `ReportParserDispatchService`(S-cfc-84/90)在 `origin/cfclub 66873f066` 已合入但**不在本轮基线**;
|
|
|
|
|
+ 下轮以 `66873f066` 为基线全量复跑,**预期 41 例转绿**;若仍红则按缺陷派单")。
|
|
|
|
|
+- 经 `git merge-base` / `git log -S routeByFormatVersion` 溯源:T8 实现在 origin/cfclub 历史中
|
|
|
|
|
+ 由 S-cfc-84 引入(`4ef901c48 feat(guhe.l1.versionSplit): S-cfc-84 T8/L1-3 按报告格式版本分流`),
|
|
|
|
|
+ 契约测试由测试侧 `53502b042 test(guhe.l1.versionSplit): S-cfc-84 add RED contract tests` 登记。
|
|
|
|
|
+- 当前 origin/cfclub 最新基线已含实现,结构契约断言与实现逐一对应(见 §四),测试**已转绿**。
|
|
|
|
|
+
|
|
|
|
|
+## 三、验证过程
|
|
|
|
|
+
|
|
|
|
|
+- 分支隔离:`git worktree add .worktrees/task_S-cfc-117 -b task/S-cfc-117 origin/cfclub`
|
|
|
|
|
+ (D 盘 100% 满(B-92)导致全量 checkout 失败,改用 `git archive` 仅物化 `cfc-backend` 子树用于构建)。
|
|
|
|
|
+- 执行:`cd cfc-backend && mvn -Dtest=GuheVersionSplitContractTest test`(Maven 3.9.9 / JDK 8)
|
|
|
|
|
+- 结果:**Tests run: 5, Failures: 0, Errors: 0, Skipped: 0**(surefire: `time="2.519" tests="5" errors="0" skipped="0" failures="0"`)
|
|
|
|
|
+- 基线一致性:验证用 `7d44c0b90` 与当轮 origin/cfclub tip 的 `cfc-backend` 子树 `git diff --stat` 为空 → 结果可平移。
|
|
|
|
|
+
|
|
|
|
|
+## 四、契约满足性对照(实现已存在,逐条核验)
|
|
|
|
|
+
|
|
|
|
|
+| 契约断言 | 满足实现(src/main 现状) |
|
|
|
|
|
+|---------|--------------------------|
|
|
|
|
|
+| 正常流-1:`ParsedReportResult` 暴露 `guhe_v2` 格式版本标记 | `public static final String FORMAT_GUHE_V2 = "guhe_v2";` |
|
|
|
|
|
+| 正常流-2:`ReportParserDispatchService` 提供按格式版本分流入口 | `public Result<Map<String,Object>> routeByFormatVersion(...)`(另含 `detectReportFormatVersion`) |
|
|
|
|
|
+| 边界流-1:L1 层寻址 guhe_v2 专用解析器(32 键不误判路由错误) | `private static final String GUHE_V2_PARSER_SCRIPT = "extract_guhe_v2";` → `parseGuheV2` 专用分支,不走 LLM 兜底 |
|
|
|
|
|
+| 边界流-2:L1 层声明 21/32 键数边界(旧 21 键不强套 guhe_v2) | `ParsedReportResult.LEGACY_KEYS_21 = 21` / `GUHE_V2_KEYS_32 = 32`(`ReportParserDispatchService` 亦引用) |
|
|
|
|
|
+| 权限流:不适用(L1 内部管道) | 说明性用例,恒成立 |
|
|
|
|
|
+
|
|
|
|
|
+## 五、变更文件
|
|
|
|
|
+
|
|
|
|
|
+- `docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md`(T8 勾选,标注 S-cfc-117 复核)
|
|
|
|
|
+- `docs/tdd/impl-2026-11-09-S-cfc-117-guhe-l1-versionSplit.md`(本报告,新增)
|
|
|
|
|
+- **src/main 零改动**:实现已由 S-cfc-84 合入;按「禁止改测试断言/删用例」「最小闭环」纪律,不做伪实现。
|
|
|
|
|
+
|
|
|
|
|
+## 六、暴露的缺陷(流程侧,非代码侧)
|
|
|
|
|
+
|
|
|
|
|
+1. **RED 登记基线过期**:`ac4d7e97f` 不包含已合入实现,导致 41 例契约在 R98/R101 被误报为 RED;
|
|
|
|
|
+ 建议测试侧下一轮以最新 origin/cfclub 为基线全量复跑并回落 RED 清单。
|
|
|
|
|
+2. **D 盘空间 100%(B-92)**:`git worktree add` 全量 checkout 多次卡死 `No space left on device`;
|
|
|
|
|
+ 本轮已清理历史轮次 worktree(`_wt_r0247`/`_wt_r0419`/`_wt_r0745`,约 2.3GB,其中 r0247 含少量未提交
|
|
|
|
|
+ 临时文件,建议后续按 B-92 建议由维护侧统一回收约 10GB)。
|
|
|
|
|
+3. **T7(guhe.l1.guheV2Route,S-cfc-90)在计划表仍为 `[ ]`**:同属「实现已在 origin/cfclub」但未勾选,
|
|
|
|
|
+ 建议下轮核验后一并勾选(不在本任务 S-cfc-117 范围内扩散处理)。
|