统一V4待处理计数并补齐审计查询

This commit is contained in:
andy
2026-07-20 12:19:05 +07:00
parent c5244bc652
commit 5b4257b125
15 changed files with 438 additions and 19 deletions

View File

@@ -6,7 +6,7 @@
| --- | --- |
| 文档版本 | 0.7 |
| 日期 | 2026-07-20 |
| 状态 | CP2 设计已确认CP3-CP8、CP11、CP13、CP14 已实现 |
| 状态 | CP2 设计已确认CP3-CP8、CP11、CP13、CP14 和 V4 业务审计查询已实现 |
| 适用范围 | M002 V4 入站后的订单任务、多卡、状态、查询和写操作设计 |
| 不适用范围 | V4 复核接口、真实 PMS / OPERA / OHIP、前端页面视觉稿、历史数据迁移 |
@@ -16,7 +16,7 @@ M002 V4 CP1 已完成 SuperAgent V4 回调包入站解析、基础校验、路
本文是 CP2 设计文档,用于把 2026-07-18 V4 字段契约落成后续可开发的数据模型和接口草案。
截至 CP14后端已实现本文第 10、11、12 节中的持久化和查询基线,并已把 SuperAgent V4 入站结果写入新表:普通业务包创建 V4 订单任务、来源邮件展示卡、Basic Information 卡和业务卡V4 S10/S99 创建来源通知。当前已开放 V4 工作台、订单任务列表 / 详情、来源通知详情查询接口、订单详情 V4 订单任务时间线、V4 卡片确认接口、S10/S99 来源通知 ack 接口、V4 `REVIEW_REQUIRED` 卡复核解阻接口、当前酒店数据库目录校验、卡片 `fields[]` 白名单、Account / Room Type / Rate Code lookup API、目录管理后台 CP1以及订单列表 V4 继续处理入口字段。真实 PMS 同步继续后置,设计见 `M002-v4-real-catalog-lookup-api-design.md`
截至 CP14 和 V4 业务审计查询补齐,后端已实现本文第 10、11、12 节中的持久化和查询基线,并已把 SuperAgent V4 入站结果写入新表:普通业务包创建 V4 订单任务、来源邮件展示卡、Basic Information 卡和业务卡V4 S10/S99 创建来源通知。当前已开放 V4 工作台、订单任务列表 / 详情、来源通知详情查询接口、订单详情 V4 订单任务时间线、V4 卡片确认接口、S10/S99 来源通知 ack 接口、V4 `REVIEW_REQUIRED` 卡复核解阻接口、V4 订单任务 / 来源通知审计查询接口、当前酒店数据库目录校验、卡片 `fields[]` 白名单、Account / Room Type / Rate Code lookup API、目录管理后台 CP1以及订单列表 V4 继续处理入口字段。真实 PMS 同步继续后置,设计见 `M002-v4-real-catalog-lookup-api-design.md`
后续如本文与 `M002-v4-agent-callback-field-contract.md` 的字段契约冲突,以字段契约为准;如与安全边界冲突,以 `security-access-control-boundary.md` 为准。
@@ -629,10 +629,11 @@ GET /api/reservation/orders
权限RESERVATION_ORDER_READ
```
在保留旧字段 `open_task_count``next_processable_task_id` 的基础上M002 V4 CP14 已补齐以下 V4 字段:
在保留旧字段 `open_task_count``next_processable_task_id` 的基础上M002 V4 CP14 已补齐以下 V4 字段,并新增订单列表统一展示计数字段
| 字段 | 中文说明 |
| --- | --- |
| `open_work_item_count` | 订单列表统一待处理工作项数量;开发阶段不考虑旧数据,第一版等于 `v4_open_order_task_count` |
| `next_v4_order_task_id` | 当前订单下第一条仍需用户处理的 V4 订单任务 ID |
| `next_v4_action_card_id` | 该 V4 订单任务下第一张仍需确认或复核的卡片 ID |
| `next_v4_action_type` | `CONFIRM` / `REVIEW` / `NONE` |
@@ -642,6 +643,7 @@ GET /api/reservation/orders
派生规则:
- 只统计绑定到订单的 V4 订单任务S10/S99 来源通知不创建订单,不进入订单列表字段统计。
- `open_work_item_count` 是前端展示待处理数量的统一口径;第一版忽略旧 V2/V3 数据,不叠加 `open_task_count`
- 同订单 V4 订单任务沿用 Repository 队列顺序:`source_received_at``source_message_id``order_context_index``created_at`、数字 ID 正序。
- `order_task_status=COMPLETED` 的 V4 订单任务不计入 `v4_open_order_task_count`,也不作为下一步入口。
- 同一 V4 订单任务内Basic Information 必须优先于业务卡。
@@ -650,6 +652,25 @@ GET /api/reservation/orders
前端订单列表“继续处理”应优先使用 `next_v4_order_task_id` 跳转 V4 订单任务详情;没有 V4 待处理入口时,再回退旧 `next_processable_task_id`
### 12.7 V4 业务审计查询
V4 卡片确认、复核解阻、复核场景订单归属确认和 S10/S99 来源通知 ack 已写入 `workflow_reservation_audit_log`。由于 V4 新模型不再使用旧 `workflow_reservation_task.id` 作为主承载,第一版审计查询按写入快照中的 V4 目标 ID 关联:
```text
GET /api/reservation/order-tasks/{orderTaskId}/audits
GET /api/reservation/source-notifications/{notificationId}/audits
```
接口规则:
- 两个接口都必须 Bearer 登录。
- 权限码统一使用 `RESERVATION_AUDIT_READ`
- 后端先反查 V4 订单任务或来源通知的真实 `hotel_id`,再校验当前用户酒店访问权。
- `order-tasks/{orderTaskId}/audits` 第一版返回 `V4_CARD_CONFIRM``V4_CARD_REVIEW_RESOLVE` 等订单任务相关业务审计。
- `source-notifications/{notificationId}/audits` 第一版返回 `V4_SOURCE_NOTIFICATION_ACK`
- 响应沿用旧审计行结构:`audit_id``order_id``task_id``operation_id``actor_type``actor_id``action``reason``before_snapshot``after_snapshot``occurred_at`
- 审计快照只作为前端时间线展示数据,后端会清理 `raw`、正文、HTML、token、secret、私有 URL 和完整 payload 字段,前端仍不能把未知 URL-like 字符串直渲成附件或正文。
## 13. 前端写操作接口
### 13.1 确认卡片
@@ -755,6 +776,7 @@ S10/S99 已确认采用来源通知模型,不继续复用隐藏技术订单或
| 能力 | 分类 | 权限码 | 审计 |
| --- | --- | --- | --- |
| 查询工作台、订单任务列表 / 详情、来源通知详情 | `FRONTEND_USER` | `RESERVATION_TASK_READ` | 只读默认不写业务审计 |
| 查询 V4 订单任务 / 来源通知业务审计 | `FRONTEND_USER` | `RESERVATION_AUDIT_READ` | 查询审计不再写审计;审计快照脱敏后返回 |
| 确认卡片 | `FRONTEND_USER` | `RESERVATION_TASK_CONFIRM` | 写业务审计 |
| 复核解阻 | `FRONTEND_USER` | `RESERVATION_MANUAL_REVIEW_RESOLVE` | 写业务审计 |
| 确认 S10/S99 来源通知 | `FRONTEND_USER` | `RESERVATION_TASK_CONFIRM` | 写业务审计 |
@@ -779,7 +801,8 @@ AI 原始 payload、邮件正文、附件 URL 和技术 trace 不应直接进入
| M002-V4-CP12 | 前端 Lookup 接入 | V4 卡片字段按 `options_source` 调用 lookup替换固定种子硬编码选项处理 stale / warning / 空目录 |
| M002-V4-CP13 | 目录管理后台 V1 | Account / Market / Source 管理,临时 Room Type / Rate Code 管理,目录维护权限和管理审计 |
| M002-V4-CP14 | 订单列表 V4 继续处理入口 | 已完成:`GET /api/reservation/orders` 返回 V4 下一步订单任务、卡片、动作类型、动作状态和 open 数,前端可优先跳 V4 订单任务详情 |
| M002-V4-CP15 | PMS / OPERA / OHIP 目录同步 | 同步 Adapter、同步 run、最后成功快照、失败重试和同步状态管理入口 |
| M002-V4-CP15 | V4 业务审计查询 | 已完成:`GET /api/reservation/order-tasks/{orderTaskId}/audits``GET /api/reservation/source-notifications/{notificationId}/audits` 返回卡片确认、复核解阻和来源通知 ack 的脱敏审计流水 |
| M002-V4-CP16 | PMS / OPERA / OHIP 目录同步 | 同步 Adapter、同步 run、最后成功快照、失败重试和同步状态管理入口 |
## 17. 已确认设计决策