完成 M002 V3 同卡复核解阻
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
| --- | --- |
|
||||
| 文档版本 | 0.1 |
|
||||
| 日期 | 2026-07-11 |
|
||||
| 状态 | 0711 P0 基线确认版;后端已完成 M002 V3 CP1-CP4 入站、路由持久化和列表 / 详情展示基线 |
|
||||
| 状态 | 0711 P0 基线确认版;后端已完成 M002 V3 CP1-CP5 入站、路由持久化、列表 / 详情展示和同卡复核解阻第一版 |
|
||||
| 适用范围 | SourceMessage 之后的 SuperAgent 输出适配、任务路由、只读通知卡、人工复核同卡解阻、前后端协作边界 |
|
||||
| 主要读者 | 产品、后端、前端、测试、SuperAgent 对接方、后续协作 agent |
|
||||
|
||||
@@ -252,7 +252,7 @@ Agent payload 不可变。本系统在同一张卡上维护复核状态:
|
||||
|
||||
```json
|
||||
{
|
||||
"review_status": "pending",
|
||||
"review_status": "PENDING",
|
||||
"review_resolution": null
|
||||
}
|
||||
```
|
||||
@@ -261,14 +261,16 @@ Agent payload 不可变。本系统在同一张卡上维护复核状态:
|
||||
|
||||
```json
|
||||
{
|
||||
"review_status": "resolved",
|
||||
"review_status": "RESOLVED",
|
||||
"review_resolution": {
|
||||
"field_overrides": [
|
||||
{
|
||||
"field_pointer": "/extracted_fields/room_items/0/pms_room_type_code",
|
||||
"field_path": "extracted_fields.room_items[].pms_room_type_code",
|
||||
"value": "SU1"
|
||||
}
|
||||
],
|
||||
"confirmed_order_id": "10001",
|
||||
"resolved_by": "<user_id>",
|
||||
"resolved_at": "2026-07-11T00:00:00Z"
|
||||
}
|
||||
@@ -280,10 +282,44 @@ Agent payload 不可变。本系统在同一张卡上维护复核状态:
|
||||
- 不改写 `ai_payload_json`。
|
||||
- 不创建第二张 linked normal task。
|
||||
- `missing_fields[]` 必须是 RFC 6901 JSON Pointer。
|
||||
- Pointer 必须能映射到该业务卡已知可编辑字段,否则为 `adapter_contract_error`。
|
||||
- 订单归属确认可作为复核解阻的一部分保存,但不得打开普通任务随意切换订单能力。
|
||||
- 入站阶段 `missing_fields[]` 不完整或不是 RFC 6901 Pointer 时,按 `adapter_contract_error` fail closed,不创建业务任务。
|
||||
- 解阻接口提交的 Pointer 必须能映射到该业务卡当前可展示且可编辑字段,否则返回 `TASK_REVIEW_POINTER_INVALID`。
|
||||
- 订单归属确认可作为复核解阻的一部分保存;当前第一版只允许确认当前任务所属订单,不开放普通任务随意切换订单能力。
|
||||
- 全部缺失字段、订单归属、目录值和依赖校验通过后,才进入 Preflight / READY。
|
||||
|
||||
### 9.3 后端第一版接口
|
||||
|
||||
```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"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
响应要点:
|
||||
|
||||
- `task_status=READY`。
|
||||
- `review_status=RESOLVED`。
|
||||
- `review_resolution.field_overrides[]` 同时返回 `field_pointer`、矩阵 `field_path` 和人工值。
|
||||
- `review_resolution.resolved_at` 使用带 `Z` 的 UTC 时间点。
|
||||
- `confirmed_payload.field_values` 使用矩阵 `field_path` 保存,不按 `write_path` 生成 OPERA 参数。
|
||||
- 自动生成第一版固定两条 OPERA 模拟操作。
|
||||
- 写入 `MANUAL_REVIEW_RESOLVE` 审计。
|
||||
- type-known manual review 不允许走通用 `POST /api/reservation/tasks/{taskId}/confirm`,否则会返回 `TASK_REVIEW_RESOLUTION_REQUIRED`。
|
||||
|
||||
## 10. P1/P2 未闭合范围处理
|
||||
|
||||
0711 导入包已经明确 P1/P2 未闭合。后端、前端、Adapter 都不得自行发明规则。
|
||||
@@ -326,7 +362,7 @@ V3 建议拆成以下 checkpoint,避免一次性重构过大:
|
||||
| M002-V3-CP2 | 入站解析兼容 | 已完成:正式回调支持结构化 S10/S99 和 V3 业务根,保留旧 S000/S999 兼容 |
|
||||
| M002-V3-CP3 | 路由持久化 | 已完成第一版:已保存 AI 原始三元组、route_code、system_process_category、unhandled_current_intents 和 adapter_contract_error |
|
||||
| M002-V3-CP4 | 列表 / 详情展示 | 已完成第一版:任务列表、订单任务时间线和任务详情透出 V3 路由字段;任务详情支持 S10/S99 入口通知结构、unhandled intent 展示块和 adapter contract error 展示块 |
|
||||
| M002-V3-CP5 | 同卡复核解阻 | 支持 review_status、field_overrides、复核场景订单归属确认和 READY 流转 |
|
||||
| M002-V3-CP5 | 同卡复核解阻 | 已完成第一版:支持 review_status、review_resolution.field_overrides[]、复核场景订单归属确认、JSON Pointer 校验和 READY 流转 |
|
||||
| M002-V3-CP6 | P0 fixtures 回归 | 引入 0711 P0 fixtures / validator 作为后端适配测试参考,补充项目级测试 |
|
||||
|
||||
## 13. 明确不做
|
||||
@@ -343,7 +379,7 @@ V3 P0 不做以下事项:
|
||||
|
||||
## 14. 当前代码现状提醒
|
||||
|
||||
截至 M002 V3 CP4 落地后,当前后端已经实现:
|
||||
截至 M002 V3 CP5 落地后,当前后端已经实现:
|
||||
|
||||
- `S000/S999` 文本结果兼容处理。
|
||||
- 结构化 `S10/S99` 入站处理,复用 `SOURCE_MESSAGE_ONLY` 只读特殊任务。
|
||||
@@ -354,13 +390,12 @@ V3 P0 不做以下事项:
|
||||
- 任务列表、订单任务时间线和任务详情顶层透出 `result_type`、`ai_task_type`、`task_subtype`、`route_code`、`system_process_category`。
|
||||
- `SOURCE_MESSAGE_ONLY` 任务详情透出 `source_message_only_result.result_type`、`route_code`、`agent_assessment`、`notification`、`manual_review` 和 `raw_answer`。
|
||||
- 业务任务详情按同一 AI 批次透出 `adapter_contract_errors[]` 与 `unhandled_intents[]` 只读展示块。
|
||||
- type-known manual review 创建在原业务任务卡上,任务详情返回 `review_status`、`review_resolution` 和 `manual_review`。
|
||||
- `POST /api/reservation/tasks/{taskId}/manual-review-resolutions` 支持字段修正、当前订单归属确认、JSON Pointer 到可编辑字段校验、READY 流转、confirmed payload 写入、两条 OPERA 模拟操作创建和审计记录。
|
||||
- 订单 / 任务列表、任务详情、草稿保存、最终确认、OPERA 模拟骨架和审计列表。
|
||||
- SuperAgent 查询上下文接口 1、2,以及邮件会话相关查询。
|
||||
|
||||
仍需后续 checkpoint 实现:
|
||||
|
||||
- type-known review 同卡解阻、`review_status` 和 `review_resolution.field_overrides[]`。
|
||||
- 复核场景订单归属确认。
|
||||
- `manual_review.missing_fields[]` 到任务卡可编辑字段白名单的完整映射校验。
|
||||
- `source_message.source_message_id` 缺失时按 V3 typed `infrastructure_input_error` 结构响应。
|
||||
- 真实 OPERA / OHIP、普通任务任意切换订单、P0 fixtures / validator 全量回归。
|
||||
|
||||
Reference in New Issue
Block a user