Files
claw/docs/superpowers/specs/2026-04-18-g1-e-light-enrichment-report-design.md

244 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# G1-E Light Enrichment Report Design
**Goal:** 定义 `G1-E 轻量补查汇总型` 的正式实现口径,使生成器能够在“单主请求 + 少量补查请求 + 单次汇总输出”的边界内,稳定恢复出可编译的业务语义,并与普通 `G1 single_request_table` 明确区分。
**Status:** Draft
---
## Decision Summary
1. `G1-E``G1` 的上边界子型,不是 `G6/G7/G8` 的过渡桶。
2. `G1-E` 只承接“主查询清晰、补查轻量、最终仍归并为单次汇总结果”的报表场景。
3. `G1-E` 的编译目标不是继续伪装成纯 `single_request_table`,而是显式生成“主请求 + 轻量补查 + 汇总整形”三段式契约。
4. `G1-E` 必须在证据层恢复三类对象:主请求证据、补查请求证据、汇总映射证据。
5. 当补查链路升级为宿主桥接 workflow、多 endpoint 盘点或本地落库分析时,必须 fail-closed 并重分类,不得继续生成 `G1-E` skill。
6. `高低压新增报装容量月度统计表` 作为当前 `G1-E` 的 P0 样板,用于冻结最小可编译答案。
---
## Why This Family Exists
当前 `G1` 的问题不只是“识别率不够”,而是把两类结构混在了一起:
1. 真正的单主请求单表报表。
2. 主请求之外还带少量补查、补齐、映射拼装的轻量汇总报表。
这两类场景都长得像“普通报表”,但第二类如果硬塞进 `single_request_table`,会导致以下问题:
1. 只能抽到主页面状态,抽不出真实业务请求。
2. 即使生成成功,也没有补查契约,运行结果不完整。
3. 生成器会误把补查型样本当成通用模板,继续污染 `G1` 家族。
因此需要把这类场景单独收束为 `G1-E`,既保留它们仍属于通用报表上边界的事实,又防止继续伪装成纯单请求报表。
---
## Canonical P0 Sample
当前 `G1-E` 的标准样板固定为:
- `高低压新增报装容量月度统计表`
该场景的结构特征是:
1. 存在清晰主查询入口:`getWkorderAll`
2. 存在少量补查请求:
- `queryElectCustInfo`
- `queryBusAcpt`
- `getBatchPerCust97`
3. 最终输出仍是单次统计汇总,而不是宿主驱动的多步任务,也不是本地落库分析后再出文档
`G1-E` 的第一阶段实现和验收都以这个样板为准,不在本阶段横向扩更多家族。
---
## Non-Negotiable Boundaries
### 1. `G1-E` 仍属于报表直生家族
`G1-E` 仍应保持“场景页面直接可恢复业务查询”的基本属性,不能引入以下结构:
1. 宿主桥接主导执行
2. callback 串联的显式多步 workflow
3. 多 endpoint 分类盘点后再统一聚合
4. `localhost` 落库、SQL 分析、文档导出等二段式后链路
### 2. `G1-E` 不是兜底分类
只有在主请求明确、补查数量受控、补查职责单一的情况下,才能进入 `G1-E`
如果只是“看起来比 G1 复杂一些”,但证据无法收敛为轻量补查模型,就必须阻断并重新分流。
### 3. 编译输出必须显式表达补查链路
对于 `G1-E`,生成器不能再只输出一个模糊的“请求 + 表格”骨架。
输出结构里必须能看见:
1. 主请求是谁
2. 每个补查请求补的是什么
3. 补查结果如何并回主结果
---
## Family Definition
`G1-E 轻量补查汇总型` 的最小定义如下:
1. 存在一个可识别的主查询请求,负责拉取主列表或主统计结果。
2. 存在少量补查请求,数量通常为 `1-3` 个,且职责明确,不形成开放式 workflow。
3. 补查请求的触发方式可通过主结果行字段、固定上下文参数或有限枚举维度推导。
4. 最终输出仍为单次汇总表或单份统计结果,不依赖本地持久化再分析。
5. 页面整体仍可被视为“同一报表任务”,而不是多个独立业务流程拼接。
---
## Evidence Requirements
`G1-E` 至少需要恢复以下三层证据。
### 1. Main Request Evidence
必须恢复:
1. 主请求 endpoint
2. 主请求参数模板
3. 主请求响应路径
4. 主表字段或主结果字段映射
### 2. Enrichment Request Evidence
对每个补查请求,必须恢复:
1. 补查 endpoint
2. 触发条件
3. 关键入参来源
4. 返回字段中被消费的部分
### 3. Merge / Normalize Evidence
必须恢复:
1. 主结果与补查结果的关联键
2. 汇总列、补充列或映射列的生成规则
3. 最终输出字段与来源字段之间的映射关系
如果三层证据中任一层缺失到无法闭环,`G1-E` 应阻断,不得伪生成 runnable skill。
---
## Scene IR Contract
`G1-E` 的最小 `Scene IR` 不应再复用纯 `single_request_table` 的扁平结构,而应扩展为三段式:
1. `main_request`
- 主查询定义
2. `enrichment_requests[]`
- 补查请求列表
3. `merge_plan`
- 主结果与补查结果的并回、字段补齐与最终汇总规则
建议最小字段如下:
- `main_request.endpoint`
- `main_request.params`
- `main_request.response_path`
- `main_request.columns`
- `enrichment_requests[].endpoint`
- `enrichment_requests[].param_bindings`
- `enrichment_requests[].response_path`
- `enrichment_requests[].consumed_fields`
- `merge_plan.join_keys`
- `merge_plan.field_mappings`
- `merge_plan.aggregate_rules`
- `merge_plan.output_columns`
---
## Compiler Contract
`G1-E` 编译阶段至少应新增以下 gate
1. `main_request_resolved`
- 主请求是否恢复完整
2. `enrichment_requests_resolved`
- 是否识别出所有必要补查请求
3. `merge_plan_resolved`
- 是否恢复出主补查并回规则
4. `g1e_scope_compatible`
- 是否仍处于轻量补查边界内,而没有越界为 `G6/G7/G8`
编译器行为要求如下:
1.`main_request_resolved = false`,直接阻断。
2. 若补查请求疑似存在但 `enrichment_requests_resolved = false`,不得退化为 `G1` 成功。
3.`merge_plan_resolved = false`,不得输出缺少并回逻辑的伪 skill。
4. 若检测到宿主桥接、多 endpoint 扫数、落库分析等越界特征,直接阻断并给出家族重排建议。
---
## Runtime Shape
`G1-E` 的运行时目标形态应固定为:
1. 先执行主请求
2. 基于主结果触发有限补查
3. 将补查结果并回主结果
4. 输出单次汇总结果
这里的“有限补查”必须可控:
1. 不能无限递归
2. 不能升级为宿主驱动式多步任务编排
3. 不能变成接口盘点扫描
---
## Failure Taxonomy
`G1-E` 第一版至少要显式区分以下失败类型:
1. `missing_main_request`
- 主请求未恢复
2. `missing_enrichment_request`
- 补查请求存在,但未恢复完整
3. `missing_merge_plan`
- 能看见主链和补查链,但并回关系不完整
4. `scope_upgraded_to_g6`
- 实际是宿主桥接多步查询
5. `scope_upgraded_to_g7`
- 实际是多接口盘点汇总
6. `scope_upgraded_to_g8`
- 实际是抓取落库分析出文档
---
## Acceptance Criteria
`G1-E` 第一阶段完成的标志不是“能产出某个 skill 目录”,而是以下条件成立:
1. `高低压新增报装容量月度统计表` 能稳定恢复主请求、补查请求和并回规则三段式语义。
2. 生成结果不再退化为只有 `page_state_eval``params=[]``requestEntries=[]` 的空壳。
3. 编译器不会再把缺失补查契约的结果误判为普通 `G1` 成功。
4. 当样本越界时,系统能够明确阻断并说明应转入 `G6/G7/G8`,而不是继续产出低质量 skill。
---
## Out of Scope
本 spec 当前不覆盖:
1. `G6 宿主桥接多步查询型` 的 workflow 建模
2. `G7 多接口盘点汇总型` 的多 endpoint 盘点框架
3. `G8 抓取落库分析出文档型` 的本地存储与文档生成后链路
4. `G1-E` 之外的大规模家族扩展
---
## Next Step
这份 spec 冻结后,下一步应直接派生对应实施计划,内容只围绕以下三个实现对象展开:
1. `G1-E` 证据层补齐
2. `G1-E` 三段式 `Scene IR` / compiler gate 落地
3. `高低压新增报装容量月度统计表` 的 P0 样板验证