# 修改预订

## 适用业务

用于当前邮件要求修改既有：

- FIT Reservation
- Group Block
- Allotment / Control Block
- 日期、晚数、房型、房量、人数、价格、Rate Code、备注或其他订单细节

## 支持的修改

- `update_stay_dates`
- `update_nights`
- `update_room_type_or_quantity`
- `update_guest_count`
- `update_allotment_control_block`
- `manual_rate_code_or_settlement_price`
- `update_fix_charge`
- 与主修改同现的 guest request 线索

## 不适用

- Parent-to-child allocation creation，child creation 走 `New Booking`。
- 旧 Group Code 改新 Group Code，走 `AMEND GROUP CODE`。
- 只有 extra bed，走 `Trace`。
- 只有 voucher/payment evidence。
- 只有 Rooming List。
- 动作只在历史邮件中。
- 纯确认或信息消息不属于 Update；其中包含具体预订补充信息时按 `Trace` 处理。

## 必要证据

普通候选事件需要：

- 当前 amendment action。
- existing target key 或唯一目标绑定。
- reliable before/after 或明确 change detail。
- 涉及入住、离店或晚数时，按 `54-stay-date-parsing.md` 解析并保留日期证据。
- 系统上下文支持继续处理。
- 涉及房型、Rate Code、Fix Charge 时，reference 支持或下游硬校验明确。

## Before / After

可得时保留：

```json
{
  "before_after": [
    {
      "field": "arrival_date",
      "before": "",
      "after": "",
      "evidence": ""
    }
  ]
}
```

真正 amendment 无法建立 before/after 时，输出人工复核。

日期相关 before/after 必须保留 `hotel_date_raw`、`tour_date_raw`、`action_date_raw`、`sheet_month_year` 和 `date_inference_basis`，如适用。

## Linked Trace

Extra bed、Meeting、meal、arrival notice、room preference/setup、已确定的 payment information 或其他具体预订补充信息与有效 update 同现时：

- 输出主 `Update Booking / Amendment`。
- 按目标输出一个 linked `Trace`；同一目标的多条补充信息合并。
- 补充信息即使只是告知，也生成 Trace。
- Update 已完整承接的 before/after 核心字段不得重复写成 Trace。

如果当前只有 Trace 补充信息，或只要求 add/update/cancel extra bed，不创建 Update 事件。

## Fix Charge

Fix Charge 可通过 Update 维护，但必须确认目标和动作类型：add、update 或 cancel。不清楚时人工复核。

## 人工复核

- 原订单找不到或目标不清。
- 前置任务未完成或系统上下文阻塞。
- before/after 不可靠。
- 当前动作可能是 New Booking、Cancel 或 Amend Group Code。
- room mapping、Rate Code 或 price 不唯一。
- Fix Charge 动作或金额不清。
- QBD/LianTai row、highlight、strikethrough evidence 不可读。
