5.0 KiB
5.0 KiB
C03-v2 / 程序 Parser 最小修改清单 v1
| 项 | 内容 |
|---|---|
| 状态 | DRAFT handoff;尚未实施 |
| 目标任务 | 019fe9ab-8674-79c0-aa8b-582f6a3a5abc |
| 目标 | 将既有确定性 Parser artifact 无损适配到唯一长期契约booking-layer3-contracts-v2的当前DRAFT工作版本 |
| 边界 | 不修改 QBD 业务规则,不调用 Agent,不接数据库或下游 |
1. 最小代码改动
- 新增独立纯 adapter,例如
QbdLayer3V2ParserAdapter;不要原地扩大BookingContracts、RecoveryPatchSet或旧EffectiveFactView。 - Adapter 输入只使用:
- 系统提供的 Current message identity;
- 单个 Current attachment identity/hash/media type;
- 本次 Parser run identity;
- 既有
QbdDeterministicWorkbookParser.ParseResult、ParserObservationSet、facts、issues 和 evidence。
- 每个 Current attachment 输出一个
ParserResultEnvelopeV2;无 Current attachment 时结果列表为空,但上层仍必须继续调用 message-level Parsing Agent。 - Parser 外壳必须显式给出
COMPLETE / PARTIAL / FAILED / NOT_APPLICABLE / AMBIGUOUS。现有状态无法一一映射时 fail-closed,并保留原 issue;不得把失败包装成空的COMPLETE。 - 外壳回显 contract、semantic catalog、evidence schema、ID algorithm、parser、profile 和 rule bundle 版本;Agent版本使用显式
not-run。
2. 唯一公共 core 映射
Parser 必须直接生成 Layer3ContributionCoreV2,不得建立 Parser 私有 v2 字段字典。
| 既有 Parser 内容 | v2 目标 |
|---|---|
| row unit / parsed fact stable identity | TargetV2.target_id,复用稳定来源身份 |
| Tour Code | target group_code + GROUP_CODE fact |
| FieldObservation raw/normalized/status | FactContributionV2 raw/normalized/status |
| source row/segment/item hierarchy | 稳定 fact_path |
| CURRENT/BEFORE/AFTER/MIXED | material_state 原样映射 |
| H/J 等动作原文 | target-scoped ActionSignalV2;仅为材料 signal |
| row/cell/span/formatting evidence | 顶层 EvidenceRefV2 registry + ID refs |
| parser issue/review gate | IssueV2,保留 unresolved/ambiguity/conflict |
| Parser artifact/run | ProducerProvenanceV2(PARSER_EXTRACTION) |
所有贡献必须引用已登记 target/evidence;同 target 多 segment/room 使用不同 fact_path,不能合并成一个值或误报冲突。
3. QBD 必须保持的现有规则
- 只处理合法 Current 有色业务行;非本次有色历史行不进入本次 target。
- 划线字符支持
BEFORE,未划线字符支持AFTER;保留单元格默认字体继承和 run 覆盖后的 formatting evidence。 - 只有 BEFORE、没有有效 AFTER 时保留 BEFORE,并把 AFTER/当前结果设为 unresolved/review;不得产生 Cancel signal。
- Cancel signal 只能来自 Current 明确
CANCEL、CANCEL BOOKING、CXL或等价取消语义。 - 同一 Current Excel 的 New、AMD、Cancel、AMD Allotment 逐行原样保留;邮件级动作不属于 Parser。
- K 列在选中业务行有内容时,整格原文映射为
DETAIL_RAW;2300 THB不得映射为SOURCE_PRICE。 - QBD F 列继续完全忽略;不得输出 Rate Code。
- Parser 保留确定性住期、来源房型、数量、来源价格与 missing/unresolved 状态;不输出 FIT/GROUP、GRPA1 或最终事件。
4. Allotment 边界
Parser 只交付附件侧材料:
- rows 135–141 的 7 个稳定 actual targets、group code、
AMD ALLOTMENT原始 signal、无划线 formatting 与其他确定性事实; - rows 118、121 的两个独立 Update targets、
AMD BOOKING、完整 BEFORE/AFTER; - rows 135–138 的 K=
2300 THB原文,rows 139–141 不制造缺失问题。
Parser 不读取 Current 正文,不生成 source LTQ260812、DEDUCT、actual New 解释或 source→actual relationship;这些属于 Parsing Agent 对正文与 Parser facts 的组合解释。
5. 最小测试清单
- Adapter 输出可以反序列化为
ParserResultEnvelopeV2,且 core 类型与 Agent 完全相同。 - message/attachment/run/result/target/fact/evidence ID 稳定且引用完整。
- 现有 QBD Parser focused tests继续通过;adapter测试不得改变任何现有业务期望。
- rows 118/121 保留 BEFORE/AFTER,rows 135–141 保留7个独立targets。
- K
2300 THB只产生DETAIL_RAW,不产生SOURCE_PRICE。 - 只有strike/no AFTER不产生Cancel;明确CXL才产生Cancel signal。
- 输出中不存在
event_type、booking_type、fit_group、rate_code、任务卡、库存或PMS字段。
6. 明确不做
- 不改 Parser 选行、日期、富文本、数量或价格算法。
- 不读取 Current/History 正文,不读取 History附件。
- 不调用真实 Agent,不实现 Layer 3 merger。
- 不把旧
action_hint、booking_type或rate_hint复制进 v2 core。 - 不修改 Parsing Agent Prompt/Skill/reference。
参考验收 fixture:server/src/test/resources/booking/layer3/v2/qbd/;正式接入前仍需单独的 runtime Change Request。