修复 V4 查询接口安全与筛选问题

This commit is contained in:
andy
2026-07-19 10:13:57 +07:00
parent dc6c8f48ab
commit 9404a0e5c1
7 changed files with 348 additions and 26 deletions

View File

@@ -464,11 +464,12 @@ GET /api/reservation/workbench-items
- `order_task_status`:仅业务订单任务返回 `OPEN` / `COMPLETED`
- `display_status`:可返回 `OPEN` / `BLOCKED` / `COMPLETED` / `ACK_REQUIRED` / `ACKED`
- `readonly_reason_code`
- `created_at` / `updated_at`:工作台条目创建和更新时间,主要用于同一来源时间下的稳定排序和前端调试。
排序规则:
- 默认按 `source_received_at` 倒序。
- 同一来源时间下按 AI batch 接收时间、记录创建时间倒序。
- 同一来源时间下按记录 `updated_at``created_at`、数字 ID 倒序。
### 12.2 业务订单任务列表
@@ -488,6 +489,12 @@ GET /api/reservation/order-tasks
| `keyword` | 可选匹配邮件主题、发件人、Group Code、Booking Code、Confirmation Number |
| `page_num` / `page_size` | 分页 |
筛选说明:
- `order_task_status` 只接受 `OPEN` / `COMPLETED`,非法值返回 `V4_ORDER_TASK_STATUS_INVALID`
- `card_status` 只接受 `READONLY` / `PENDING_CONFIRM` / `REVIEW_REQUIRED` / `CONFIRMED`,非法值返回 `V4_CARD_STATUS_INVALID`
- `card_status` 按业务 / 可处理卡筛选,固定的 `SOURCE_MESSAGE_DISPLAY` 来源邮件只读卡不参与匹配,避免 `READONLY` 把所有普通业务任务都筛出来。
返回摘要应包含:
- `order_task_id`
@@ -530,6 +537,10 @@ GET /api/reservation/order-tasks/{orderTaskId}
前端应以返回的 `cards[]``availability` 为准渲染,不自行拼完整字段矩阵。
`adapter_contract_errors[]` 返回同一 AI 批次中未生成业务卡的 V4 event 级契约错误诊断块,只包含白名单诊断字段,例如 `event_type``source_event_index``contract_errors``reason_code``missing_fields` 等;不返回完整 AI payload、邮件正文、附件 URL 或 raw evidence。
来源邮件摘要必须按当前查询酒店过滤。如果 V4 订单任务因脏引用指向了其它酒店的 SourceMessage详情接口只能返回该 `source_message_id` 的空摘要占位,不得透出对方酒店的主题、外部消息 ID、发件人或会话信息。
### 12.4 S10/S99 来源通知详情
```text