实现 M002 V4 查询接口

This commit is contained in:
andy
2026-07-19 01:44:32 +07:00
parent 99528b483f
commit dc6c8f48ab
36 changed files with 2213 additions and 47 deletions

View File

@@ -443,6 +443,7 @@ V3 P0.1 不做以下事项:
- 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 仍保留历史兼容链路。
- M002 V4 CP5 已开放 V4 查询接口:`GET /api/reservation/workbench-items``GET /api/reservation/order-tasks``GET /api/reservation/order-tasks/{orderTaskId}``GET /api/reservation/source-notifications/{notificationId}`
- 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 路由枚举 / 稳定配置。
@@ -476,12 +477,12 @@ M002 V4 CP2 设计文档已落地:
- 文档路径:`docs/project/requirements/M002-v4-order-task-card-domain-model-cp2.md`
- 设计内容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 表结构 / RepositoryCP4 入站写入新模型已完成V4 查询接口、卡片确认 / 复核和前端页面仍未实现。
- 当前状态CP3 表结构 / RepositoryCP4 入站写入新模型和 CP5 查询接口已完成V4 卡片确认 / 复核、S10/S99 ack 和前端页面仍未实现。
仍需后续 checkpoint 实现:
- V4 表结构和 Repository 落地已完成第一版:新增 V4 订单任务表、V4 任务卡表和 V4 来源通知表,并提供 Entity、Mapper、Repository、幂等创建、`order_context_index` 稳定排序、非 event 卡 `source_event_index=0` 和 version 乐观锁更新基础方法。
- V4 入站写入新模型已完成第一版:真正创建 SourceMessage 展示卡、Basic Information 卡、业务卡和 S10/S99 来源通知。
- V4 查询接口、卡片确认 / 复核 / 锁定、同订单阻塞和业务审计。
- V4 卡片确认 / 复核 / 锁定、S10/S99 ack、同订单阻塞写侧校验和业务审计。
- V4 前端页面模型、任务详情字段矩阵和目录校验完全切换。
- 真实 OPERA / OHIP、普通任务任意切换订单、字段矩阵从当前扁平结构整体迁移到 0711 P0 新结构、历史旧 Parent Cancel Booking payload 批量迁移。

View File

