8.8 KiB
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 固定使用:
{
"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,并保留:
{
"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 结构:
{
"category": "extra_bed",
"text_raw": "<extra bed 原文>",
"service_date": null,
"service_period_raw": null,
"pax": null,
"notify_departments": ["FO", "HSK"]
}
同时继续在事件级 extracted_fields 保留原有业务意图字段,不得移动或删除:
{
"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 中保留原文,并使用:
{
"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缺失。- 当前信息是要求还是单纯告知不清。