适配 M002 V3 前端任务流与同卡复核

This commit is contained in:
andy
2026-07-12 00:33:15 +08:00
parent fd027f124c
commit 155db63028
17 changed files with 1593 additions and 85 deletions

View File

@@ -266,7 +266,8 @@ Agent payload 不可变。本系统在同一张卡上维护复核状态:
"field_overrides": [
{
"field_pointer": "/extracted_fields/room_items/0/pms_room_type_code",
"field_path": "extracted_fields.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": "SU1"
}
],
@@ -288,7 +289,15 @@ Agent payload 不可变。本系统在同一张卡上维护复核状态:
- 订单归属确认可作为复核解阻的一部分保存;当前第一版只允许确认当前任务所属订单,不开放普通任务随意切换订单能力。
- 全部缺失字段、订单归属、目录值和依赖校验通过后,才进入 Preflight / READY。
当前 CP6 兼容说明0711 P0 fixtures 中 `room_items[]`经是新结构,但后端第一版字段矩阵仍使用 `extracted_fields.room_type``extracted_fields.room_quantity``extracted_fields.pms_room_type_code` 等扁平字段。入站 payload 保留原始 `room_items[]`;后端在字段读取、展示、校验和确认 payload 组装时,从第一条 `room_items[]` 做扁平字段别名解析。解阻接口第一版仅接受 `/extracted_fields/room_items/0/pms_room_type_code` 兼容到当前扁平矩阵字段,其他数组下标不会被自动 alias响应中的矩阵 `field_path` 仍返回当前后端字段 `extracted_fields.pms_room_type_code`。后续字段矩阵整体迁移时再取消这层兼容。
当前字段矩阵迁移第一版说明0711 P0 fixtures 中 `room_items[]`作为房型字段主结构。后端已将 New Booking 卡的房量、房型原文、PMS 房型代码主路径迁移为:
| 语义 | 主 `field_path` | 主 `field_pointer` | 旧兼容 key |
| --- | --- | --- | --- |
| 房量 | `extracted_fields.room_items.0.room_quantity` | `/extracted_fields/room_items/0/room_quantity` | `extracted_fields.room_quantity` |
| 房型原文 | `extracted_fields.room_items.0.room_type_raw` | `/extracted_fields/room_items/0/room_type_raw` | `extracted_fields.room_type` |
| PMS 房型代码 | `extracted_fields.room_items.0.pms_room_type_code` | `/extracted_fields/room_items/0/pms_room_type_code` | `extracted_fields.pms_room_type_code` |
入站 `ai_payload_json` 保留 SuperAgent 原始结构,不回写用户修正。任务详情 `fields[]``field_path``field_pointer` 以 P0 主结构为准,`legacy_field_path` 仅用于前端过渡展示。草稿保存、最终确认和同卡复核解阻可继续提交旧扁平 key但后端会归一化到 P0 主 `field_path`;响应中的 `field_values` 使用主路径,`legacy_field_values` 提供旧扁平回显兼容,`effective_payload` 提供嵌套结构供后续 OPERA 参数组装使用。当前第一版只支持 `room_items[0]`,非 0 下标或不存在路径按 `TASK_REVIEW_POINTER_INVALID` / 字段校验错误处理,不自动映射。
### 9.3 后端第一版接口
@@ -305,7 +314,7 @@ 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"
}
]
@@ -316,9 +325,9 @@ Content-Type: application/json
- `task_status=READY`
- `review_status=RESOLVED`
- `review_resolution.field_overrides[]` 同时返回 `field_pointer`、矩阵 `field_path` 和人工值。
- `review_resolution.field_overrides[]` 同时返回 `field_pointer`、矩阵 `field_path``legacy_field_path` 和人工值。
- `review_resolution.resolved_at` 使用带 `Z` 的 UTC 时间点。
- `confirmed_payload.field_values` 使用矩阵 `field_path` 保存,不按 `write_path` 生成 OPERA 参数。
- `confirmed_payload.field_values` 使用 P0 主 `field_path` 保存,`legacy_field_values` 仅用于旧扁平字段过渡回显;`effective_payload` 是嵌套结构,不等同真实 OPERA 参数。
- 自动生成第一版固定两条 OPERA 模拟操作。
- 写入 `MANUAL_REVIEW_RESOLVE` 审计。
- type-known manual review 不允许走通用 `POST /api/reservation/tasks/{taskId}/confirm`,否则会返回 `TASK_REVIEW_RESOLUTION_REQUIRED`