358 lines
20 KiB
Markdown
358 lines
20 KiB
Markdown
# 前端字段控件修改说明
|
||
|
||
## 给信息系统 / Adapter / Frontend Codex 的实施任务
|
||
|
||
日期:2026-07-12
|
||
适用范围:任务卡展示、人工复核编辑、字段校验和同卡解阻
|
||
不适用范围:Prompt、Skill、业务 references、MCP Server、Gateway、公开 JSON 业务规则重设计
|
||
|
||
---
|
||
|
||
## 0. 先读这些文件
|
||
|
||
请先从当前工作区根目录读取以下文件,再开始修改:
|
||
|
||
1. `prompt_skill_architecture_optimization_2026-07-12/README.md`
|
||
2. `prompt_skill_architecture_optimization_2026-07-12/01_PLAN/compatibility_invariants.md`
|
||
3. `prompt_skill_architecture_optimization_2026-07-12/03_VALIDATION/draft_validation_2026-07-12.md`
|
||
4. `outputs/黄哥codex读 2/README_先读_交给Codex.md`
|
||
5. `outputs/黄哥codex读 2/04_Adapter_Frontend_保持P0.1_40路由/任务卡前端字段变更与路由说明_3.0_to_current.md`
|
||
6. `outputs/黄哥codex读 2/04_Adapter_Frontend_保持P0.1_40路由/任务卡前端字段变更说明_3.0_to_当前版_2026-07-11.xlsx`
|
||
7. `prompt_skill_architecture_optimization_2026-07-12/02_DRAFT/working/skills/booking-desk-event/references/00-output-contract.md`
|
||
8. `prompt_skill_architecture_optimization_2026-07-12/02_DRAFT/working/skills/booking-desk-event/references/90-manual-review.md`
|
||
9. `prompt_skill_architecture_optimization_2026-07-12/02_DRAFT/working/skills/booking-desk-event/references/16-trace-notes.md`
|
||
10. `prompt_skill_architecture_optimization_2026-07-12/02_DRAFT/working/skills/booking-desk-event/references/31-allotment-control-block.md`
|
||
11. `prompt_skill_architecture_optimization_2026-07-12/02_DRAFT/working/skills/booking-desk-event/references/50-room-type-mapping.md`
|
||
12. `prompt_skill_architecture_optimization_2026-07-12/02_DRAFT/working/skills/booking-desk-event/references/51-rate-code.md`
|
||
13. `prompt_skill_architecture_optimization_2026-07-12/02_DRAFT/working/skills/booking-desk-event/references/52-fix-charge.md`
|
||
|
||
旧文件 `任务卡前端展示字段表 3.0(1).xlsx` 只作为历史基线,不得作为当前字段、路由和枚举的唯一来源。
|
||
|
||
如果上述交接文件或实际 Adapter/Frontend 源码不在当前工作区,请停止代码修改并报告缺失路径;不要根据旧 Excel 猜测当前字段。
|
||
|
||
---
|
||
|
||
## 1. 任务目标
|
||
|
||
把任务卡前端从旧版“是否输入 / 是否下拉”字段说明,升级为当前项目可执行的控件注册和人工复核编辑机制:
|
||
|
||
```text
|
||
Agent final result
|
||
→ adapter 按 event 派生任务卡
|
||
→ manual_review.missing_fields[] 指定可编辑字段
|
||
→ 前端展示对应控件
|
||
→ 用户修改
|
||
→ review_resolution.field_overrides[]
|
||
→ 重新校验依赖字段
|
||
→ Preflight
|
||
```
|
||
|
||
核心要求:
|
||
|
||
- 原 Agent payload 不可变。
|
||
- 用户覆盖值不得直接写回 Agent 原始 JSON。
|
||
- 不因为前端编辑而改变 `event_type`、业务 task type、task subtype 或关系语义。
|
||
- 不创建第二张 linked normal task。
|
||
- 只有同一业务卡的 `review_status` 从 `pending` 进入 `resolved` 后,才允许继续 Preflight。
|
||
- 邮件原文、附件、raw evidence、source ID、source event index 和关系索引只读。
|
||
|
||
当前项目的最新 Prompt/Skill 架构增量仍处于草案、未进入 `04_RELEASE` 状态;本任务只修改信息系统展示/编辑层,不把草案直接宣称为生产发布。
|
||
|
||
---
|
||
|
||
## 2. 修改范围
|
||
|
||
### 允许修改
|
||
|
||
- Adapter 的字段注册表 / 字段映射层。
|
||
- 任务卡展示组件和人工复核组件。
|
||
- 控件类型、编辑权限和字段校验逻辑。
|
||
- `review_status` / `review_resolution` 的前端交互。
|
||
- Adapter/Frontend 单元测试、契约测试和验收用例。
|
||
- 当前字段交接 MD/Excel 的控件列和实现说明。
|
||
|
||
### 不得修改
|
||
|
||
- `prompts/`、`skills/`、`booking-desk-event` Skill 业务裁决逻辑。
|
||
- 公开业务 JSON 根结构和既有五字段业务根。
|
||
- S10、S99、`infrastructure_input_error` 结构。
|
||
- 40 条 Adapter 路由数量和既有 task type/subtype 语义。
|
||
- MCP 工具名、MCP payload mapping、一次提交生命周期。
|
||
- `source_event_index` 的含义。
|
||
- Parent Group / Allotment 业务本体。
|
||
- 不得在前端新增 `Note`、`Allotment Maintenance` 或旧 Parent Cancel Booking 当前路由。
|
||
|
||
如果实现过程中发现必须改变上述内容,请先报告为“契约变更”,不要在前端代码中自行绕过。
|
||
|
||
---
|
||
|
||
## 3. 前端控件类型
|
||
|
||
字段注册表至少应支持以下 `control_type`。名称可按现有代码风格调整,但语义必须保持一致:
|
||
|
||
| `control_type` | 用途 |
|
||
|---|---|
|
||
| `readonly` | Agent 结果、raw evidence、路由、关系和审计字段 |
|
||
| `text` | Group Code、Confirmation No.、备注、旧/新 Group Code |
|
||
| `textarea` | 允许覆盖的业务备注;必须保留原始证据 |
|
||
| `number` | 房量、人数、PAX、结算价、附加费金额 |
|
||
| `date` | 入住日、离店日、服务日期、取消生效日期 |
|
||
| `lookup` | 可输入并检索当前系统目标对象的组合框 |
|
||
| `select` | 固定枚举或目录选择 |
|
||
| `multiselect` | 多部门、多标签、多项业务分类 |
|
||
| `structured_table` | `before_after[]`、`room_items[]`、`fix_charge_items[]`、`trace_items[]` |
|
||
| `workflow_state` | `review_status`、Resolve/重新校验等动作 |
|
||
|
||
字段注册表还应增加:
|
||
|
||
| 配置项 | 说明 |
|
||
|---|---|
|
||
| `edit_scope` | `never`、`manual_review_only`、`workflow_only`、`system_only` |
|
||
| `options_source` | 固定契约枚举、当前 PMS 目录、Rate 配置中心、无、待冻结 |
|
||
| `write_target` | `review_resolution.field_overrides`、系统状态、无 |
|
||
| `validation_rule` | 格式、必填、目录、依赖字段和 Preflight 前置校验 |
|
||
| `raw_readonly` | 是否必须保留原始值且禁止覆盖 |
|
||
|
||
示例:
|
||
|
||
```json
|
||
{
|
||
"field_pointer": "/extracted_fields/pms_room_type_code",
|
||
"control_type": "select",
|
||
"edit_scope": "manual_review_only",
|
||
"options_source": "active_pms_room_type_catalog",
|
||
"write_target": "review_resolution.field_overrides",
|
||
"raw_readonly": true,
|
||
"validation_rule": "catalog_value_exists_and_is_active"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 字段控件实施矩阵
|
||
|
||
### 4.1 目标、身份和 Group Code
|
||
|
||
| 字段 | 控件 | 编辑范围 | 实施要求 |
|
||
|---|---|---|---|
|
||
| `case_keys.group_code` | `lookup` | `manual_review_only` | 可输入并检索候选;校验目标存在、唯一和当前业务卡匹配 |
|
||
| `case_keys.confirmation_number` | `lookup` 或 `text` | `manual_review_only` | 不使用固定下拉;允许粘贴后执行格式/目标校验 |
|
||
| `case_keys.reservation_number` | `lookup` 或 `text` | `manual_review_only` | 与当前事件对象类型匹配后才能提交 |
|
||
| Parent `case_keys.block_code` | `readonly` | `never` | 必须与 Parent `group_code` 相等;禁止独立编辑 |
|
||
| `extracted_fields.old_group_code` | `text` | `manual_review_only` | 与新 Group Code 成对必填 |
|
||
| `extracted_fields.new_group_code` | `text` | `manual_review_only` | 必须表达 old → new 方向关系 |
|
||
| `extracted_fields.target_key` | 不再作为主控件 | — | 当前应优先使用通用 `case_keys`;旧字段只做兼容迁移 |
|
||
|
||
### 4.2 日期、房量和房型
|
||
|
||
| 字段 | 控件 | 编辑范围 | 实施要求 |
|
||
|---|---|---|---|
|
||
| `extracted_fields.arrival_date` | `date` | `manual_review_only` | 使用 `YYYY-MM-DD`;修改后重新校验离店日和晚数 |
|
||
| `extracted_fields.departure_date` | `date` | `manual_review_only` | 必须晚于入住日;保留原始日期证据 |
|
||
| `extracted_fields.nights` | `readonly` | `never` | 由入住日和离店日计算,不直接输入 |
|
||
| `extracted_fields.date_evidence.*` | `readonly` | `never` | `hotel_date_raw`、`tour_date_raw`、`action_date_raw`、`sheet_month_year` 只读 |
|
||
| `extracted_fields.room_quantity` | `number` | `manual_review_only` | 整数、非负/正数规则按现有业务字段执行 |
|
||
| `extracted_fields.child_room_items[]` | `structured_table` | `manual_review_only` | 每个 Child 的房型、房量和 PMS code 分列;禁止单行自由文本 |
|
||
| `extracted_fields.room_type_raw` | `readonly` | `never` | 原始房型文本不可被用户覆盖 |
|
||
| `extracted_fields.pms_room_type_code` | `select` | `manual_review_only` | 只能从当前有效 PMS 房型目录选择;禁止自由输入 code |
|
||
|
||
Parent 原始房量汇总与 Child 房型/房量汇总可以因分配或房型重分配而不同。前端不得仅因数量不相等显示冲突、强制修改或自动创建人工复核。
|
||
|
||
### 4.3 业务路由和分类字段
|
||
|
||
以下字段是业务识别或 Adapter 路由判别字段,默认只读:
|
||
|
||
| 字段 | 控件 | 说明 |
|
||
|---|---|---|
|
||
| `event_type` | `readonly` | 前端不允许 New / Update / Cancel 之间切换 |
|
||
| `booking_object_type` | `readonly` | FIT、Group Block、Allotment / Control Block 由业务结果确定 |
|
||
| `cancel_object_type` | `readonly` 或同路由受控 `select` | Cancel Booking 只接受 FIT/普通 Group;Allotment 整块取消属于 Cancel Allotment |
|
||
| `cancel_scope` | `readonly` 或同路由受控 `select` | 不使用自由文本;不得用前端选择跨到另一张任务卡 |
|
||
| `update_actions[]` / 旧 `update_subtypes[]` | `readonly` 标签 | 当前 Update 统一走 `update_booking_amendment`;动作由结果派生,不能用下拉改路由 |
|
||
| `voucher_subtype` | `readonly` | `lian_tai_credit_voucher` 与 `Payment Evidence` 分开,不跨卡选择 |
|
||
| `list_evidence_type` | `readonly` 或复核时受控 `select` | 不允许通过它自行创建新任务类型 |
|
||
| `trace_subtype` | `readonly` | 由 `trace_items[]` 重新判断 `extra_bed` / `general_request` |
|
||
|
||
如果 `manual_review.missing_fields[]` 明确指向同一业务卡的分类字段,才可以显示受控选择;选择结果不得自动改变 `event_type` 或 Adapter 路由,除非项目另行冻结了跨路由 resolution 契约。
|
||
|
||
### 4.4 Update 和 Before/After
|
||
|
||
`extracted_fields.before_after[]` 使用 `structured_table`:
|
||
|
||
| 子字段 | 控件 |
|
||
|---|---|
|
||
| `field` | 当前支持字段的受控选择;不得任意输入路径 |
|
||
| `before` | 只读原值/证据值 |
|
||
| `after` | 按字段类型使用日期、数字、文字或目录选择 |
|
||
| `evidence` | 只读 |
|
||
|
||
如果 Update 类型和 subtype 已确定,但 before/after 不可靠,保留原 Update 卡并进入同卡人工复核;不能把它改成 Fallback,也不能创建第二张卡。
|
||
|
||
### 4.5 Rate Code 和结算价
|
||
|
||
| 字段 | 控件 | 实施要求 |
|
||
|---|---|---|
|
||
| `extracted_fields.rate_code_result.rate_code` | 配置驱动 `select/lookup` | 不得硬编码旧 3.0 的 20+ code 全集;从当前 Rate 配置中心加载 |
|
||
| `rate_code_raw` | `readonly` | 原始价格/Rate marker 只读;路径未冻结时不要自行发明公开路径 |
|
||
| `settlement_price` | `number` | 单独编辑;校验币种、精度、非负和业务依赖 |
|
||
| `manual_settlement_price_required` | `readonly` | AI/规则派生,不让用户直接改成 true/false |
|
||
| `manual_price_reason_code` / `price_evidence` | `readonly` | 用于解释和审计,不是输入项 |
|
||
|
||
如果 Rate Code 无法唯一确定,用户应选择当前有效目录值或填写允许的手工结算价;不能让用户输入一个未经配置的任意 Rate Code。
|
||
|
||
### 4.6 Fix Charge
|
||
|
||
`fix_charge_items[]` 必须做成 `structured_table`,不能压成一行输入。
|
||
|
||
| 子字段 | 控件 | 当前边界 |
|
||
|---|---|---|
|
||
| `charge_type` | `select` | 使用当前契约枚举,如 `fixed_charge`;不要继续使用旧表 `additional_charge` |
|
||
| `pricing_mode` | `select` | 使用当前契约 `unit` 等已冻结值;旧 `unit_price` 需迁移 |
|
||
| `amount` / `quantity` / `total_amount` | `number` | 不把多个金额拼成文本;不得前端自行推导未经契约支持的总价 |
|
||
| `currency` | `select` 或配置值 | 以当前系统货币目录为准 |
|
||
| `unit_basis` | `select` 或 `text` | 若枚举未冻结,先只读或容错,不猜选项 |
|
||
| `raw_text` / `evidence_source` | `readonly` | 保留原文和证据 |
|
||
| `requires_followup_tool` / `followup_tool_name` | `readonly` | 前端不得自行调用工具 |
|
||
| `additional_operations[]` | `readonly` / pending badge | 只展示待处理意图,不执行实际写入 |
|
||
|
||
### 4.7 Cancel
|
||
|
||
| 字段 | 控件 | 实施要求 |
|
||
|---|---|---|
|
||
| `cancel_object_type` | 默认 `readonly` | Cancel Booking 只显示 FIT/Group;Allotment 使用独立 Cancel Allotment 卡 |
|
||
| `cancel_scope` | 默认 `readonly` | 不允许自由文本;部分配额维护当前不支持 |
|
||
| `requested_cancel_effective_date` | `date` | 只有 `missing_fields[]` 指定时启用 |
|
||
| `cancellation_note` | `textarea` | 允许覆盖时必须保留原始邮件证据并记录 field override |
|
||
|
||
### 4.8 Voucher、Payment 和 Invoice
|
||
|
||
| 字段 | 控件 | 实施要求 |
|
||
|---|---|---|
|
||
| `voucher_attachment` / `file_reference` | `readonly` 文件展示 | 不允许改写输入文件引用 |
|
||
| `voucher_subtype` | `readonly` | Credit Voucher 与 Payment Evidence 分开路由 |
|
||
| `department_routing[]` | `multiselect` 或只读 | 当前路径仍需以实际 schema 为准;默认 Finance/pending 只展示,不执行确认 |
|
||
| `post_confirmation_intent` | `readonly` | 只表示待确认后的意图,不表示已确认或已执行 |
|
||
| Invoice 专属字段 | 默认 `readonly` | 当前详细 item schema 尚未完全冻结,不要自造输入字段 |
|
||
|
||
### 4.9 Trace、Parent 和关系字段
|
||
|
||
| 字段 | 控件 | 实施要求 |
|
||
|---|---|---|
|
||
| `extracted_fields.trace_text` | `readonly` | 保留完整原文,不允许直接编辑 |
|
||
| `trace_items[].category` | 固定枚举 `select` | 仅在明确 pointer/权限允许时修正 |
|
||
| `trace_items[].text_raw` | `readonly` | 原始补充信息不可改 |
|
||
| `trace_items[].service_date` | `date` | 只有需要且 pointer 明确时编辑 |
|
||
| `trace_items[].pax` | `number` | 缺失时可为空;不因缺失自动人工复核 |
|
||
| `trace_items[].notify_departments[]` | `multiselect` | 已知时可选 FO/HSK;不清楚时允许空数组 |
|
||
| `related_source_event_index` | `readonly` | 单一关系索引,只用于本次结果内部关联 |
|
||
| `related_source_event_indices[]` | `readonly` | Parent 或跨 Child Trace 的完整关系;禁止用户编辑索引 |
|
||
| `relationship_type` / `related_event_type` | `readonly` | 关系类型不选择任务卡 subtype |
|
||
| `requires_downstream_hard_validation` | `readonly` badge | 只展示系统硬校验要求 |
|
||
|
||
完整 Parent split 的全部 Child 补充请求仍使用现有 Trace 卡,通过 `related_source_event_indices[]` 展示全部 Child;不能只绑定 E1,也不能新增一个 Trace 路由。
|
||
|
||
### 4.10 Rooming List 和 TA Recorder
|
||
|
||
| 字段 | 控件 | 实施要求 |
|
||
|---|---|---|
|
||
| Rooming List target | `lookup` | 以通用 `case_keys` 为主;多个目标分开处理 |
|
||
| `list_evidence_type` | 默认只读 | 由证据识别,不允许任意切换卡型 |
|
||
| TA Recorder `group_code` | `lookup` / `text` | 只有缺失且 pointer 明确时编辑 |
|
||
| `ta_recorder_status` | `readonly` / `workflow_state` | 由信息系统后续状态更新,不是 AI 字段输入 |
|
||
| `source_rooming_list_task_id` | `readonly` 或隐藏 | 仅作 linked task 上下文 |
|
||
|
||
### 4.11 Manual Review 和系统字段
|
||
|
||
| 字段 | 控件 | 实施要求 |
|
||
|---|---|---|
|
||
| `manual_review.reason_code` | `readonly` badge | 不能由用户随意改原因 |
|
||
| `manual_review.visible_reason` | `readonly` | 只读说明 |
|
||
| `manual_review.blocking_points` | `readonly` list | 只读说明 |
|
||
| `manual_review.conflicting_points` | `readonly` list | 只读说明 |
|
||
| `manual_review.suggested_human_actions` | `readonly` list | 可转成页面操作提示,但不能直接当字段输入 |
|
||
| `manual_review.evidence_to_check` | `readonly` list | 引导查看证据 |
|
||
| `manual_review.known_fields` | `readonly` | 不直接编辑对象文本 |
|
||
| `manual_review.missing_fields[]` | 内部 pointer | 驱动控件,不作为普通输入框展示 |
|
||
| `review_status` | `workflow_state` | `pending → resolved`;只能通过完成字段校验后 Resolve |
|
||
| `review_resolution` | 系统生成、只读审计 | 保存 field overrides、用户和时间,不允许页面直接覆盖历史记录 |
|
||
|
||
### 4.12 只读字段
|
||
|
||
以下字段不得提供普通编辑控件:
|
||
|
||
- `source_message`、`source_message_id`、邮件主题、发件人、接收时间。
|
||
- `message_events[].event_type`、`event_role`、`current_or_history`、`source_event_index`。
|
||
- `attachments[]`、`file_references[]`、`context_used`、QBD sheet/row/highlight/raw evidence。
|
||
- `relevant_message_excerpt`、`text_raw`、`room_type_raw`、价格 raw marker。
|
||
- `unhandled_current_intents[]` 的原文和可见说明。
|
||
- S10、S99 和 `infrastructure_input_error` 的 route/status/error 字段。
|
||
|
||
---
|
||
|
||
## 5. 必须修正的旧 3.0 字段/枚举
|
||
|
||
请不要直接复制旧 Excel 的以下定义:
|
||
|
||
1. `Cancel Booking.cancel_object_type` 不再包含 `allotment_control_block`;整块 Parent/Allotment 取消使用 `Cancel Allotment`。
|
||
2. `Voucher Received.voucher_subtype` 不再包含 `bank_transfer_slip`;银行/现金/交易回执使用 `Payment Evidence`。
|
||
3. `Update Booking.extracted_fields.update_subtypes[]` 的旧长下拉不再作为路由选择;当前 Update 统一为 `update_booking_amendment`,动作只展示为结果标签。
|
||
4. `room_type` 不可作为自由修改后的唯一值;必须保留 raw,并用 PMS 目录选择 `pms_room_type_code`。
|
||
5. Rate Code 不得硬编码旧表中的完整 code 列表。
|
||
6. `Trace Text` 不得直接编辑原文。
|
||
7. Fix Charge 的旧 `additional_charge / unit_price` 与当前 `fixed_charge / unit` 语义不一致,必须以当前契约和实际 schema 为准。
|
||
8. `target_key`、`parent_source_event_index`、`post_confirm_action` 是旧字段/旧命名,需迁移到当前 `case_keys`、`related_source_event_index(es)` 和 `post_confirmation_intent`。
|
||
9. 不得继续生成或路由 `Note`、`Allotment Maintenance`、`Cancel Booking + linked_parent_release_after_child_split`。
|
||
|
||
---
|
||
|
||
## 6. 必须通过的验收用例
|
||
|
||
至少增加或复用以下测试:
|
||
|
||
| 编号 | 场景 | 必须验证 |
|
||
|---|---|---|
|
||
| UI-01 | generic `SUITE` 房型 | raw 只读;PMS code 使用当前目录下拉;未选时保留 manual review |
|
||
| UI-02 | 入住/离店日期修改 | 日期控件有效;`nights` 自动重算;非法日期阻止 Resolve |
|
||
| UI-03 | Rate Code | 不读取旧硬编码全集;使用配置目录;手工价独立数字输入 |
|
||
| UI-04 | Fix Charge | `fixed_charge/unit` 枚举正确;金额/数量为数字;raw/evidence 只读 |
|
||
| UI-05 | Cancel 路由 | `Cancel Booking` 不出现 Allotment;Allotment 使用 Cancel Allotment |
|
||
| UI-06 | Voucher/Payment | bank slip 不可从 Voucher 卡下拉选择;Payment Evidence 单独显示 |
|
||
| UI-07 | Update | 不允许用 `update_subtypes` 下拉切换业务卡型;before/after 结构化展示 |
|
||
| UI-08 | Parent key | Parent `group_code=block_code`;用户不能单独改 block_code |
|
||
| UI-09 | Parent split 房量差异 | Parent/Child 数量不等不自动显示冲突或人工复核 |
|
||
| UI-10 | 全 Child Trace | 使用现有 Trace 卡;展示完整 `related_source_event_indices[]`;不压缩到 E1 |
|
||
| UI-11 | raw evidence | 用户编辑后 raw 原文、附件引用和原 Agent payload 不变 |
|
||
| UI-12 | 同卡解阻 | 只创建一张卡;`pending → resolved → Preflight`;不创建第二张 normal task |
|
||
| UI-13 | 未知字段路径 | pointer 无法映射时 fail closed,不能临时创建任意输入控件 |
|
||
| UI-14 | S10/S99/基础设施错误 | 全部只读,不显示业务编辑控件 |
|
||
|
||
---
|
||
|
||
## 7. 交付要求
|
||
|
||
完成后请报告:
|
||
|
||
1. 实际修改的 Adapter/Frontend 文件。
|
||
2. 新增或更新的字段注册表及控件类型。
|
||
3. `missing_fields[] → control → field_overrides[]` 的实现位置。
|
||
4. 日期、房型、Rate Code、Fix Charge、Parent/Trace 关系校验位置。
|
||
5. 测试命令和测试结果。
|
||
6. 是否保持公开 JSON、40 路由和 MCP mapping 不变。
|
||
7. 未实现字段、路径不确定项和需要产品/业务确认的事项。
|
||
|
||
如果发现当前字段路径、item schema 或 Rate/Fix Charge 枚举仍未冻结,请保留只读/容错策略并报告,不要在前端自行发明新的公开字段。
|
||
|
||
---
|
||
|
||
## 最终边界
|
||
|
||
本任务的正确结果是:
|
||
|
||
```text
|
||
信息系统可以正确展示当前业务结果
|
||
信息系统只允许修改被 manual_review pointer 指定的业务字段
|
||
用户修改可审计、可校验、可回退到同一业务卡
|
||
原始 Agent 结果和证据不被覆盖
|
||
不新增业务路由、不改变 Prompt/Skill/MCP 契约
|
||
```
|