提交一次代码
This commit is contained in:
@@ -0,0 +1,211 @@
|
||||
# Trace 与预订补充信息
|
||||
|
||||
## 定义
|
||||
|
||||
`Trace` 用于保存当前邮件中与具体预订对象相关、但不属于主任务核心参数的补充业务信息。
|
||||
|
||||
补充信息可以是要求、安排、备注或单纯告知。只要当前内容包含具体预订业务信息并能绑定目标,就生成 `Trace`;不要判断发件人是否明确要求酒店记录、执行或转交。
|
||||
|
||||
主任务已经完整表达的核心参数不得重复生成 `Trace`。例如 New Booking 的入住日期、房型和房量仍属于 New Booking;同邮件中的 meeting、meal、arrival notice 或 room preference 才作为补充信息生成 `Trace`。
|
||||
|
||||
## 触发条件
|
||||
|
||||
普通 `Trace` 必须同时满足:
|
||||
|
||||
- 信息来自当前邮件正文、当前附件、当前图片/OCR、当前表格或当前明确继续处理指令。
|
||||
- 信息包含具体预订业务内容,不是只有礼貌或收件确认文字。
|
||||
- 信息能唯一绑定 `group_code`、confirmation number、reservation number,或能关联同邮件中目标明确的主事件。
|
||||
- 信息不属于主任务已经完整承接的核心参数。
|
||||
|
||||
历史内容只能补充目标 key 或解释当前信息,不能单独触发 `Trace`。
|
||||
|
||||
事件类型固定为:
|
||||
|
||||
- `Trace`
|
||||
|
||||
普通预订补充信息不再输出 `Note`。`Note` 仅为旧契约兼容保留,除非后续任务卡映射另有明确规则。
|
||||
|
||||
## 子类型
|
||||
|
||||
- `extra_bed`:同一 Trace 的全部条目都是 extra bed。
|
||||
- `general_request`:包含任意非 extra-bed 条目,包括 mixed Trace。
|
||||
|
||||
## Trace 输出
|
||||
|
||||
`extracted_fields` 固定使用:
|
||||
|
||||
```json
|
||||
{
|
||||
"trace_subtype": "extra_bed | general_request",
|
||||
"trace_text": "<按当前证据顺序合并的完整补充信息原文>",
|
||||
"trace_items": [
|
||||
{
|
||||
"category": "extra_bed | room_preference | room_setup | meeting | function | meal | transport | payment_information | general_information",
|
||||
"text_raw": "<单条原文>",
|
||||
"service_date": "YYYY-MM-DD | null",
|
||||
"service_period_raw": "FULL DAY | null",
|
||||
"pax": 110,
|
||||
"notify_departments": []
|
||||
}
|
||||
],
|
||||
"notify_departments": []
|
||||
}
|
||||
```
|
||||
|
||||
规则:
|
||||
|
||||
- `trace_text` 必须完整保留所有补充信息原文,按当前证据中的出现顺序使用换行连接;结构化字段不能替代原文。
|
||||
- `trace_items` 每条补充信息一个 item,顺序与 `trace_text` 一致。
|
||||
- `category` 只能使用上述枚举;没有更具体类别时使用 `general_information`。
|
||||
- `service_date`、`service_period_raw` 和 `pax` 只在当前证据或合法日期上下文可以唯一支持时填写,否则为 `null`。
|
||||
- item 的 `notify_departments` 只保留当前证据明确指定或本规则可以唯一确定的部门;无法确定时使用空数组。
|
||||
- 事件级 `notify_departments` 是所有 item 已知部门的去重合集;全部未知时使用空数组。
|
||||
- `notify_departments` 为空不阻塞 Trace,不得仅因此输出人工复核。
|
||||
|
||||
## General Request
|
||||
|
||||
`general_request` 包括但不限于:
|
||||
|
||||
- Meeting、conference、function、banquet。
|
||||
- Meal arrangement。
|
||||
- Airport transfer 或其他 transport arrangement。
|
||||
- Non-smoking、high floor、away from elevator、same floor 等 room preference。
|
||||
- Honeymoon、房间布置、amenity placement 等 room setup。
|
||||
- Guide arrival、到店安排、接待信息或其他具体预订补充事实。
|
||||
- 已确定的补充付款安排,例如“剩余款项将在入住时支付”。
|
||||
- 其他能绑定具体预订对象、且不属于主任务核心参数的补充业务信息。
|
||||
|
||||
以上是开放示例,不是封闭白名单。即使当前内容只是告知,没有出现 `please note`、`please arrange`、`please inform` 等动作词,也按本规则生成 Trace。
|
||||
|
||||
`payment_information` 只表示已经确定、需要随预订保留的补充付款安排。它不包括付款凭证、到账结果、Payment Notice、Invoice、催款、价格或付款条件审批询问;这些内容继续按各自业务规则路由,不得为了生成 Trace 任务卡而改名。
|
||||
|
||||
例如 New Booking `HD260510A` 同邮件出现 `12/5 FULL DAY Meeting 110 PAX` 时,额外生成 linked `Trace.general_request`,并保留:
|
||||
|
||||
```json
|
||||
{
|
||||
"trace_subtype": "general_request",
|
||||
"trace_text": "12/5 FULL DAY Meeting 110 PAX",
|
||||
"trace_items": [
|
||||
{
|
||||
"category": "meeting",
|
||||
"text_raw": "12/5 FULL DAY Meeting 110 PAX",
|
||||
"service_date": "2026-05-12",
|
||||
"service_period_raw": "FULL DAY",
|
||||
"pax": 110,
|
||||
"notify_departments": []
|
||||
}
|
||||
],
|
||||
"notify_departments": []
|
||||
}
|
||||
```
|
||||
|
||||
## Extra Bed
|
||||
|
||||
Extra bed item 使用通用 item 结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"category": "extra_bed",
|
||||
"text_raw": "<extra bed 原文>",
|
||||
"service_date": null,
|
||||
"service_period_raw": null,
|
||||
"pax": null,
|
||||
"notify_departments": ["FO", "HSK"]
|
||||
}
|
||||
```
|
||||
|
||||
同时继续在事件级 `extracted_fields` 保留原有业务意图字段,不得移动或删除:
|
||||
|
||||
```json
|
||||
{
|
||||
"occupancy_update": "3adult",
|
||||
"requires_rate_update": true,
|
||||
"rate_adjustment_formula": "rate_code_price / 2 * 3"
|
||||
}
|
||||
```
|
||||
|
||||
只要合并后的 Trace 包含 extra bed item,就保留上述事件级字段;全部 item 都是 extra bed 时使用 `trace_subtype=extra_bed`,否则使用 `general_request`。
|
||||
|
||||
硬边界:
|
||||
|
||||
- 不计算最终价格。
|
||||
- 不决定 Rate Code。
|
||||
- 不把 extra bed 当 room quantity。
|
||||
- 不把 `U-เตียงเสริม` 当 PMS room type。
|
||||
- 原始 extra bed price text 只能作为 evidence。
|
||||
|
||||
## 部门规则
|
||||
|
||||
现有明确映射继续使用:
|
||||
|
||||
- Non-smoking、high floor、away from elevator、same floor:`FO`。
|
||||
- Set Honeymoon、房间布置、amenity placement、需要 housekeeping 准备的要求:`FO` + `HSK`。
|
||||
- Extra bed:`FO` + `HSK`。
|
||||
|
||||
Meeting、function、meal、transport、payment information 或其他类别没有明确部门映射时使用空数组,交由任务卡用户确认,不输出人工复核。
|
||||
|
||||
## 告知、礼貌文字与审批询问边界
|
||||
|
||||
以下当前内容生成 Trace:
|
||||
|
||||
- `FYI guide will arrive at 20:00` 等带有具体预订事实的告知。
|
||||
- 已确定的安排或事实,即使没有要求酒店采取动作。
|
||||
|
||||
以下内容不生成 Trace:
|
||||
|
||||
- 只有 `Thanks`、`Noted`、`Received`、`FYI`、`confirmed receipt` 或同类礼貌/收件确认,没有任何具体预订业务信息。
|
||||
- Booking Confirmation Request、`please confirm booking details` 或要求酒店核对并回复既有预订。
|
||||
- 需要酒店批准或决定的价格谈判、退款、减免、豁免、账期、付款政策或合同条件询问。
|
||||
- 例如“剩余款项可以入住时支付吗”属于付款政策审批询问,不是 Trace;“剩余款项将在入住时支付”属于已确定的 payment information,可以是 Trace。
|
||||
|
||||
不符合 Trace 但具有当前业务意义的内容不得静默忽略。必须在 Main Agent 素材包的 `unknowns` 中保留原文,并使用:
|
||||
|
||||
```json
|
||||
{
|
||||
"category": "unhandled_current_business_content",
|
||||
"current_or_history": "current",
|
||||
"reason_code": "requires_business_approval_or_unsupported_task_card",
|
||||
"text_raw": "<当前原文>",
|
||||
"case_keys": {
|
||||
"group_code": null,
|
||||
"confirmation_number": null,
|
||||
"reservation_number": null,
|
||||
"block_code": null
|
||||
},
|
||||
"attachments": [],
|
||||
"file_references": []
|
||||
}
|
||||
```
|
||||
|
||||
同邮件存在至少一个支持事件时,按 `03-current-content-completeness.md` 输出到业务根对象的 `unhandled_current_intents`;整封邮件没有支持事件时由 Main Agent 输出 S10。未覆盖意图不是 Trace,也不创建任务。
|
||||
|
||||
## 独立、关联与合并
|
||||
|
||||
- 同一封邮件、同一目标对象只生成一个 `Trace`。
|
||||
- 同一目标的多条补充信息合并进一个 `trace_text` 和多个 `trace_items`。
|
||||
- 多个 `group_code` 必须分别生成 Trace,不得合并到数组型 `case_keys.group_code`。
|
||||
- 独立 Trace 必须由当前证据或允许的历史证据唯一绑定目标。
|
||||
- Trace 与 New Booking、Update Booking / Amendment 或 AMEND GROUP CODE 同现时,输出主事件和单独 linked Trace。
|
||||
- linked Trace 保留 `related_source_event_index`、`related_event_type`、`relationship_type=linked_trace` 和 `requires_downstream_hard_validation=true`。
|
||||
- 不得把 Trace 吞进主事件的普通备注字段。
|
||||
|
||||
## Cancel 边界
|
||||
|
||||
Cancel 行不会因为被取消对象历史上有补充信息就自动生成 Trace。只有当前邮件同时提供新的、需要保留的具体预订补充信息时才生成 Trace。
|
||||
|
||||
## 人工复核
|
||||
|
||||
只有以下情况输出 `Need Manual Review`:
|
||||
|
||||
- 当前 Trace 内容不可读,无法保留可靠原文。
|
||||
- 当前信息无法唯一绑定目标对象。
|
||||
- 历史目标候选冲突。
|
||||
- 同邮件存在多个主事件,补充信息无法判断属于哪个目标。
|
||||
- current/history 边界不清。
|
||||
- extra bed rate update 无法安全附着到目标。
|
||||
|
||||
以下情况本身不构成人工复核:
|
||||
|
||||
- `notify_departments` 不清。
|
||||
- `service_date`、`service_period_raw` 或 `pax` 缺失。
|
||||
- 当前信息是要求还是单纯告知不清。
|
||||
Reference in New Issue
Block a user