完成 M002 V3 同卡复核解阻
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
| 联调 | 演示数据 seed 接口 `POST /api/system/reservation/demo-data` | 本地 / test 前端页面看效果 | 已完成;仅 dev/test 受控使用 |
|
||||
| 联调 | Debug EML 上传接口 `POST /api/system/debug/eml-superagent-runs` | Debug 页面上传 `.eml` 看 SuperAgent 结果 | 已完成第一版;仅 dev/test 受控使用 |
|
||||
| P1 | S10/S99 源邮件只读通知卡与旧 S000/S999 兼容 | 任务列表、任务详情来源邮件查看 | 已完成第一版:旧 S000/S999 兼容,新结构化 S10/S99 可入站并在任务列表 / 详情只读展示 |
|
||||
| P1 | type-known manual review 同卡复核解阻 | 任务详情复核 | 已完成第一版:原业务任务卡复核、字段修正、订单归属确认、READY 流转 |
|
||||
| P1 | 任务卡前端字段白名单元数据接口 | 字段白名单调试、版本对齐 | 未完成;若任务详情已透出完整元数据,可后置 |
|
||||
| 后置 | 普通任务切换订单接口 | 任务详情订单归属调整 | 未完成;已确认后置 |
|
||||
|
||||
@@ -35,6 +36,7 @@
|
||||
| `POST /api/reservation/tasks/{taskId}/opera-operations/{operationId}/execute` | 已完成第一版模拟操作 | 可以 | 暂无;真实 OPERA 写入另行确认。 |
|
||||
| `POST /api/reservation/tasks/{taskId}/opera-operations/{operationId}/retry` | 已完成第一版模拟重试 | 可以 | 暂无;真实 OPERA 重试另行确认。 |
|
||||
| `POST /api/reservation/tasks/{taskId}/manual-review-conversions` | 已完成 | 可以 | 暂无。 |
|
||||
| `POST /api/reservation/tasks/{taskId}/manual-review-resolutions` | 已完成第一版 | 可以 | 只用于 type-known manual review;第一版 `confirmed_order_id` 必须等于当前任务订单,不开放普通任务任意切换订单。 |
|
||||
| `GET /api/source-messages` | 已完成安全摘要列表 | 可以 | 不能替代邮件会话全文接口。 |
|
||||
| `GET /api/source-messages/{id}` | 已完成单条安全摘要 | 可以 | 不能替代邮件会话全文接口。 |
|
||||
| `GET /api/source-messages/{id}/original` | 已完成单封原文受控读取 | 谨慎接入 | 只能读单封邮件,不能返回同一 conversation 全量邮件。 |
|
||||
@@ -326,8 +328,8 @@ POST /api/system/reservation/demo-data
|
||||
| 42 路由元数据 | 任务列表筛选、订单任务时间线、任务详情标题、字段展示 | 已完成第一版 | 后端保存并返回 AI 原始 `result_type/ai_task_type/task_subtype`、`route_code` 和系统处理分类;前端不要只依赖系统主任务类型判断卡片。 |
|
||||
| `unhandled_current_intents[]` 展示块 | 任务详情 | 已完成第一版 | 后端保存并在任务详情 `unhandled_intents[]` 返回未覆盖业务意图,只用于展示和源邮件查看,不自动建业务任务卡。 |
|
||||
| `adapter_contract_error` | 任务详情、错误提示 | 已完成第一版 | 命中 P1/P2 未闭合或路由冲突时,任务详情 `adapter_contract_errors[]` 返回稳定错误 code 和原始片段,不转成 Fallback。 |
|
||||
| type-known manual review 同卡解阻 | 任务详情复核 | 后置 | `manual_review` 不再全部等同 Fallback;已知业务卡型应返回原业务卡信息、`review_status`、`review_resolution` 和可编辑 pointer 字段。 |
|
||||
| 复核场景订单归属确认 | 任务详情复核 | 后置 | 后端提供复核确认时的订单归属确认 / 选择能力;这不等于普通任务任意切换订单。 |
|
||||
| type-known manual review 同卡解阻 | 任务详情复核 | 已完成第一版 | `manual_review` 不再全部等同 Fallback;已知业务卡型返回原业务卡信息、`review_status`、`review_resolution` 和可编辑 pointer 字段,解阻后进入 `READY`。 |
|
||||
| 复核场景订单归属确认 | 任务详情复核 | 已完成第一版 | 后端提供复核确认时的订单归属确认;当前第一版只能确认当前任务所属订单,后续如要选择其他订单需另行细化。 |
|
||||
|
||||
前端注意:不要把访问口令写入前端仓库、浏览器环境变量或构建产物;该接口只能由本地联调人员手动调用或由受控测试脚本调用。
|
||||
|
||||
@@ -445,6 +447,7 @@ GET /api/reservation/tasks/{taskId}
|
||||
| `POST /api/reservation/tasks/{taskId}/opera-operations/{operationId}/execute` | 执行 OPERA 模拟操作。 | 已完成第一版模拟。 |
|
||||
| `POST /api/reservation/tasks/{taskId}/opera-operations/{operationId}/retry` | 重试失败的 OPERA 模拟操作。 | 已完成第一版模拟。 |
|
||||
| `POST /api/reservation/tasks/{taskId}/manual-review-conversions` | 将 Fallback / manual_review 转换为具体任务类型。 | 已完成。 |
|
||||
| `POST /api/reservation/tasks/{taskId}/manual-review-resolutions` | type-known manual review 在原业务任务卡上提交字段修正和订单归属确认。 | 已完成第一版。 |
|
||||
|
||||
已完成的 `fields[]` 字段:
|
||||
|
||||
@@ -487,6 +490,82 @@ GET /api/reservation/tasks/{taskId}
|
||||
| `fields[]` | `task_subtype` | 3.0 字段表中的任务 subtype / 业务动作。 |
|
||||
| `fields[]` | `default_value_source` | 3.0 字段表中的默认值 / 回显来源。 |
|
||||
|
||||
### 8.1 Type-known manual review 同卡复核解阻
|
||||
|
||||
当前状态:后端已完成第一版。`result_type=manual_review` 且 `system_task_type` 不是 `MANUAL_REVIEW` 时,前端在原业务任务卡上展示复核模式,不进入 Fallback 转换页面。
|
||||
|
||||
任务详情增量字段:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `review_status` | `PENDING` 表示等待复核,`RESOLVED` 表示已解阻。 |
|
||||
| `review_resolution` | 已解阻后的复核结果;未解阻时为 `null`。 |
|
||||
| `manual_review` | SuperAgent 原始复核说明、缺失字段、阻塞点、建议人工动作;只读展示。 |
|
||||
|
||||
解阻接口:
|
||||
|
||||
```text
|
||||
POST /api/reservation/tasks/{taskId}/manual-review-resolutions
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"confirmed_order_id": "20001",
|
||||
"reason": "确认 PMS 房型代码后解阻。",
|
||||
"field_overrides": [
|
||||
{
|
||||
"field_pointer": "/extracted_fields/pms_room_type_code",
|
||||
"value": "RM3"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
返回示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"task_id": "10001",
|
||||
"order_id": "20001",
|
||||
"task_status": "READY",
|
||||
"review_status": "RESOLVED",
|
||||
"review_resolution": {
|
||||
"schema_version": "manual-review-resolution-v1",
|
||||
"confirmed_order_id": "20001",
|
||||
"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",
|
||||
"value": "RM3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"confirmed_payload": {
|
||||
"schema_version": "field_path-v1",
|
||||
"field_values": {
|
||||
"extracted_fields.pms_room_type_code": "RM3"
|
||||
}
|
||||
},
|
||||
"opera_operations": [
|
||||
{"operation_code": "SIMULATE_PRECHECK"},
|
||||
{"operation_code": "SIMULATE_WRITE"}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
前端注意:
|
||||
|
||||
- `field_pointer` 必须是 RFC 6901 JSON Pointer,并且只能指向任务详情 `fields[]` 中当前可编辑字段;只读字段或未知字段会返回 `TASK_REVIEW_POINTER_INVALID`。
|
||||
- `confirmed_order_id` 第一版必须等于当前任务 `order_id`;普通任务任意切换订单继续后置。
|
||||
- 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 最终参数。
|
||||
|
||||
建议返参增量示例:
|
||||
|
||||
```json
|
||||
|
||||
Reference in New Issue
Block a user