# 人工复核

## 入口结果边界

Main Agent 在调用业务 skill 前先完成支持范围分类：

- 当前输入可理解，但没有匹配 `00-output-contract.md` 列出的支持业务事件时，输出 `S10`。
- 当前输入不足，无法判断是否匹配支持业务事件时，输出 `S99`。
- `S10` 和 `S99` 都展示源邮件并由用户自行决定是否回复或进行其他处理。
- `S10` 和 `S99` 不由 `booking-desk-event` skill 输出。

Thank you、裸 FYI、acknowledgement、Noted、Received 等没有具体预订业务信息的文字，以及一般咨询和当前不支持的 Booking Confirmation Request，都不匹配 Trace。FYI 或单纯告知中包含与明确预订对象相关的具体补充信息时，匹配 `Trace`。正文只有 `see attached` 且附件无法取得、无法识别业务方向时走 `S99`。

需要酒店批准的价格、退款、减免、账期、付款政策或合同条件询问不是 Trace。此类具有当前业务意义但没有任务卡承接的内容必须保留在 `unknowns`：同邮件存在支持事件时输出到 `unhandled_current_intents`，整封邮件没有支持事件时走 S10。意图清楚但不受支持不等于业务判断不安全，不得仅因此输出 `Need Manual Review`。

## Need Manual Review

Main Agent 已经匹配至少一个支持业务事件，但普通事件处理不安全时，使用 `Need Manual Review`：

- current action 在多个支持事件类型之间冲突且无法安全裁决
- target object unclear 或不唯一
- current/history boundary unclear
- 已匹配支持事件，但 attachment/file/OCR/table 不可读
- required room type / Rate Code / settlement price mapping 无法唯一支持
- QBD/LianTai row/highlight/current-row evidence 缺失或歧义
- system context 显示 duplicate、pending/open task、active workflow、lock 或 conflict

例如正文明确 `please update as attached`，但附件不可读时，已经匹配 Update 事件，应输出业务级 `Need Manual Review`，不得降级为 `S99`。

`Need Manual Review` 使用 `manual_review.review_record_type=business_event_review`。入口 `S99` 继续使用 `manual_review.review_record_type=main_agent_entry_review`，两者不得混用。

## 必要结构

业务级 Manual Review 必须包含：

- `reason_code`
- `visible_reason`
- `review_record_type`
- `missing_fields`
- `blocking_points`
- `conflicting_points`
- `suggested_human_actions`
- `evidence_to_check`
- `known_fields`

未知字段用 `null`、空字符串或空数组。不要猜。

## 常见 Reason Code

- `current_history_boundary_unclear`
- `target_object_unclear`
- `multiple_target_candidates`
- `attachment_or_ocr_unreadable`
- `event_type_conflict_unclear`
- `room_type_mapping_unconfirmed`
- `room_type_mapping_multiple_candidates`
- `rate_code_unconfirmed`
- `rate_code_rule_not_covered`
- `settlement_price_required`
- `manual_price_unconfirmed`
- `composite_unit_price_unconfirmed`
- `fix_charge_unconfirmed`
- `qbd_liantai_row_evidence_unreadable`
- `parent_child_split_evidence_unclear`
- `stay_date_inference_unclear`
- `existing_order_record_found`
- `pending_or_active_workflow_found`