@@ -4,9 +4,9 @@
| 项目 | 内容 |
| --- | --- |
| 文档版本 | 1.4 |
| 日期 | 2026-07-18 |
| 状态 | 当前 V4 字段基线;后端已完成 CP1 入站解析基线、CP2 多卡模型设计、CP3 持久化基线CP4 入站写入新模型V4 查询 / 写接口仍需后续 checkpoint |
| 文档版本 | 1.5 |
| 日期 | 2026-07-19 |
| 状态 | 当前 V4 字段基线;后端已完成 CP1 入站解析基线、CP2 多卡模型设计、CP3 持久化基线CP4 入站写入新模型和 CP5 查询接口V4 写接口仍需后续 checkpoint |
| 适用范围 | 0718 业务基线下Agent → Adapter / MCP → 信息系统的业务回调字段 |
| 不适用范围 | 数据库表设计、前端视觉细节、真实 PMS API、技术失败后台重试、旧 M002 V3 数据兼容 |
@@ -16,7 +16,7 @@
本契约用于后续 M002 V4 主流程设计、后端领域建模、前端页面模型、Adapter / MCP Schema 对齐和 SuperAgent 联调。当前后端已按本文完成 V4 入站解析基线:能识别 V4 包、校验关键契约、保存 AI transition / 任务卡原始 payload并把可映射的六类 event 先接入现有订单任务链路。
V4 订单任务与多卡领域模型的 CP2 设计已经单独落到 `M002-v4-order-task-card-domain-model-cp2.md`。截至 CP4表结构、Entity、Mapper、Repository 基线已经实现SuperAgent V4 入站已经能写入 V4 订单任务、来源邮件展示卡、Basic Information 卡、业务卡和 S10/S99 来源通知V4 前端查询接口和卡片写操作接口仍未实现。
V4 订单任务与多卡领域模型的 CP2 设计已经单独落到 `M002-v4-order-task-card-domain-model-cp2.md`。截至 CP5表结构、Entity、Mapper、Repository 基线已经实现SuperAgent V4 入站已经能写入 V4 订单任务、来源邮件展示卡、Basic Information 卡、业务卡和 S10/S99 来源通知V4 工作台、订单任务列表 / 详情和来源通知详情查询接口已实现,卡片确认、复核和来源通知 ack 写接口仍未实现。
当前已确认开发阶段数据可以清空,因此 M002 V4 后续可以按新模型重建,不要求兼容旧任务数据、旧草稿、旧 OPERA 模拟、旧 `S000/S999`、旧 Fallback 或旧 `case_keys`
@@ -723,11 +723,20 @@ AI 回调包
- 合法 V4 event 按 `event_type` 创建 `ROOM_INFORMATION``TRACE_RESERVATION_NOTES``ROOMING_LIST``PAYMENT` 业务卡event 契约错误只落 AI transition。
- V4 S10/S99 写入 `workflow_reservation_v4_source_notification`,状态为 `ACK_REQUIRED`
当前 CP5 已完成:
- `GET /api/reservation/workbench-items` 查询 V4 工作台统一列表,混排 V4 业务订单任务和 S10/S99 来源通知。
- `GET /api/reservation/order-tasks` 查询 V4 业务订单任务列表,不包含 S10/S99 来源通知。
- `GET /api/reservation/order-tasks/{orderTaskId}` 查询 V4 订单任务详情按来源邮件展示卡、Basic Information 卡和业务卡拆分。
- `GET /api/reservation/source-notifications/{notificationId}` 查询 V4 S10/S99 来源通知详情。
- CP5 查询接口强制 Bearer 登录、`RESERVATION_TASK_READ` 和酒店访问权;不返回邮件正文、附件 URL、`ai_payload_json` 或来源通知原始 payload。
当前仍未完成:
- 普通 V4 业务包暂时仍保留旧 V3 任务状态、草稿和 OPERA 模拟骨架兼容便于前端过渡V4 新查询 / 写接口完成后再逐步废弃旧链路。
- 普通 V4 业务包暂时仍保留旧 V3 任务状态、草稿和 OPERA 模拟骨架兼容便于前端过渡V4 写接口和前端页面完成后再逐步废弃旧链路。
- V4 卡片确认、复核解阻和 S10/S99 来源通知 ack 写接口。
- 尚未接入真实 PMS / OPERA / OHIP。
- 尚未改造前端 V4 页面模型;前端第一版只能通过现有任务详情字段和原始 payload 观察 V4 入站结果
- 尚未改造前端 V4 页面模型。
## 26. 后端 CP2 设计文档状态
@@ -739,10 +748,10 @@ AI 回调包
- 每个 `message_events[]` event 创建一张业务卡,卡片按固定业务顺序展示。
- S10/S99 后续按来源通知模型实现,不再挂隐藏技术订单;只在任务列表 / 工作台展示,并进入纯通知详情页确认已读 / 已处理。
- `FIT + BOOKING_CODE` 不建立 ACTIVE 唯一约束;业务绑定查到多条时进入人工复核。
- V4 前端工作台统一列表草案`/api/reservation/workbench-items`,业务订单任务接口新开 `/api/reservation/order-tasks/**`S10/S99 来源通知详情草案`/api/reservation/source-notifications/{notificationId}`
- V4 前端工作台统一列表为 `/api/reservation/workbench-items`,业务订单任务接口新开 `/api/reservation/order-tasks/**`S10/S99 来源通知详情为 `/api/reservation/source-notifications/{notificationId}`
- V4 新数据不再保存后端草稿;用户只提交最终确认或复核解阻。
- 卡片确认后锁定,错误修正后续通过审计和未来纠错流程表达,不覆盖原确认。
- 技术异常只进入 AI transition / 技术运行记录,不进入用户可处理卡。
- CP3 已新增 V4 订单任务表、V4 任务卡表和 V4 来源通知表,继续复用 SourceMessage、AI batch、AI transition、Reservation Order 和业务审计表。
CP3 只完成表结构、Entity、Mapper、Repository、幂等创建、`order_context_index` 稳定排序、非 event 卡 `source_event_index=0` 和基础乐观锁更新。CP4 已把 V4 回调写入新模型。后续开发应继续补 V4 查询接口、卡片确认 / 复核、S10/S99 ack 和前端页面。
CP3 只完成表结构、Entity、Mapper、Repository、幂等创建、`order_context_index` 稳定排序、非 event 卡 `source_event_index=0` 和基础乐观锁更新。CP4 已把 V4 回调写入新模型。CP5 已开放查询接口。后续开发应继续补卡片确认 / 复核、S10/S99 ack 和前端页面。

