实现M002 V4入站写入新模型

This commit is contained in:
andy
2026-07-19 00:54:58 +07:00
parent e6fbd7a111
commit e59ac2f3bf
17 changed files with 1256 additions and 115 deletions

View File

@@ -42,7 +42,7 @@ V3 以以下资料和决策为输入:
- M002 V3 正式采用 0711 P0 基线,并从 2026-07-12 起采用 P0.1 Parent Group / Allotment 增量修订。
- 旧数据 `S000/S999` 继续在任务列表可见;新数据迁移为 `S10/S99`
- M002 V3 / P0.1 阶段 `S10/S99` 继续复用隐藏技术订单 + 任务列表只读卡不进入订单列表和订单执行队列M002 V4 新模型已确认 S10 改为来源通知模型,不再挂隐藏技术订单。
- M002 V3 / P0.1 阶段 `S10/S99` 继续复用隐藏技术订单 + 任务列表只读卡不进入订单列表和订单执行队列M002 V4 新模型已确认 S10/S99 改为来源通知模型,不再挂隐藏技术订单。
- 缺少 `source_message.source_message_id` 时,后端已按 `HTTP 400 + infrastructure_input_error + retryable=true` 的技术错误响应返回,不创建 SourceMessage、AI transition、订单、任务或通知卡。
- 内部任务模型采用“方案 C”完整保存 AI 三元组,系统处理分类和前端展示分类单独维护。
- type-known manual review 使用同一张业务卡复核解阻,不生成第二张 normal task。
@@ -152,7 +152,7 @@ V3 接收端按根结构分流:
- 不允许保存草稿、最终确认、复核转换、普通切换订单、执行 OPERA、重试 OPERA。
- 任务详情展示来源邮件、邮件会话、附件、SuperAgent 原始返回、`route_code` 和入口说明。
以上是 M002 V3 / P0.1 当前实现口径。M002 V4 新模型落地时S10 改为来源通知模型:任务列表 / 工作台展示点击进入纯通知详情页只显示邮件展示卡和确认按钮不创建订单、不进订单列表、不参与订单阻塞也不支持编辑、复核、OPERA 或人工终止。
以上是 M002 V3 / P0.1 当前实现口径。M002 V4 新模型落地时S10/S99 改为来源通知模型:任务列表 / 工作台展示点击进入纯通知详情页只显示邮件展示卡和确认按钮不创建订单、不进订单列表、不参与订单阻塞也不支持编辑、复核、OPERA 或人工终止。
### 6.3 旧 S000 / S999 兼容
@@ -250,7 +250,7 @@ V3 内部模型采用方案 C避免把 SuperAgent 的任务三元组直接等
-`group_code``confirmation_number` 等可定位字段时,优先挂靠或创建相应订单。
- 同一个 `hotel_id + GROUP_CODE` 只能有一个 `ACTIVE` 订单。
- 同一个 `hotel_id + CONFIRMATION_NUMBER` 只能有一个 `ACTIVE` 订单。
- M002 V3 / P0.1 当前实现中,`S10/S99` 使用隐藏技术订单不进入订单列表M002 V4 S10 目标模型改为独立来源通知,不再挂订单。
- M002 V3 / P0.1 当前实现中,`S10/S99` 使用隐藏技术订单不进入订单列表M002 V4 S10/S99 目标模型改为独立来源通知,不再挂订单。
P0 新增明确:复核场景下需要支持用户确认订单归属。它不是普通任务切换订单:
@@ -438,9 +438,11 @@ V3 P0.1 不做以下事项:
- `S000/S999` 文本结果兼容处理。
- 结构化 `S10/S99` 入站处理,复用 `SOURCE_MESSAGE_ONLY` 只读特殊任务。
- V4 包级 `route_code=S10/S99` 入站处理,复用 `SOURCE_MESSAGE_ONLY` 只读特殊任务;普通 V4 业务包要求 `route_code=null`
- V4 包级 `route_code=S10/S99` 已识别M002 V4 CP4 后,新 V4 S10/S99 写入来源通知模型,普通 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。
- M002 V4 CP4 已补充新模型写入:普通 V4 业务包会额外创建 V4 订单任务、来源邮件展示卡、Basic Information 卡和业务卡;只有契约错误、没有合法业务 event 的包不会创建 V4 订单任务。
- M002 V4 CP4 后V4 `route_code=S10/S99` 写入 `workflow_reservation_v4_source_notification`不再创建隐藏技术订单或旧任务V3 S10/S99 和旧 S000/S999 仍保留历史兼容链路。
- 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 路由枚举 / 稳定配置。
@@ -472,14 +474,14 @@ V3 P0.1 不做以下事项:
M002 V4 CP2 设计文档已落地:
- 文档路径:`docs/project/requirements/M002-v4-order-task-card-domain-model-cp2.md`
- 设计内容SourceMessage 邮件展示卡、S10 来源通知、`source_message_id + order_ref` 订单任务、Basic Information 独立卡、每个 V4 event 的业务卡、卡片确认 / 复核 / 锁定、同订单阻塞、表结构草案和后续接口草案。
- 已确认V4 工作台统一列表新开 `/api/reservation/workbench-items`,业务订单任务新开 `/api/reservation/order-tasks/**`S10 来源通知使用 `/api/reservation/source-notifications/**`S10 采用来源通知模型;`FIT + BOOKING_CODE` 不建 ACTIVE 唯一约束匹配多条进人工复核Basic Information 必须先确认其它业务卡第一版不强制逐张确认Account / Market / Source 目录第一版使用后端固定种子数据。
- 当前状态:只完成文档设计未新增表、Entity、Repository、接口或前端页面
- 设计内容SourceMessage 邮件展示卡、S10/S99 来源通知、`source_message_id + order_ref` 订单任务、Basic Information 独立卡、每个 V4 event 的业务卡、卡片确认 / 复核 / 锁定、同订单阻塞、表结构草案和后续接口草案。
- 已确认V4 工作台统一列表新开 `/api/reservation/workbench-items`,业务订单任务新开 `/api/reservation/order-tasks/**`S10/S99 来源通知使用 `/api/reservation/source-notifications/**`S10/S99 采用来源通知模型;`FIT + BOOKING_CODE` 不建 ACTIVE 唯一约束匹配多条进人工复核Basic Information 必须先确认其它业务卡第一版不强制逐张确认Account / Market / Source 目录第一版使用后端固定种子数据。
- 当前状态:CP3 表结构 / Repository 和 CP4 入站写入新模型已完成V4 查询接口、卡片确认 / 复核和前端页面仍未实现
仍需后续 checkpoint 实现:
- V4 表结构和 Repository 落地已完成第一版:新增 V4 订单任务表、V4 任务卡表和 V4 来源通知表,并提供 Entity、Mapper、Repository、幂等创建、`order_context_index` 稳定排序、非 event 卡 `source_event_index=0` 和 version 乐观锁更新基础方法。
- V4 入站写入新模型真正创建 SourceMessage 展示卡、Basic Information 卡业务卡。
- V4 入站写入新模型已完成第一版:真正创建 SourceMessage 展示卡、Basic Information 卡业务卡和 S10/S99 来源通知
- V4 查询接口、卡片确认 / 复核 / 锁定、同订单阻塞和业务审计。
- V4 前端页面模型、任务详情字段矩阵和目录校验完全切换。
- 真实 OPERA / OHIP、普通任务任意切换订单、字段矩阵从当前扁平结构整体迁移到 0711 P0 新结构、历史旧 Parent Cancel Booking payload 批量迁移。