Files
th-hotel-simple/docs/project/requirements/M002-v3-p0.1-parent-group-routing-update.md

7.1 KiB
Raw Blame History

M002 V3 P0.1 Parent Group Routing Update

文档信息

项目 内容
文档版本 0.1
日期 2026-07-12
状态 P0.1 增量修订确认版,作为 M002 V3 后续 Parent Group / Allotment 路由开发依据
适用范围 SuperAgent V3 入站、Adapter 路由、Parent split、前端卡型映射、后端回归测试
主要读者 后端、前端、测试、SuperAgent 对接方、后续协作 agent

1. 背景

2026-07-12 导入的 P0.1 资料修正了 0711 P0 中 Parent split 的建模方式。旧 P0 曾把 Parent split 父事件建模为 Cancel Booking + linked_parent_release_after_child_split。P0.1 明确要求:

Allotment / Control Block = Parent Group
Allotment code = Parent Group code
Parent Group 的 block_code = group_code

因此 Parent split 的父事件不再是普通 Cancel Booking,而是 Parent Group 整块取消:

N 个 Child New Booking + 1 个 Parent Cancel Allotment

本文只记录 P0 到 P0.1 的增量差异,不重写完整 M002 V3 业务流程。完整流程仍以 M002-order-task-workflow-v3.md 为主文档。

2. 权威输入

本次增量以以下导入资料为准:

资料 用途
docs/import/20260712/开发交付_P0_to_P0.1_增量修订说明_给开发Codex_2026-07-11.md P0.1 Parent Group 语义修订、路由数量、验收清单
docs/import/20260712/Agent 0711 1743/prompts/main_agent_prompt.md P0.1 Main Agent prompt
docs/import/20260712/Agent 0711 1743/skills/booking-desk-event/SKILL.md P0.1 booking-desk-event skill 入口
docs/import/20260712/Agent 0711 1743/skills/booking-desk-event/references/00-output-contract.md 输出契约、S10/S99、Parent candidate 结构
docs/import/20260712/Agent 0711 1743/skills/booking-desk-event/references/31-allotment-control-block.md Allotment / Control Block 与 Parent Group 权威定义

docs/import/20260711/** 仍作为 P0 基线和 fixtures 参考,但其中 Parent Cancel Booking / 42 路由口径已被 P0.1 覆盖。

3. 路由差异

P0.1 删除两条当前合法路由:

旧三元组 P0.1 当前处理
normal_task + Cancel Booking + linked_parent_release_after_child_split 当前新入站必须 adapter_contract_error,仅 legacy reader 可只读识别
manual_review + Cancel Booking + linked_parent_release_after_child_split 当前新入站必须 adapter_contract_error,仅 legacy reader 可只读识别

P0.1 复用已有 Cancel Allotment 卡:

Agent event Adapter 三元组
Cancel Allotmentmanual_review=null normal_task + Cancel Allotment + cancel_allotment_control_block
Cancel Allotmentmanual_review!=null manual_review + Cancel Allotment + cancel_allotment_control_block

relationship_type=linked_parent_release_after_child_split 只表示 Parent 与 Child 的关联关系和后续 Preflight 校验,不再选择独立 task subtype。

最新路由统计:

18 个业务 subtype × normal/manual = 36 条
S10、S99、Fallback、unhandled display = 4 条
总计 = 40 条

注意:route_code 是对外接口和历史 transition 都会看到的稳定代码不按总数重编号。P0.1 的“40 条”表示当前合法 route definition 数量为 40历史稳定码 R41_FALLBACK_BUSINESS_EVENT_REVIEWR42_UNHANDLED_CURRENT_INTENT 继续保留。

4. Parent Split 当前合法结构

完整 Parent split 必须满足:

  • 每个 Child 输出一个 New Booking,且 extracted_fields.booking_object_type=Group Block
  • Parent 输出且只输出一个 Cancel Allotment
  • Parent 的 extracted_fields.cancel_scope=entire_allotment_control_block
  • Parent 的 extracted_fields.parent_release_or_cancel_candidate=truerelease_reason=parent_to_child_allocation_splitallocation_split_from_parent=true
  • Parent 的 relationship_type=linked_parent_release_after_child_split
  • Parent 的 requires_downstream_hard_validation=true
  • Parent 的 case_keys.group_codecase_keys.block_code 必须同时存在且完全相等;只取得一边时复制到另一边。
  • Parent 的 extracted_fields.parent_group_code 必须与归一后的 Parent code 一致。
  • Parent 的 related_source_event_indices[] 必须与 extracted_fields.child_group_codes[] 数量一致、顺序一一对应,并指向同根 message_events[] 中的 Child New Booking。

如果当前 producer 输出:

Cancel Booking + linked_parent_release_after_child_split

后端不得按 legacy 兼容路径放行,应作为当前入站契约错误处理。

5. Legacy 只读兼容

历史已经保存的旧 payload

Cancel Booking
+ cancel_object_type=group_block
+ relationship_type=linked_parent_release_after_child_split

处理规则:

  • 不批量迁移历史 JSON。
  • 不改写或回写原历史 payload。
  • 审计或原始 AI payload 查看仍展示旧数据。
  • reader / adapter 展示层可以只读归一为 Cancel Allotment + cancel_allotment_control_block
  • 当前新入站不能借 legacy reader 分支继续生成旧组合。

6. 前端影响

前端应按以下口径展示:

  • 不再注册或展示独立 Parent Cancel Booking 卡型。
  • Parent split 父事件展示为 Cancel Allotment / cancel_allotment_control_block
  • relationship_type=linked_parent_release_after_child_split 可以作为关联标签或详情字段展示,但不能作为任务 subtype 筛选项。
  • 任务筛选项不应出现 linked_parent_release_after_child_split
  • 新开发阶段任务列表筛选只保留 S10/S99,不再展示旧 S000/S999 筛选项;旧数据展示兼容仍由详情和只读卡逻辑兜底。

7. 后端验收清单

后端实现 P0.1 时至少覆盖:

  • 路由枚举为 40 条。
  • linked_parent_release_after_child_split 不再是当前合法 route definition。
  • 当前入站 Cancel Booking + linked_parent_release_after_child_split 记录为 adapter_contract_error,不创建业务任务;该规则同时适用于 V3 message_events[] 和旧 V2 兼容 ai_task_results[]
  • 当前入站 Cancel Allotment + cancel_allotment_control_block + linked_parent_release_after_child_split 可以创建 CANCEL_ALLOTMENT 业务卡。
  • 同一个 Parent split cluster 重复提交 Parent 候选时,后续重复 Parent 记录为 adapter_contract_error,不再创建第二张 Parent 任务卡。
  • Parent 双 key 不一致时不猜测,进入 type-known manual review 或 adapter contract error不能改成普通 Cancel Booking。
  • Parent child_group_codes[]related_source_event_indices[] 数量、顺序和 Child New Booking 目标一致。
  • 普通 FIT / Group Block 的 Cancel Booking 不受影响。
  • 旧历史数据只读兼容,不迁移、不改写原 payload。
  • 项目文档、对外 SuperAgent 契约、前后端沟通文档和测试断言全部从 42 路由更新为 40 路由。

8. 不做范围

  • 不实现真实 OPERA / OHIP。
  • 不做普通任务任意切换订单。
  • 不批量迁移历史旧 payload。
  • 不扩大 P1/P2 未闭合规则。
  • 不把部分 Allotment / Control Block 维护重新开放为 active 路由。