适配 M002 V3 前端任务流与同卡复核
This commit is contained in:
@@ -332,6 +332,23 @@ POST /api/system/reservation/demo-data
|
||||
| 复核场景订单归属确认 | 任务详情复核 | 已完成第一版 | 后端提供复核确认时的订单归属确认;当前第一版只能确认当前任务所属订单,后续如要选择其他订单需另行细化。 |
|
||||
| P0 fixtures 回归基线 | 联调回归 | 已完成第一版 | 后端已将 0711 P0 fixtures 纳入测试参考;前端对 S10/S99、同卡复核和只读诊断块的展示应继续按本节稳定字段接入。 |
|
||||
|
||||
### 6.2 前端本轮接入状态(2026-07-11)
|
||||
|
||||
本轮前端已按 M002 V3 P0 完成以下接入,后端不需要重复补接口:
|
||||
|
||||
- 任务列表已按 `result_type`、`route_code`、`system_process_category` 识别 `source_message_review_notification`、`adapter_contract_error`、`unhandled_current_intent` 只读诊断任务;S10/S99 和旧 S000/S999 都不展示订单入口。
|
||||
- 任务详情已展示 `result_type`、`ai_task_type`、`task_subtype`、`route_code`、`system_process_category`、`review_status`、来源邮件入口、`source_message_only_result`、`manual_review`、`adapter_contract_errors[]` 和 `unhandled_intents[]`。
|
||||
- type-known `result_type=manual_review` 已在原业务任务卡展示复核状态和缺失字段,并调用 `POST /api/reservation/tasks/{taskId}/manual-review-resolutions` 解阻,不再创建第二张人工复核任务卡。
|
||||
- 第一版解阻 UI 已支持 `/extracted_fields/pms_room_type_code` 和 `/extracted_fields/room_items/0/pms_room_type_code` 两类 pointer,提交成功后刷新任务详情和审计流水。
|
||||
- 前端只读规则已收口:S10/S99、适配契约异常、未处理意图、前置任务阻塞和同卡人工复核待解阻状态都不显示保存草稿、确认任务、人工转换或 OPERA 执行 / 重试入口。
|
||||
- 前端 fixture 已补 V3 最小结构样例:`source_message` 完整对象、`message_events[]` 的 `event_role`、`current_or_history`、`source_event_index`、四字段 `case_keys`、`relevant_message_excerpt`、`attachments`、`file_references`、`context_used`、`extracted_fields`、`manual_review`。
|
||||
|
||||
仍建议后端确认:
|
||||
|
||||
- `GET /api/reservation/tasks` 是否会在结构化 S10/S99 行中稳定返回 `task_type=SOURCE_MESSAGE_ONLY`,或允许返回 `MESSAGE_NOTIFICATION` 并只依赖 `result_type/route_code/system_process_category`;前端当前两种都兼容。
|
||||
- `adapter_contract_error` / `unhandled_current_intent` 如果未来也作为独立列表行返回,请保持 `source_message_id` 可用,便于前端继续提供邮件会话入口。
|
||||
- 同卡人工复核解阻成功后是否一定返回 `opera_operations[]`。当前文档写“两条 OPERA 模拟操作”,前端实现按实际返回刷新,不假设固定数量。
|
||||
|
||||
前端注意:不要把访问口令写入前端仓库、浏览器环境变量或构建产物;该接口只能由本地联调人员手动调用或由受控测试脚本调用。
|
||||
|
||||
## 7. 邮件会话详情接口
|
||||
@@ -518,14 +535,14 @@ Content-Type: application/json
|
||||
"reason": "确认 PMS 房型代码后解阻。",
|
||||
"field_overrides": [
|
||||
{
|
||||
"field_pointer": "/extracted_fields/pms_room_type_code",
|
||||
"field_pointer": "/extracted_fields/room_items/0/pms_room_type_code",
|
||||
"value": "RM3"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
0711 P0 房型复核说明:前端可以提交 `/extracted_fields/room_items/{index}/pms_room_type_code`,后端第一版会兼容映射到当前矩阵字段 `extracted_fields.pms_room_type_code`。响应里的 `review_resolution.field_overrides[].field_pointer` 保留前端原始 pointer,`field_path` 和 `confirmed_payload.field_values` 使用当前后端矩阵字段。
|
||||
0711 P0 房型复核说明:前端应优先提交 `/extracted_fields/room_items/0/pms_room_type_code` 或任务详情 `fields[].field_path=extracted_fields.room_items.0.pms_room_type_code`。后端仍兼容旧扁平 key / pointer,但会归一化到 P0 主路径。响应里的 `review_resolution.field_overrides[].field_pointer` 保留前端原始 pointer,`field_path` 使用 P0 主路径,`legacy_field_path` 仅用于旧页面过渡。
|
||||
|
||||
返回示例:
|
||||
|
||||
@@ -541,16 +558,29 @@ Content-Type: application/json
|
||||
"resolved_at": "2026-07-11T00:00:00Z",
|
||||
"field_overrides": [
|
||||
{
|
||||
"field_pointer": "/extracted_fields/pms_room_type_code",
|
||||
"field_path": "extracted_fields.pms_room_type_code",
|
||||
"field_pointer": "/extracted_fields/room_items/0/pms_room_type_code",
|
||||
"field_path": "extracted_fields.room_items.0.pms_room_type_code",
|
||||
"legacy_field_path": "extracted_fields.pms_room_type_code",
|
||||
"value": "RM3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"confirmed_payload": {
|
||||
"schema_version": "field_path-v1",
|
||||
"schema_version": "field_matrix-p0-room-items-v1",
|
||||
"field_values": {
|
||||
"extracted_fields.room_items.0.pms_room_type_code": "RM3"
|
||||
},
|
||||
"legacy_field_values": {
|
||||
"extracted_fields.pms_room_type_code": "RM3"
|
||||
},
|
||||
"effective_payload": {
|
||||
"extracted_fields": {
|
||||
"room_items": [
|
||||
{
|
||||
"pms_room_type_code": "RM3"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"opera_operations": [
|
||||
@@ -568,7 +598,7 @@ Content-Type: application/json
|
||||
- type-known manual review 不能调用通用 `POST /api/reservation/tasks/{taskId}/confirm`;必须调用本节解阻接口,否则后端返回 `TASK_REVIEW_RESOLUTION_REQUIRED`。
|
||||
- `review_resolution.resolved_at` 是 UTC `Z` 时间点。
|
||||
- 解阻成功后刷新任务详情,按钮状态以新的 `task_status=READY` 和 `availability` 为准。
|
||||
- `confirmed_payload.field_values` 仍按矩阵 `field_path` 保存,不是 OPERA 最终参数。
|
||||
- `confirmed_payload.field_values` 按 P0 主 `field_path` 保存;`legacy_field_values` 是旧扁平兼容回显;`effective_payload` 是后端第一版嵌套结构,不是 OPERA 最终参数。
|
||||
|
||||
建议返参增量示例:
|
||||
|
||||
@@ -797,3 +827,5 @@ POST /api/reservation/tasks/{taskId}/order-binding
|
||||
- 任务详情 `fields[]` 已由后端直接透出 P0 需要的 3.0 元数据;独立字段白名单接口后置。
|
||||
- 独立 Message Notification 页面继续后置;旧 S000/S999 和新 S10/S99 都先在任务列表和任务详情展示。
|
||||
- 邮件会话全文读取的审计策略由后端内部处理;前端不保存原文读取 key。
|
||||
- `GET /api/reservation/tasks` 结构化 S10/S99 行的 `task_type` 返回值请后端最终确认:前端已兼容 `SOURCE_MESSAGE_ONLY` 和 `MESSAGE_NOTIFICATION`,但文档口径最好稳定一个。
|
||||
- `manual-review-resolutions` 成功响应中的 `opera_operations[]` 数量请后端最终确认;前端不写死两条,只按返回内容刷新展示。
|
||||
|
||||
Reference in New Issue
Block a user