# S07 Trace / Reservation Notes Skill

## 1. Skill Identity

- catalog_code: `S07`
- skill_id: `trace_reservation_notes_skill`
- skill_name: `Trace / Reservation Notes Skill`
- task_type: `Trace / Reservation Notes`

Supported trace subtypes:

- `extra_bed`
- `general_request`

## 2. Purpose

本 Skill 用于判断一条来自 `body_current` 的当前邮件事件，是否需要为既有 reservation / group block / booking record，或为同一 current 事件中新建 / 修改 / 改团号任务后续生成 Trace / Reservation Notes 任务卡候选。

第一版核心口径：

- S07 内部只使用两个 subtype：`trace_subtype = extra_bed` 和 `trace_subtype = general_request`。
- `extra_bed` 固定写入 Trace Text：`Set Extrabed`，同步 FO + HSK，并输出入住人数和房价调整意图。
- `general_request` 写入具体要求文本，并按要求类型同步 FO 或 FO + HSK。
- 如果 trace / guest request 与 S01 / S02 / S06 同一 current 事件或同一表格行出现，应同时生成主业务任务和 S07 linked task，先处理主业务任务，再处理 S07。
- 如果 trace 内容、目标对象、父任务或部门同步规则无法安全确认，输出 S07 `manual_review` 或由 S99 fallback 处理。

本 Skill 不直接写数据库，不直接写 Opera，不直接调用 Trace / Reservation Notes 写入 API，不直接修改入住人数，不直接修改房价，不直接创建真实 TaskCard。

如果本 Skill 输出 `ai_task_result` 且通过统一输出校验，AI Runtime / Main Agent / Skill Orchestrator 后续可调用信息系统提供的统一受控 Tool / API 创建 Trace / Reservation Notes 任务卡或人工复核 / 人工处理任务卡。真实 TaskCard ID、状态机、幂等、并发、执行前硬校验和最终写入均由信息系统负责。

## 3. Scope

本 Skill 覆盖 current 邮件中的 Trace / Reservation Notes / Guest Request：

- 邮件正文明确要求添加、修改或取消 Trace / Reservation Notes。
- 邮件正文明确要求添加、修改或取消客人特殊要求。
- 当前附件表格、PDF 或图片 OCR 中明确出现 Trace / Reservation Notes / Guest Request / extra bed。
- QBD / LianTai 表格当前有效行中出现 extra bed、加床、`เตียงเสริม`、`U-เตียงเสริม`、`เสริมเตียง` 等客人要求。
- 与 S01 / S02 / S06 同一事件出现的 Trace / Guest Request / extra bed，需要生成 S07 linked task。

S07 不处理：

- 新建 booking / group block / allotment。
- 修改日期、晚数、房型、房量、Group Code、取消状态。
- Rate Code 判断或房型映射。
- Voucher / payment slip / payment confirmation。
- Rooming List / Name List。

任务卡前端展示字段建议：

- `target_key`
- `trace_subtype`
- `trace_text`
- `notify_departments`

如果 `trace_subtype = extra_bed`，可额外展示或后台保留：

- `occupancy_update`
- `requires_rate_update`
- `rate_adjustment_formula`

## 4. When To Use

当 `body_current` 中的当前邮件事件满足以下任一条件时，Main Agent 可以调用本 Skill：

- 当前事件明确要求添加、更新或取消 Trace。
- 当前事件明确要求添加、更新或取消 Reservation Notes。
- 当前事件明确要求添加、更新或取消 Guest Request / Special Request。
- 当前事件明确要求记录房间偏好、排房要求、房间布置、到店偏好、arrival note、remark / note，且该内容不改变主业务类型。
- 当前事件只要求为既有订单添加、修改或取消 extra bed / 加床 / `เตียงเสริม` / `U-เตียงเสริม` / `เสริมเตียง`。
- 当前事件或当前表格行同时存在 S01 / S02 / S06 主业务动作和 Trace / Guest Request / extra bed，应在主业务任务之外生成 S07 linked task。

典型触发词和表达：

- `Trace`
- `Reservation Note`
- `Reservation Notes`
- `Guest Request`
- `Special Request`
- `Remark`
- `Note`
- `extra bed`
- `add extra bed`
- `加床`
- `เตียงเสริม`
- `U-เตียงเสริม`
- `เสริมเตียง`
- `Non-smoking room`
- `High floor`
- `Away from elevator`
- `Same floor`
- `Set Honeymoon`