View File

@@ -4,11 +4,11 @@
| 项目 | 内容 |
| --- | --- |
| 文档版本 | 0.2 |
| 日期 | 2026-07-18 |
| 状态 | CP2 设计已确认CP3 表结构、Entity、Mapper、Repository 基线已实现CP4 入站写入新模型已实现 |
| 文档版本 | 0.3 |
| 日期 | 2026-07-19 |
| 状态 | CP2 设计已确认CP3 表结构、Entity、Mapper、Repository 基线已实现CP4 入站写入新模型已实现CP5 查询接口已实现 |
| 适用范围 | M002 V4 入站后的订单任务、多卡、状态、查询和写操作设计 |
| 不适用范围 | V4 前端查询接口、卡片确认 / 复核接口、真实 PMS / OPERA / OHIP、前端页面视觉稿、历史数据迁移 |
| 不适用范围 | 卡片确认 / 复核接口、S10/S99 ack 接口、真实 PMS / OPERA / OHIP、前端页面视觉稿、历史数据迁移 |
## 1. 文档定位
@@ -16,7 +16,7 @@ M002 V4 CP1 已完成 SuperAgent V4 回调包入站解析、基础校验、路
本文是 CP2 设计文档,用于把 2026-07-18 V4 字段契约落成后续可开发的数据模型和接口草案。
截至 CP4,后端已实现本文第 10、11 节中的持久化基线,并已把 SuperAgent V4 入站结果写入新表:普通业务包创建 V4 订单任务、来源邮件展示卡、Basic Information 卡和业务卡V4 S10/S99 创建来源通知。当前仍未开放 V4 前端查询或写操作接口
截至 CP5,后端已实现本文第 10、11 节中的持久化基线,并已把 SuperAgent V4 入站结果写入新表:普通业务包创建 V4 订单任务、来源邮件展示卡、Basic Information 卡和业务卡V4 S10/S99 创建来源通知。当前开放 V4 工作台、订单任务列表 / 详情和来源通知详情查询接口V4 卡片确认、复核和来源通知 ack 写接口仍未开放
后续如本文与 `M002-v4-agent-callback-field-contract.md` 的字段契约冲突,以字段契约为准;如与安全边界冲突,以 `security-access-control-boundary.md` 为准。
@@ -24,7 +24,7 @@ M002 V4 CP1 已完成 SuperAgent V4 回调包入站解析、基础校验、路
| 主题 | CP1 当前实现 | V4 目标模型差距 |
| --- | --- | --- |
| 入站识别 | 已识别 `route_code``source_message``order_contexts[]``message_events[]` | CP4 已把有合法 event 的 `order_ref` 建成订单任务聚合V4 查询接口仍未实现 |
| 入站识别 | 已识别 `route_code``source_message``order_contexts[]``message_events[]` | CP4 已把有合法 event 的 `order_ref` 建成订单任务聚合;CP5 已开放 V4 安全查询接口 |
| SourceMessage | 已按 `source_message.source_message_id` 反查 SourceMessage Inbox | CP4 已固定生成普通业务包内邮件展示卡;邮件正文完整读取仍走 SourceMessage 会话接口 |
| Basic Information | 已写入 V4 Basic Information 独立卡 | 目录校验、确认 / 复核写接口仍待 CP6 / CP7 |
| 业务 Event | 可映射 event 临时创建旧 `workflow_reservation_task`,并已额外创建 V4 业务卡 | 旧任务链路仍作前端过渡兼容,后续 V4 查询和写接口完成后再逐步废弃 |
@@ -417,7 +417,7 @@ CP3 Repository 已封装:
- 来源通知状态的 version 乐观锁更新基础方法。
- event 卡必须传入正数一基 `source_event_index`;漏传会拒绝写入,避免被误当成非 event 卡。
CP3 尚未实现卡片确认、复核解阻、订单归属确认、来源通知 ack 的业务 Service 和 API这些仍属于后续 checkpoint。
CP5 尚未实现卡片确认、复核解阻、订单归属确认、来源通知 ack 的业务 Service 和 API这些仍属于后续 checkpoint。
Service 不直接访问 Mapper。
@@ -432,11 +432,11 @@ Service 不直接访问 Mapper。
当前 `ReservationAiTaskIntakeServiceImpl` 已在 V4 分支调用 `ReservationV4TaskIntakeService` 完成新模型写入;后续查询、确认和复核仍应继续拆到独立 V4 service避免主入站类继续膨胀。
## 12. 前端查询接口草案
## 12. 前端查询接口
以下只是接口草案CP2 不实现
以下查询接口已在 CP5 实现。所有接口都属于 `FRONTEND_USER`,必须带 Bearer token权限码为 `RESERVATION_TASK_READ`,并按酒店访问权校验。查询接口只返回安全摘要、展示 payload、确认 payload、复核结果和状态不返回邮件正文、附件 URL、`ai_payload_json` 或来源通知原始 payload
V4 前端接口不继续扩展旧 `/api/reservation/tasks/**` 作为 V4 主模型入口。第一版草案中,工作台统一列表使用 `/api/reservation/workbench-items`,业务订单任务使用 `/api/reservation/order-tasks/**`S10/S99 来源通知详情和确认使用 `/api/reservation/source-notifications/**`
V4 前端接口不继续扩展旧 `/api/reservation/tasks/**` 作为 V4 主模型入口。第一版中,工作台统一列表使用 `/api/reservation/workbench-items`,业务订单任务使用 `/api/reservation/order-tasks/**`S10/S99 来源通知详情使用 `/api/reservation/source-notifications/**`
### 12.1 工作台统一列表
@@ -478,7 +478,7 @@ GET /api/reservation/order-tasks
权限RESERVATION_TASK_READ
```
查询参数草案
查询参数:
| 参数 | 中文说明 |
| --- | --- |
@@ -514,7 +514,7 @@ GET /api/reservation/order-tasks/{orderTaskId}
权限RESERVATION_TASK_READ
```
返回结构草案
返回结构:
```json
{
@@ -538,7 +538,7 @@ GET /api/reservation/source-notifications/{notificationId}
权限RESERVATION_TASK_READ
```
返回结构草案
返回结构:
```json
{
@@ -557,7 +557,7 @@ GET /api/reservation/source-notifications/{notificationId}
### 12.5 订单详情时间线
建议后续扩展:
建议后续扩展CP5 尚未实现
```text
GET /api/reservation/orders/{orderId}/order-tasks
@@ -669,7 +669,7 @@ AI 原始 payload、邮件正文、附件 URL 和技术 trace 不应直接进入
| --- | --- | --- |
| M002-V4-CP3 | V4 表结构和基础 Repository | 新增 V4 order task / card / source notification 表、Entity、Mapper、Repository、测试 |
| M002-V4-CP4 | V4 入站落新模型 | 已完成SuperAgent V4 回调创建订单任务、Basic Information 卡、业务卡、邮件展示卡和 S10/S99 来源通知 |
| M002-V4-CP5 | V4 查询接口 | 工作台统一列表、订单任务列表、详情、订单详情时间线和来源通知详情查询接口 |
| M002-V4-CP5 | V4 查询接口 | 已完成:工作台统一列表、订单任务列表、订单任务详情和来源通知详情查询接口;订单详情 V4 专属时间线后续再做 |
| M002-V4-CP6 | V4 卡片确认和复核 | 不保存草稿,支持确认、复核、锁定、审计、阻塞规则和 S10/S99 来源通知确认 |
| M002-V4-CP7 | 受控目录第一版 | Account、RoomType、RateCode、Department 固定目录或版本化快照校验 |
| M002-V4-CP8 | V4 前端契约收口 | 字段、控件、availability、错误展示和旧任务入口切换 |