修复M002 V4入站解析边界

This commit is contained in:
andy
2026-07-18 23:05:15 +07:00
parent 6be14f2b40
commit 3ecbf7eea8
11 changed files with 1326 additions and 706 deletions

View File

@@ -456,6 +456,7 @@ RESERVATION_ROOMING_LIST_GENERATE
- M002 V4 入站解析与数据模型基线已完成第一版:后端可接收 `source_message + order_contexts[] + message_events[]`,识别 `NEW_BOOKING``UPDATE_BOOKING``CANCEL_BOOKING``TRACE_RESERVATION_NOTES``ROOMING_LIST``PAYMENT`,并保存 V4 原始 payload、`route_code`、系统处理分类和 `field_contract_version=20260718-v4`。前端暂不需要直接调用 V4 回调接口。
- V4 可映射 event 现阶段仍复用现有任务详情结构;任务详情中若出现 `field_contract_version=20260718-v4` 或 AI payload 内的 `v4_source_message``v4_order_context``v4_message_event`,前端第一版只读展示即可,不要据此假定完整 V4 多卡页面已经完成。
- V4 `PAYMENT.attachment_ids[]` 不匹配、`UPDATE_BOOKING` 携带 `rate_code` 等问题会出现在任务详情同批次的 `adapter_contract_errors[]` 只读诊断块中,不展示保存、确认、执行或重试按钮。
- V4 包级契约错误只会保存在 AI transition 中不会出现在普通任务列表V4 event 级契约错误如果同批次存在其它业务任务,前端仍按任务详情里的 `adapter_contract_errors[]` 只读展示诊断信息。
- M002 V3 的结构化 `S10/S99` 入站、40 条 P0.1 路由枚举 / 稳定配置、`UNHANDLED_CURRENT_INTENT``adapter_contract_error` transition 最小落库、任务列表 / 订单时间线 / 任务详情 V3 路由字段和只读诊断块透出、type-known manual review 同卡解阻第一版、typed infrastructure error、P0 fixtures 回归基线和 Parent Group / Cancel Allotment 路由修订均已完成。
- 系统管理后台 V1 已完成后续若要做用户搜索更多筛选、批量操作、密码策略增强、MFA、登录设备管理应单独开需求。
- 现有 Reservation / SourceMessage 业务接口的强制登录、强制权限和业务审计 actor 全量迁移仍后置。

View File

@@ -4,7 +4,7 @@
| 项目 | 内容 |
| --- | --- |
| 文档版本 | 0.8 |
| 文档版本 | 0.9 |
| 日期 | 2026-07-18 |
| 状态 | 当前代码契约已支持 V4 入站解析基线、V2 `ai_task_results[]` 兼容、结构化 S10/S99、V3 业务根基础解析、旧 S000/S999 兼容和单酒店 hotel_id 后端解析 |
| 适用范围 | SuperAgent 调用本系统查询上下文、查询邮件会话、提交 AI 任务结果 |
@@ -567,6 +567,7 @@ V4 字段说明:
- 命中 SourceMessage 后保存 AI batch / transition并按 `message_events[]` 顺序处理。
- 可映射 event 先复用现有订单 / 任务 / 任务卡链路,`ai_payload_json` 会保留 `v4_source_message``v4_order_context``v4_message_event`
- `route_code=S10/S99` 创建只读 `SOURCE_MESSAGE_ONLY` 任务,任务列表可见,订单列表不可见。
- V4 包级结构错误如果仍能通过 `source_message.source_message_id` 定位 SourceMessage会返回成功接收并写入 `adapter_contract_error` transition不创建订单、任务或用户可处理卡。`source_message_id` 缺失或找不到 SourceMessage 时仍返回明确错误。
- `PAYMENT.attachment_ids[]` 引用不存在的附件、`UPDATE_BOOKING` 携带 `rate_code`、以及其他 V4 event 契约错误,只写 `adapter_contract_error` transition不创建用户可处理业务任务。
- 技术契约错误不会自动转为 S10/S99也不会创建前端可处理业务任务。

View File