触发来源不能限定为附件或某个固定列；正文、附件表格、PDF、图片 OCR 都可以作为 current 证据。

## 5. Must Not Use When

不得在以下情况下使用本 Skill 生成 S07 `normal_task`：

- Trace / Guest Request 只出现在 `body_thread`，不在 `body_current`。
- 当前事件没有 Trace、Reservation Notes、Guest Request 或 extra bed 类动作。
- 当前事件只是普通 New Booking、Update Booking、Cancel Booking、Voucher Received、Rooming List、Amend Group Code，且没有 Trace / Guest Request / extra bed。
- 当前事件只是 thank you、FYI、acknowledgement、noted、received、confirmed receipt、确认收到、转发说明、仅同步信息或无新业务动作，应走 S10。
- 主语义是 Cancel Booking / CXL，且只是被取消对象上历史存在 extra bed 或 guest request，不得自动额外生成 S07。
- 无法判断当前文字是消息通知还是可执行 trace 任务时，不得硬走 S07，应走 S99 structured `manual_review`。

不得把 extra bed 当作：

- `room_quantity`
- PMS room type
- FIT / Group 判断依据
- Rate Code 判断依据
- Fix Charge 独立触发依据

`U-เตียงเสริม` 不是 PMS 房型，必须作为 `trace_subtype = extra_bed` 处理。

## 6. Allowed Result Types

第一版只允许：

- `normal_task`
- `manual_review`

第一版不输出：

- `exception_task`
- `no_action`
- `informational_message`

## 7. Key Context Needed

Main Agent 应尽量提供以下上下文：

- `source_message_id`
- `source_event_index`
- 当前邮件 subject
- `body_current` 中当前 Trace / Guest Request 原文片段
- 当前附件摘要、表格摘要、PDF / 图片 OCR 摘要
- `group_code`
- `confirmation_number`
- reservation number / booking record key，如有
- parent primary task context，如 S01 / S02 / S06 的 task type、source_event_index、case key
- routing context
- 已写入 reservation / group block / booking record 查询结果
- 可关联待完善 New Booking / 上游任务卡查询结果
- 可用引用历史正文，作为 target binding evidence context
- 从引用历史或最近相关线程中识别出的 target key 候选、父 group、上游任务关系和 target key 来源

`body_thread` 只能作为 evidence context，不得单独触发 S07。若 trace 动作来自 `body_current`，`body_thread` 可以用于绑定目标对象或父任务。

## 8. Input Requirements Summary

本 Skill 输入应包含：

- 当前 Trace / Guest Request 请求摘要。
- `body_current` 相关原文片段。
- 当前附件 / 表格 / OCR 摘要。
- 已识别的目标对象 key，例如 `group_code`、`confirmation_number`、reservation number。
- 如果是 linked task，应提供父任务信息。
- routing context，如有。
- 可用历史证据上下文，如有。

本 Skill 不要求 Main Agent 在输入阶段固定完整 `extracted_fields` schema。

### 8.1 Bundled / Shared References

当 current message、attachment、sender、subject 或 extracted evidence 显示 QBD / LianTai Excel / table workflow 时，Main Agent 应读取：

- `../references/qbd_liantai_email_table_rules.md`

使用该 reference 的目的：

- 区分 current / history。
- 判断当前有效高亮 / 黄色行。
- 保留 row-level evidence 作为后台溯源。
- 避免把历史 AMD / CXL 行误判成当前任务。
- 识别同一表格行中的主任务与 S07 linked task 关系。

注意：

- QBD / LianTai reference 可以帮助定位当前行和同一行内的 Trace / Guest Request / extra bed 证据。
- Reference 中的列、行、单元格位置不得被 S07 写死为业务识别规则。
- S07 不读取房型映射或 Rate Code reference 来判断 Rate Code。

## 9. Decision Rules

### 9.1 Current Event Rule

Trace / Reservation Notes / Guest Request / extra bed 动作必须来自 `body_current` 或 current 附件 / current OCR 证据。

如果动作只出现在 `body_thread`，不得输出 S07 `normal_task`。

如果动作来自 `body_current`，但 `group_code` / reservation key 只在 `body_thread` 的最近相关线程中清楚出现，可以把 `body_thread` 作为 target binding evidence。输出必须记录 `target_key_source`、`body_thread_used_only_as_evidence=true`，并保留相关历史片段摘要。

### 9.2 Subtype Rule

