# 取消预订 ## 适用业务 用于当前邮件要求取消或释放: - FIT Reservation - Group Block - Allotment / Control Block - 控房或配额 可接受信号: - cancel booking / reservation / group - release or cancel block - cancel allotment / allocation / control block - `CXL` - 明确整单取消 ## 事件类型 - `Cancel Booking`:只取消 FIT Reservation、普通 Group Block 或 Child Group Block。 - `Cancel Allotment`:取消整个 Allotment / Control Block,也就是 Parent Group。 Parent Group 的 `case_keys.group_code` 与 `case_keys.block_code` 必须相同;普通或 Child Group Block 继续只填 `group_code`、`block_code=null`。 ## 部分修改边界 减少房量、改日期、释放部分 allocation 或明确保留 parent 余量继续使用,当前均不受支持;不得输出 Update、Cancel 或 `Allotment Maintenance`。整封邮件只有该明确意图时走 S10;同邮件另有支持事件时按 `03-current-content-completeness.md` 进入 `unhandled_current_intents`。 如果当前证据无法确定是整块取消、完整 Parent split,还是部分维护/保留余量,则业务类型或 subtype 尚未确定,输出 `event_type=Need Manual Review` 的 Fallback 复核。 ## Parent Allocation Linked Event 当当前证据已经确认 Parent Group 完整拆成 Child Groups 时,必须为 parent group 生成独立 linked cancel candidate:`event_type=Cancel Allotment`、`extracted_fields.cancel_scope=entire_allotment_control_block`、`relationship_type=linked_parent_release_after_child_split`、`requires_downstream_hard_validation=true`。 这个事件: - 不替代 child New Booking。 - 每个 child 固定是 `New Booking` 且 `booking_object_type=Group Block`;parent candidate 的 `related_source_event_indices[]` 必须指向全部 child events。 - 不要求字面 cancel / CXL。 - 必须来自当前 parent-child split 证据。 - 不得由历史证据单独触发。 - 只是候选事件,不代表 PMS 已取消成功,不创建真实 TaskCard,不写外部系统。 - 无论正文是否显式写取消,同一 split cluster 都只能有一个 Parent `Cancel Allotment`。显式取消同一 parent 时合并证据;不同 parent 才分别输出。 - 当前 Agent 不得再生成 linked Parent `Cancel Booking`;旧组合只允许 reader/adapter 无损兼容展示。 ## 不适用 - 新建,除 Parent split 派生的 linked `Cancel Allotment` 外。 - 普通 date/room/guest/price amendment。 - Voucher/payment evidence。 - Rooming List。 - 只有 Trace。 - cancel action 只在历史邮件中。 ## 业务复核 当前证据已经能确定 `Cancel Booking`/`Cancel Allotment` 及其对象 subtype 时,以下问题保留原业务事件,并使用非空、完整的 `manual_review`: - cancel target 不清。 - 多目标无法安全拆分。 - 系统上下文显示 conflict、lock 或 already completed state。 - 完整 Parent split 已确认,`Cancel Allotment` subtype 已确定,但 parent 双 key、child list 或关系证据不完整。 Parent split 的关系字段不安全时不得把候选视为已取消;保留已确认的 parent/child 证据,并在 `manual_review.missing_fields[]` 中使用 RFC 6901 JSON Pointer。 Parent 双 key 候选冲突时,两键置空并使用 `manual_review.reason_code=target_object_unclear`;关系字段不安全时使用 `parent_child_split_evidence_unclear`。 只有 `CXL` 是否为当前动作不清、无法确定是普通订单取消还是 Allotment 整块取消,或无法确定是完整 split 还是部分维护时,才输出 `event_type=Need Manual Review` 的 Fallback 复核。