@@ -439,6 +439,7 @@ V3 P0.1 不做以下事项:
- V4 包级 `route_code=S10/S99` 入站处理,复用 `SOURCE_MESSAGE_ONLY` 只读特殊任务;普通 V4 业务包要求 `route_code=null`
- V4 业务根 `source_message + order_contexts[] + message_events[]` 基础解析;`source_message.source_message_id` 按 SourceMessage Inbox 的 `external_message_id` 反查邮件。
- V4 第一版识别 `NEW_BOOKING``UPDATE_BOOKING``CANCEL_BOOKING``TRACE_RESERVATION_NOTES``ROOMING_LIST``PAYMENT`,可映射 event 先复用现有订单 / 任务 / 任务卡链路,并保存 `catalog_code=M002V4``skill_id=booking-desk-event-v4``field_contract_version=20260718-v4` 和 V4 原始三元组 / 原始 event payload。
- V4 包级契约错误在 `source_message.source_message_id` 可定位时只写 `adapter_contract_error` transition不创建订单、任务或用户可处理卡`source_message_id` 缺失或 SourceMessage 不存在时仍返回明确错误。
- V4 `PAYMENT.attachment_ids[]` 必须匹配 `source_message.attachments[].id`V4 `UPDATE_BOOKING` 不接受 `rate_code``after.rate_code`;这类契约错误只落 `adapter_contract_error` transition不创建用户可处理业务任务。
- 40 条 P0.1 路由枚举 / 稳定配置。
- V3 业务根 `source_message + message_events[]` 基础解析;能派生到稳定路由的 event 创建业务任务,无法派生的 event、显式 `contract_errors`、根 `missing_fields`、不完整 `manual_review`、当前 producer 旧 Parent Cancel Booking 和不完整 parent split 候选只落 `adapter_contract_error` transition。

View File

@@ -4,7 +4,7 @@
| 项目 | 内容 |
| --- | --- |
| 文档版本 | 1.1 |
| 文档版本 | 1.2 |
| 日期 | 2026-07-18 |
| 状态 | 当前 V4 字段基线;后端已完成 CP1 入站解析与数据模型基线,完整 V4 多卡模型仍需后续 checkpoint |
| 适用范围 | 0718 业务基线下Agent → Adapter / MCP → 信息系统的业务回调字段 |
@@ -605,6 +605,12 @@ true
技术失败不属于酒店用户任务。后台 debug、告警和技术重试接口属于技术运维需求不进入本次业务回调也不在酒店用户任务卡上增加“重试”。
当前后端实现口径:
- 如果 V4 包级结构不符合契约,但 `source_message.source_message_id` 能按 SourceMessage Inbox 的 `external_message_id` 定位到邮件,后端会创建 AI batch并写入一条 `catalog_code=M002V4``system_process_category=ADAPTER_CONTRACT_ERROR` 的 transition不创建订单、任务或酒店用户可处理卡。
- 如果 `source_message.source_message_id` 缺失、无法解析或无法定位 SourceMessage后端仍返回明确请求错误不创建 AI batch / transition。
- 单个 `message_events[i]` 的契约错误只影响该 event同包其它合法 event 继续按数组顺序处理。
当前项目可以保留 `platform_superagent_dispatch_run` 或同类技术运行记录作为主链路技术状态载体,后续另行设计查询、告警、超时和重试能力。
## 20. 受控 code 目录
@@ -692,6 +698,8 @@ AI 回调包
- 普通业务包要求 `route_code=null`,并按 `message_events[]` 数组顺序处理。
- 第一版识别六类 `event_type``NEW_BOOKING``UPDATE_BOOKING``CANCEL_BOOKING``TRACE_RESERVATION_NOTES``ROOMING_LIST``PAYMENT`
- 能映射到现有稳定任务卡的 event 会创建业务任务,并在 `ai_payload_json` 中保存 `v4_source_message``v4_order_context``v4_message_event``route_code`、系统处理分类和 `field_contract_version=20260718-v4`
- V4 入站校验和路由已拆分为独立 Validator / Router主业务 service 只负责编排、幂等和落库。
- V4 包级契约错误在 SourceMessage 可定位时只写 `adapter_contract_error` transition不创建订单、任务或用户可处理卡。
- `PAYMENT.attachment_ids[]` 必须能匹配 `source_message.attachments[].id`;不匹配时只写 `adapter_contract_error` transition不创建用户可处理业务任务。
- `UPDATE_BOOKING` 中出现 `rate_code``after.rate_code` 时按 `UPDATE_RATE_CODE_NOT_ALLOWED` 写入 `adapter_contract_error` transition。
- `manual_review` 只接受 `null` 或布尔 `true``true` 必须能由当前对象中可识别的未解决字段解释。