S07 必须先判断 `trace_subtype`：

- 明确是 extra bed / 加床 / `เตียงเสริม` / `U-เตียงเสริม` / `เสริมเตียง`：`trace_subtype = extra_bed`。
- 其他 trace / guest request / reservation note：`trace_subtype = general_request`。

如果无法判断是 `extra_bed` 还是 `general_request`，输出 S07 `manual_review`。

### 9.3 Extra Bed Trace Rule

`trace_subtype = extra_bed` 的固定输出规则：

- `trace_text`: `Set Extrabed`
- `notify_departments`: `["FO", "HSK"]`
- `occupancy_update`: `3adult`
- `requires_rate_update`: `true`
- `rate_adjustment_formula`: `rate_code_price / 2 * 3`

硬规则：

- S07 不决定 Rate Code。
- S07 不自己猜 `rate_code_price`。
- S07 不自己计算最终房价。
- S07 输出“需要按 `rate_code_price / 2 * 3` 修改房价”的操作意图。
- 真实取价、计算、落库、校验由信息系统在用户确认后执行。
- 加床不计入 `room_quantity`，不影响 FIT / Group 判断，不作为 PMS room type。
- 如果 S07 是从 S01 / S02 / S06 同一事件派生出的 linked task，必须等待父任务完成并确认目标 reservation / group / booking record 后再执行。

示例：

- `Sup 高级房TWN 4 + extra bed 2` 中 `room_quantity = 4`，extra bed 生成 S07 `extra_bed`。
- `1TPR（ห้องทวิน + เตียงเสริม）` 中 extra bed 生成 S07 `extra_bed`，不新增房量。
- `1间*3晚加床เตียงเสริม*800=2400` 中原文价格可保留为证据，但 S07 仍使用 `rate_code_price / 2 * 3` 操作意图，不自行计算最终价格。

### 9.4 General Request Trace Rule

`trace_subtype = general_request` 用于非加床的 trace / guest request / reservation note。

输出规则：

- `trace_text`: 具体要求文本。优先标准化成可执行英文；如果无法标准化，则保留原文。
- `notify_departments`: 按要求类型判断。

排房相关要求只同步 FO：

- `Non-smoking room`
- `High floor`
- `Away from elevator`
- `Same floor`

对应：

```json
{
  "notify_departments": ["FO"]
}
```

房间布置 / 房务准备要求同步 FO + HSK：

- `Set Honeymoon`
- 其他需要房务准备、布置、摆设、实际进房处理的要求

对应：

```json
{
  "notify_departments": ["FO", "HSK"]
}
```

注意：

- 加床虽然也是房务准备，但不放在 `general_request`，必须走 `trace_subtype = extra_bed`。
- 如果无法判断 `general_request` 应同步 FO 还是 FO + HSK，输出 S07 `manual_review`。

### 9.5 Independent S07 Rule

如果 current 事件只是在既有订单上添加、修改或取消 Trace / Guest Request，且没有其他主业务动作，应直接输出 S07。

必须能确认：

- 目标对象，例如 `group_code`、`confirmation_number`、reservation number、group block key。
- `trace_subtype`。
- `trace_text`。
- `notify_departments`。
- 这是 current 业务动作。

如果目标对象不存在，但存在可承接的待完善 New Booking / 上游任务卡，可以创建 linked S07 任务，等待上游任务完成后再执行。

### 9.5.1 History Target Binding Rule

S07 不得从 history 触发 trace 任务，但可以用 history 绑定 current trace 任务的目标。

允许输出独立 S07 `normal_task` 的 history 绑定条件：

- `body_current` 明确提出可执行 Trace / Guest Request，例如 welcome screen、welcome drink、registration table、key card、ginger tea、meal note、arrival note、extra bed。
- `body_thread` 的最近相关线程段、酒店回复、上游 New Booking / Allotment / Update 任务或 parent group 证据能提供唯一目标，或能提供一个明确父 group / upstream task。
- 多个 child group code 同属同一 parent allocation，且 current request 是线程级 / group-level 服务请求时，可绑定 parent group 或上游 allocation parent，不必拆成所有 child group；除非 current 明确要求逐 child code 分别写不同备注。
- 输出中标记 `target_key_source="body_thread_evidence"` 或更具体的来源，如 `body_thread_latest_hotel_reply`、`body_thread_parent_group`、`upstream_task_context`。
- 如果历史 key 未经权威系统确认，设置 `target_object_validation.status="not_available"` 或等价结构，并标记 `requires_downstream_hard_validation=true`。

