修复M002 V3字段矩阵迁移问题
This commit is contained in:
@@ -168,17 +168,19 @@ POST /api/auth/logout
|
||||
```
|
||||
|
||||
- `field_pointer` 必须是 RFC 6901 JSON Pointer,并且只能指向当前任务卡可编辑字段;后端会映射到矩阵 `field_path`。非法或只读字段会返回 `TASK_REVIEW_POINTER_INVALID`。
|
||||
- 复核解阻也可以提交 `field_path`,支持 P0 主路径和旧扁平路径;如果同时提交 `field_pointer` 和 `field_path`,两者必须指向同一个字段。前端新页面优先用任务详情 `fields[].field_pointer`,无法方便处理 JSON Pointer 时可用 `fields[].field_path`。
|
||||
- 0711 P0 的房型字段主路径已迁移到 `room_items[0]`。任务详情 `fields[]` 中,房量、房型原文、PMS 房型代码分别返回:
|
||||
- `field_path=extracted_fields.room_items.0.room_quantity`,`field_pointer=/extracted_fields/room_items/0/room_quantity`
|
||||
- `field_path=extracted_fields.room_items.0.room_type_raw`,`field_pointer=/extracted_fields/room_items/0/room_type_raw`
|
||||
- `field_path=extracted_fields.room_items.0.pms_room_type_code`,`field_pointer=/extracted_fields/room_items/0/pms_room_type_code`
|
||||
- `legacy_field_path` 仅用于前端过渡显示旧扁平字段;新页面保存草稿、最终确认和复核解阻应优先提交 `field_pointer` 或 P0 主 `field_path`。
|
||||
- 后端仍兼容旧提交 key:`extracted_fields.room_quantity`、`extracted_fields.room_type`、`extracted_fields.pms_room_type_code`,但响应会归一化到 P0 主 `field_path`。`confirmed_payload.legacy_field_values` / `draft_payload.legacy_field_values` 只供旧前端回显,不作为新逻辑判断依据。
|
||||
- 后端仍兼容旧提交 key:`extracted_fields.room_quantity`、`extracted_fields.room_type`、`extracted_fields.pms_room_type_code`;同卡复核也兼容旧 `field_path` / 旧 pointer。响应会归一化到 P0 主 `field_path`;当只提交 `field_path` 时,响应里的 `field_pointer` 使用 P0 主 JSON Pointer。`confirmed_payload.legacy_field_values` / `draft_payload.legacy_field_values` 只供旧前端回显,不作为新逻辑判断依据。
|
||||
- 当前第一版只支持 `room_items[0]`;`/extracted_fields/room_items/1/...` 或更大下标不会自动落到 0。
|
||||
- 同一次请求不能重复提交同一字段;重复 `field_pointer` 或重复映射到同一 `field_path` 会返回 `TASK_REVIEW_POINTER_DUPLICATE`。
|
||||
- `confirmed_order_id` 第一版必须等于当前任务的 `order_id`;如果前端需要选择其他订单,仍属于后续“复核场景订单归属选择”细化,不要复用普通任务切换订单能力。
|
||||
- 解阻成功后返回 `task_status=READY`、`review_status=RESOLVED`、`review_resolution.field_overrides[]`、`confirmed_payload` 和两条 `opera_operations[]`。前端应刷新任务详情并显示 OPERA 模拟操作入口。
|
||||
- 解阻过程不改写 `ai_payload_json`;用户修正值保存在 `review_resolution`、`confirmed_payload.field_values` 和 `confirmed_payload.effective_payload` 中。`effective_payload` 是后端第一版嵌套结构,后续真实 OPERA 参数仍会在 OPERA 层重新组装。
|
||||
- 历史 `field_contract_version=code-v1` 的任务卡如果已经有 `draft_payload_json` 或 `confirmed_payload_json`,后端迁移不会强行改成 `20260711-p0`。前端读取历史任务时,如果看到旧版本,应优先使用 `legacy_field_path` / `legacy_field_values` 做过渡回显;新保存或新确认后再以 P0 主路径为准。
|
||||
- `review_resolution.resolved_at` 是 UTC `Z` 时间点。
|
||||
- type-known manual review 不允许调用通用 `POST /api/reservation/tasks/{taskId}/confirm`;前端必须使用本节解阻接口,否则后端返回 `TASK_REVIEW_RESOLUTION_REQUIRED`。
|
||||
|
||||
|
||||
@@ -339,7 +339,7 @@ POST /api/system/reservation/demo-data
|
||||
- 任务列表已按 `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,提交成功后刷新任务详情和审计流水。
|
||||
- 第一版解阻 UI 可提交 `/extracted_fields/pms_room_type_code` 和 `/extracted_fields/room_items/0/pms_room_type_code` 两类 pointer;后端也支持提交 P0 主 `field_path` 或旧扁平 `field_path`,提交成功后刷新任务详情和审计流水。
|
||||
- 前端只读规则已收口: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`。
|
||||
|
||||
@@ -536,13 +536,14 @@ Content-Type: application/json
|
||||
"field_overrides": [
|
||||
{
|
||||
"field_pointer": "/extracted_fields/room_items/0/pms_room_type_code",
|
||||
"field_path": "extracted_fields.room_items.0.pms_room_type_code",
|
||||
"value": "RM3"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
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` 仅用于旧页面过渡。
|
||||
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,也支持只提交 `field_path`。如果同时提交 `field_pointer` 和 `field_path`,两者必须指向同一字段。响应里的 `review_resolution.field_overrides[].field_path` 使用 P0 主路径;前端只提交 `field_path` 时,后端会返回 P0 主 `field_pointer`;前端提交旧 pointer 时,`field_pointer` 保留前端原始值,`legacy_field_path` 仅用于旧页面过渡。
|
||||
|
||||
返回示例:
|
||||
|
||||
@@ -592,7 +593,7 @@ Content-Type: application/json
|
||||
|
||||
前端注意:
|
||||
|
||||
- `field_pointer` 必须是 RFC 6901 JSON Pointer,并且只能指向任务详情 `fields[]` 中当前可编辑字段;只读字段或未知字段会返回 `TASK_REVIEW_POINTER_INVALID`。
|
||||
- `field_overrides[]` 必须提供 `field_pointer` 或 `field_path`。`field_pointer` 必须是 RFC 6901 JSON Pointer;`field_path` 可以是 P0 主路径或旧扁平路径。两者都只能指向任务详情 `fields[]` 中当前可编辑字段;只读字段、未知字段或两者指向不一致会返回 `TASK_REVIEW_POINTER_INVALID`。
|
||||
- 同一次请求不能重复提交同一字段;重复 `field_pointer` 或重复映射到同一 `field_path` 会返回 `TASK_REVIEW_POINTER_DUPLICATE`。
|
||||
- `confirmed_order_id` 第一版必须等于当前任务 `order_id`;普通任务任意切换订单继续后置。
|
||||
- type-known manual review 不能调用通用 `POST /api/reservation/tasks/{taskId}/confirm`;必须调用本节解阻接口,否则后端返回 `TASK_REVIEW_RESOLUTION_REQUIRED`。
|
||||
|
||||
Reference in New Issue
Block a user