# 当前邮件内容完整覆盖 ## 用途 确保当前邮件中每一项有业务意义的内容都有明确去向。不得因为已经匹配一个支持业务事件,就停止读取或静默丢弃同一邮件中的其他当前意图。 本规则是邮件级共享规则,优先于具体事件 reference。它不扩大任务卡能力,也不把当前不支持的内容伪装成 `Trace` 或 `Need Manual Review`。 ## 当前内容盘点 盘点范围包括: - `body_current` 中的请求、询问、安排、事实和告知。 - 当前附件、inline image、PDF、spreadsheet、OCR、表格和文件链接中的业务内容。 - 当前邮件明确继续处理的上文对象。 不作为独立业务内容: - greeting、signature、disclaimer 和纯礼貌文字。 - HTML 与 plain-text MIME alternatives 中语义相同的重复内容。 - quoted thread、forwarded old mail 和其他 history-only 内容。 一个连续请求即使跨多句话,仍作为一个意图;互相独立的请求必须拆开,并按当前证据顺序保留。 ## 完整覆盖不变量 每项有业务意义的当前内容必须且只能进入以下一个结果路径: 1. 匹配支持事件并安全处理:普通 `message_event`,包括 linked `Trace`。 2. 已匹配支持事件但参数、目标或证据不安全:业务级 `Need Manual Review`。 3. 意图清楚但现有事件或任务卡不支持,且同邮件还有至少一个支持事件:最终 `unhandled_current_intents`。 4. 意图清楚但整封邮件没有任何支持事件:Main Agent 输出 `S10`。 5. 输入不足,无法判断是否匹配支持事件:Main Agent 输出 `S99`。 不得用 `relevant_message_excerpt`、源邮件仍可查看或 `extraction_warnings` 代替上述覆盖结果。 ## Main Agent 内部 unknowns 当同邮件已经匹配至少一个支持事件,以下当前内容进入素材包 `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": [] } ``` `case_keys` 只能使用当前证据或允许的历史证据唯一支持的值;不能唯一绑定时保持全 `null`。目标不清本身不阻止邮件级展示,也不得为了填写 key 而猜测。 ## 业务输出映射 `booking-desk-event` 必须把上述 `unknowns` 按原顺序一对一规范化到业务输出顶层 `unhandled_current_intents`: ```json { "category": "unhandled_current_business_content", "current_or_history": "current", "reason_code": "requires_business_approval_or_unsupported_task_card", "text_raw": "<当前证据原文>", "visible_message": "当前邮件包含未被现有任务类型覆盖的业务意图:<忠实中文概述>。请查看原邮件并决定后续处理。", "requires_user_decision": true, "case_keys": { "group_code": null, "confirmation_number": null, "reservation_number": null, "block_code": null }, "attachments": [], "file_references": [] } ``` 规则: - `text_raw` 必须原样保留,不得只留翻译或摘要。 - `visible_message` 必须忠实说明原意,不得增加批准、拒绝、执行或业务结论。无法安全翻译时使用“当前邮件包含未被现有任务类型覆盖的业务意图,请查看原文并决定后续处理。” - `requires_user_decision` 固定为 `true`。 - 只保留当前附件和当前 file reference;历史附件不得带入。 - `source_message_id` 只使用业务输出根对象中的值,不在 item 内重复。 - 该 item 不是 `MessageEvent`,没有 `event_type`,不得创建 TaskCard 或触发外部写入。 ## 去重与边界 - HTML/plain MIME 重复、相同 OCR 重复和签名引用不得生成重复 item。 - 每个独立未覆盖意图一个 item;不得把不同问题压成模糊摘要。 - 已由主事件或 Trace 完整承接的内容不得再次进入该数组。 - 已确定的补充付款安排可以是 `Trace.payment_information`;询问酒店是否批准付款安排进入未覆盖意图。 - 内容不可读或语义不足时,不得伪装成清楚的未覆盖意图;按事件上下文使用 `extraction_warnings`、`Need Manual Review` 或 `S99`。 - `extraction_warnings` 只承载解析、OCR、抽取和证据质量问题,不承载清楚但不受支持的业务意图。 ## 示例 - 当前付款凭证 + “余款能否入住时支付”:输出 `Payment Evidence`,并输出一个未覆盖意图。 - “余款将在入住时支付”且目标唯一:输出 `Trace.payment_information`,不输出未覆盖意图。 - 当前只有清楚的付款政策询问,没有任何支持事件:Main Agent 输出 `S10`,不调用业务 skill。 - 历史中有审批询问、当前只有 `Thanks`:不得从历史生成未覆盖意图。