仍应输出 S07 `manual_review` 的情况：

- `body_current` 没有 Trace / Guest Request 动作，只有 history 有旧备注。
- `body_thread` 中存在多个互不相关的 group code，无法判断 current request 属于哪个目标。
- 只能看到 child group code 列表，但没有 parent group、最近相关线程、上游任务或业务规则能说明线程级 request 应绑定哪里。
- current request 明确只针对部分 child group，但无法判断具体 child group。

### 9.6 Linked S07 With S01 / S02 / S06 Rule

如果 Trace / Guest Request / extra bed 与 S01 / S02 / S06 同一 current 事件或同一表格行出现，应生成两个任务卡候选：

1. 主业务任务卡：S01 / S02 / S06。
2. S07 linked task：Trace / Reservation Notes。

执行顺序：

- 先处理主业务任务。
- 再处理 S07。

S07 linked task 必须保留父任务关系：

- `parent_source_event_index`
- `linked_task_group_id`
- `depends_on_task_type`
- `depends_on_source_event_index`
- `blocked_until_parent_completed: true`
- `execution_order: 2`

如果统一输出允许非整数 `source_event_index`，可使用类似 `12.1` 表示 S07 linked task。  
如果统一输出只允许整数，应给 S07 分配新的整数 `source_event_index`，同时通过 `parent_source_event_index` 和 `linked_task_group_id` 表达它来自同一原始事件 / 同一表格行。

这是 QBD / LianTai 一行一个任务规则的受控例外：

- 同一当前有效行可以有一个主业务 `ai_task_result`，再有一个 S07 linked `ai_task_result`。
- 不得把主业务和 S07 合并成一个 `ai_task_result`。
- 不得把 S07 trace 只吞进主业务任务而不生成 S07 task。

### 9.7 S03 Boundary Rule

Cancel Booking / CXL 场景不默认额外生成 S07。

如果 Cancel Booking 行里只是历史或被取消对象上带有 extra bed / Guest Request，主任务仍走 S03，不因该信息生成 S07。

只有 current 明确要求“取消后仍需记录某条 trace”或另有独立可执行 trace 动作时，才可以拆出 S07。无法判断时，走 S03 或 S99 structured `manual_review`，不得硬派生 S07。

### 9.8 Object Binding Rule

S07 必须能绑定到一个清楚目标：

- `group_code`
- `confirmation_number`
- reservation number
- group block / control block code
- 同一 current 事件中的父任务
- body_current 动作对应的 body_thread 最近相关目标 key、父 group 或上游任务

独立 S07 应校验：

1. 是否存在对应有效 reservation / group block / booking record。
2. 如果没有现成记录，是否存在可承接的待完善 New Booking / 上游任务卡。

Linked S07 可以绑定父任务，不要求在任务创建时已经有最终 Opera ID；最终写入必须等待父任务完成并确认目标对象。

### 9.9 Table / OCR Source Rule

S07 不得依赖固定列、固定行、固定 sheet 名作为业务识别规则。

QBD / LianTai 表格中，extra bed / Guest Request 可能出现在酒店详情列、备注列、状态列、同一单元格的多行说明中，也可能出现在 PDF / 图片 OCR 中。

行号、列号、单元格地址、sheet 名只可作为 evidence location 或后台溯源字段，不能作为业务识别规则本身。

## 10. Normal Task Output

仅当可以安全创建 Trace / Reservation Notes 任务卡候选时，输出：

```json
{
  "result_type": "normal_task",
  "task_type": "Trace / Reservation Notes",
  "current_or_history": "current"
}
```

必须同时满足：

- Trace / Guest Request 动作来自 current 事件。
- `trace_subtype` 可判断。
- `trace_text` 可确定。
- `notify_departments` 可确定。
- 可以绑定唯一目标对象，或可以绑定明确父任务。
- 目标对象可来自 body_current，也可在 current 动作明确时来自 body_thread evidence；后一种情况必须记录 target key 来源。
- 如果是 linked task，父任务和执行顺序清楚。

完整输出必须符合统一输出契约。关键要求：

