收紧 V4 复核解阻边界
This commit is contained in:
@@ -173,9 +173,10 @@ V4 新数据不再提供后端草稿保存。前端可以在页面本地维护
|
||||
- 用户修正写入 `review_resolution_json` 和 `confirmed_payload_json`。
|
||||
- CP7 第一版只校验 JSON Pointer 是否指向当前卡允许编辑字段;目录值必须来自信息系统受控目录的校验放到受控目录 checkpoint。
|
||||
- 通过校验后卡片直接进入 `CONFIRMED`,不再进入 V3 `READY` 状态。
|
||||
- `field_overrides[].field_pointer` 必须是当前卡 `display_payload_json` 中允许编辑的 RFC 6901 JSON Pointer;第一版只允许 `basic_information.*` 或 `business_fields.*` 下已经存在的叶子标量字段,不允许替换对象或数组。
|
||||
- `field_overrides[].field_pointer` 必须是当前卡 `display_payload_json` 中允许编辑的 RFC 6901 JSON Pointer;如果当前卡展示 payload 中存在显式 `missing_fields[]`,只允许提交该清单内的 pointer;如果没有显式清单,第一版只允许 `basic_information.*` 或 `business_fields.*` 下已经存在且值为 `null` / 空字符串的未解决叶子字段,不允许替换对象或数组。
|
||||
- 来源消息、路由、订单定位关系、诊断、缺失字段清单、`manual_review`、raw evidence 等只读字段不得提交。
|
||||
- 如果订单任务归属未解决,复核请求必须提交 `confirmed_order_id`;后端按当前订单任务酒店校验该订单存在、非逻辑删除且不是系统隐藏订单。
|
||||
- 如果订单任务已经有 `order_id` 且 `target_resolution_status=RESOLVED`,复核请求不能提交不同的 `confirmed_order_id`,否则返回 `V4_ORDER_REBIND_NOT_ALLOWED`;普通任务任意切换订单继续后置。
|
||||
- `availability.reviewable=true` 且 `card_status=REVIEW_REQUIRED` 时,前端可以展示复核提交入口;普通确认接口仍拒绝 `REVIEW_REQUIRED` 卡。
|
||||
|
||||
### 7.4 Basic Information 目录规则
|
||||
@@ -226,7 +227,7 @@ V4 CP2 只设计复核场景下的订单归属确认,不开放普通任务任
|
||||
- 订单归属确认必须写业务审计。
|
||||
- 若确认到其他订单,原临时订单可在无其它任务引用时逻辑删除。
|
||||
- 已确认锁定卡片不能通过该接口二次迁移订单。
|
||||
- CP7 第一版只支持在复核解阻请求中提交 `confirmed_order_id` 完成一次性归属确认;不提供普通任务任意切换订单接口。
|
||||
- CP7 第一版只支持在复核解阻请求中提交 `confirmed_order_id` 完成未解决归属的一次性确认;如果订单任务已解析到某个订单且状态为 `RESOLVED`,只能确认同一订单,不能借复核接口切换到其它订单。
|
||||
- 如果确认到的订单下存在更早未完成 V4 订单任务,后端拒绝当前复核提交,避免绕过同订单阻塞规则。
|
||||
|
||||
## 9. 同订单阻塞规则
|
||||
@@ -620,7 +621,8 @@ POST /api/reservation/order-tasks/{orderTaskId}/cards/{cardId}/review-resolution
|
||||
- 请求 JSON 必须携带卡片 `version`;可选 `reason` 写入业务审计摘要;`confirmed_order_id` 表示复核场景确认后的本地订单 ID。
|
||||
- 如果订单任务当前 `order_id=null` 或 `target_resolution_status!=RESOLVED`,`confirmed_order_id` 必填;后端会按订单任务所属酒店查询并校验真实可见订单。
|
||||
- `field_overrides[]` 每项包含 `field_pointer` 和 `value`;`field_pointer` 只允许指向当前卡展示 payload 中的可编辑业务字段,不允许指向 `source_message`、`route_code`、`card_type`、`target_order`、`order_ref`、`missing_fields`、`manual_review`、`raw_evidence`、`validation_errors` 等只读诊断字段。
|
||||
- 第一版允许的写入容器是 `basic_information` 和 `business_fields`;只能改已存在的叶子标量或 `null` 字段,不能替换整个对象、数组或新增未知字段。
|
||||
- 第一版允许的写入容器是 `basic_information` 和 `business_fields`;如果展示 payload 中存在显式 `missing_fields[]`,只允许提交清单中的 pointer;否则只能改已存在且值为 `null` / 空字符串的叶子字段,不能修改已有有效值、替换整个对象 / 数组或新增未知字段。
|
||||
- 如果订单任务已经有 `order_id` 且 `target_resolution_status=RESOLVED`,`confirmed_order_id` 只能为空或等于当前订单 ID;提交其它订单 ID 会返回 `V4_ORDER_REBIND_NOT_ALLOWED`。
|
||||
- Basic Information 必须先确认;如果 Basic Information 自身是 `REVIEW_REQUIRED`,允许通过本接口先复核并确认 Basic。
|
||||
- 解阻过程不改写 `ai_payload_json`;用户修正写入 `review_resolution_json`,最终确认快照写入 `confirmed_payload_json`。
|
||||
- 校验通过后直接 `CONFIRMED`。
|
||||
|
||||
Reference in New Issue
Block a user