7.8 KiB
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 Allotment 且 manual_review=null |
normal_task + Cancel Allotment + cancel_allotment_control_block |
Cancel Allotment 且 manual_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_REVIEW 和 R42_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=true、release_reason=parent_to_child_allocation_split、allocation_split_from_parent=true。 - Parent 的
relationship_type=linked_parent_release_after_child_split。 - Parent 的
requires_downstream_hard_validation=true。 - Parent 的
case_keys.group_code与case_keys.block_code必须同时存在且完全相等;只取得一边时复制到另一边。 - Parent 的
extracted_fields.parent_group_code必须与归一后的 Parent code 一致。 - Parent 的
case_keys.group_code与case_keys.block_code原始候选冲突时,adapter 不猜测目标对象;如 SuperAgent 已输出manual_review.reason_code=target_object_unclear且context_used.parent_identity_candidates[]非空,则创建同卡 type-known manual review,否则写入 adapter contract error。 - 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。 - 当前 V3
message_events[]入站Cancel Booking + linked_parent_release_after_child_split按 event 记录adapter_contract_errortransition,不创建业务任务。 - 旧 V2 兼容
ai_task_results[]若提交Cancel Booking + linked_parent_release_after_child_split,按请求级ADAPTER_CONTRACT_ERROR拒绝,不创建业务任务,也不创建 AI transition。 - 当前入站
Cancel Allotment + cancel_allotment_control_block + linked_parent_release_after_child_split可以创建CANCEL_ALLOTMENT业务卡。 - 同一个 Parent split cluster 重复提交 Parent 候选时,后续重复 Parent 记录为
adapter_contract_error,不再创建第二张 Parent 任务卡。 - Parent 只提供
group_code或只提供block_code时,adapter 可在派生副本中补齐另一边;原始 payload 不回写。 - Parent 双 key 不一致时不猜测,满足
target_object_unclear + parent_identity_candidates[]时进入 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 路由。