- `source_message_id` 必须原样带回。
- `source_event_index` 必须原样带回。
- `visible_reason` 应说明为什么这是 current 邮件中的 Trace / Reservation Notes 任务。
- `relevant_message_excerpt` 必须来自 `body_current` 或 current 附件 / OCR 摘要。
- `context_used` 应记录 routing context 摘要和使用的 reference 文件。
- `case_keys` 应填入可确认的 `group_code`、`confirmation_number` 或 reservation key。
- `extracted_fields.trace_subtype` 必须填入。
- `extracted_fields.trace_text` 必须填入。
- `extracted_fields.notify_departments` 必须填入。
- 如果 `trace_subtype = extra_bed`，必须填入 `occupancy_update=3adult`、`requires_rate_update=true`、`rate_adjustment_formula=rate_code_price / 2 * 3`。
- 如果 target key 来自 history evidence，`extracted_fields` 必须包含 `target_key_source`、`body_thread_used_only_as_evidence=true`、`target_binding_confidence` 或等价字段，并保留 `requires_downstream_hard_validation=true`。
- 如果来自 QBD / LianTai 表格行，应在后台 payload 中保留 row-level evidence。

任务卡前端展示字段建议：

```json
{
  "target_key": "",
  "trace_subtype": "",
  "trace_text": "",
  "notify_departments": []
}
```

`extra_bed` 后台 payload 建议：

```json
{
  "trace_subtype": "extra_bed",
  "trace_text": "Set Extrabed",
  "notify_departments": ["FO", "HSK"],
  "occupancy_update": "3adult",
  "requires_rate_update": true,
  "rate_adjustment_formula": "rate_code_price / 2 * 3"
}
```

通用后台 payload 可保留：

- `raw_guest_request_text`
- `raw_extra_bed_text`
- `raw_extra_bed_price_text`
- `parent_source_event_index`
- `linked_task_group_id`
- `depends_on_task_type`
- `depends_on_source_event_index`
- `blocked_until_parent_completed`
- `execution_order`
- `attachment_id`
- `filename`
- `sheet_name`
- `row_index`
- `cell_reference`
- `ocr_evidence`

## 11. Manual Review Output

当 current 邮件疑似包含 Trace / Reservation Notes / Guest Request / extra bed，但不能安全创建 `normal_task` 时，输出：

```json
{
  "result_type": "manual_review",
  "task_type": "Trace / Reservation Notes",
  "current_or_history": "current"
}
```

典型 `manual_review` 条件：

- 可见 Trace / Guest Request / extra bed 信号，但内容无法读清。
- 无法判断是 `extra_bed` 还是 `general_request`。
- `general_request` 无法判断应同步 FO 还是 FO + HSK。
- 无法确认 S07 的目标对象，也无法确认父任务。
- current 动作明确，但 history 中有多个互不相关目标且无法确定应绑定哪个。
- 加床 trace 无法绑定目标 reservation，无法执行人数和房价修改。
- 加床 trace 需要改价，但信息系统无法取得或确认 `rate_code_price`。
- 同一条 request 中多个要求混在一起，无法拆分 `trace_text` 或部门。
- current / history 边界不清，无法确认该 trace 动作来自 current。
- 主业务任务类型不清，导致 S07 依赖对象不清。
- 附件、表格、PDF 或 OCR 读取失败，导致关键 trace 内容不可解析。

如果父级 S01 / S02 / S06 本身是 `manual_review`，S07 可以作为 linked pending task candidate 保留，但执行必须等待父任务人工确认。

S07 的 `manual_review` 采用项目默认结构，除非后续用户另行确认精简结构。

建议结构：

```json
{
  "manual_review": {
    "reason_code": "",
    "visible_reason": "",
    "review_record_type": "trace_reservation_notes_manual_review",
    "blocking_points": [],
    "missing_fields": [],
    "conflicting_points": [],
    "suggested_human_actions": [],
    "evidence_to_check": []
  }
}
```

典型 `reason_code`：

- `trace_content_unreadable`
- `trace_subtype_unclear`
- `notify_department_unclear`
- `target_object_unclear`
- `parent_task_unclear`
- `extra_bed_target_unclear`
- `rate_code_price_unavailable`
- `multiple_guest_requests_unclear`
- `current_history_boundary_unclear`
- `attachment_or_ocr_unreadable`

注意：

- `manual_review` 不能写成空泛的“人工看一下”。
- 能确定的 `case_keys`、`trace_subtype`、`trace_text`、`notify_departments`、父任务信息应尽量保留。
- 不能可靠确认的字段不要猜，填 `null`、空字符串或空数组。

## 12. Tool Invocation Placeholder

当前创建任务卡 / 可见记录的具体 Tool / API 尚未实现，本节只预留对接位置和语义契约，不定义最终 endpoint、鉴权方式或完整返回结构。

- tool_status: `TBD`
- suggested_tool_name: `create_task_card` / `TBD`
- tool_purpose: 根据信息系统统一任务卡创建接口，创建 Trace / Reservation Notes 任务卡或人工复核 / 人工处理任务卡。
- tool_owner: 信息系统。
- caller: AI Runtime / Main Agent / Skill Orchestrator，最终由系统架构确认。
- invocation_timing: Skill 输出 `ai_task_result` 并通过 Unified Output Contract 校验后。
- payload_rule: Skill 能识别出的目标对象、`trace_subtype`、`trace_text`、部门同步规则、extra bed 操作意图、父任务关系、routing context 和后台证据照实填入；任务卡前端展示 `target_key`、`trace_subtype`、`trace_text`、`notify_departments`。
- must_not_call_when:
  - Skill 输出不符合统一契约
  - current 事件完全不应进入 AI 工作台记录
  - 输出内容缺少任务卡 / 可见记录创建所需的最低溯源字段
- minimum_payload_should_include:
  - `source_message_id`
  - `source_event_index`
  - `catalog_code`
  - `skill_id`
  - `result_type`
  - `task_type`
  - `case_keys`
  - `visible_reason`
  - `relevant_message_excerpt`
  - `attachments`
  - `context_used`
  - `extracted_fields`
  - `manual_review`
  - `idempotency_key` / `TBD`
- expected_tool_result: `TBD`

Tool 设计原则：

- S07 只调用一个统一任务卡创建 Tool：`create_task_card`。
- 真实 Trace 写入、入住人数修改、房价修改是用户确认后的信息系统后续执行动作，不是本 Skill 直接执行动作。
- 如果 S07 是 linked task，信息系统必须等父任务完成并确认目标对象后再执行。
- AI 不直接写数据库，只调用信息系统暴露的受控 Tool / API。
- 信息系统负责真实任务卡 ID、人工复核任务卡 ID、幂等、并发、状态机、最终落库和执行前硬校验。
- 如果 Tool 尚不可用，本 Skill 仍应输出合格的 `ai_task_result`；不得编造 Tool 调用结果。

## 13. Conflict Or Fallback Rule

- 如果 current 邮件同时包含 S07 和可拆分的其他业务动作，应拆成多个 `source_event_index` 分别走对应 Skill。
- 如果 S07 与 S01 / S02 / S06 在同一不可拆分事件或同一表格行里，应生成主业务任务和 S07 linked task。
- 如果 S07 与 S03 Cancel Booking 在同一不可拆分事件里，不默认生成 linked S07；除非 current 明确存在取消后的独立 trace 写入动作。
- 如果当前事件只有普通 New / Update / Cancel / Voucher / Rooming List / Amend Group Code，没有 Trace / Guest Request / extra bed，不走 S07。
- 如果当前 / history 边界不清且无法确认 trace 动作来自 current，交由 `exception_detection_skill` 或 structured `manual_review`。
- 如果无法判断是消息通知还是可执行 trace 任务，交由 S99 structured `manual_review`，不得硬走 S07。

## 14. Must Not

- 不从 `body_thread` 生成 `normal_task`。
- 不把 fixed column、fixed row、fixed sheet 当成业务识别规则。
- 不把 extra bed 计入 `room_quantity`。
- 不把 `U-เตียงเสริม` 当作 PMS room type。
- 不用 extra bed 判断 FIT / Group。
- 不用 extra bed 判断 Rate Code。
- 不由 S07 处理 Fix Charge。
- 不由 S07 决定 Rate Code。
- 不由 S07 猜 `rate_code_price`。
- 不由 S07 自行计算最终房价。
- 不直接修改入住人数。
- 不直接修改房价。
- 不把主业务任务和 S07 linked task 合并成一个 `ai_task_result`。
- 不在 S01 / S02 / S06 同行 extra bed 场景下只吞进主任务而不生成 S07 task。
- 不在 Cancel Booking 场景下默认派生 S07。
- 不输出 `informational_message`。
- 不输出 `no_action`。
- 不输出 `exception_task`。
- 不直接调用 Trace / Reservation Notes 写入 API。
- 不直接写 Opera。
- 不直接写数据库。
- 不编造 Tool endpoint、鉴权、返回结构或调用结果。
- 不把 `manual_review` 输出成空泛的“人工看一下”。
