前端调整V4预订事项用户化展示

This commit is contained in:
andy
2026-07-21 20:54:24 +07:00
parent 350bb3310b
commit c521eb6dc0
20 changed files with 703 additions and 657 deletions

View File

@@ -46,7 +46,7 @@
| `requirements/M002-order-task-workflow-v3.md` | 当前有效 | M002 订单任务主流程 V3基于 2026-07-11 P0 冻结基线和 2026-07-12 P0.1 Parent Group 修订,记录 S10/S99、40 路由、方案 C、type-known manual review 同卡解阻和 fail-closed 边界。 |
| `requirements/M002-task-field-control-contract-v1.md` | 当前有效 | M002 任务卡字段控件契约 V1记录任务详情 `fields[]` 控件元数据、人工复核控件复用和前后端开发边界。 |
| `requirements/M002-v4-agent-callback-field-contract.md` | 当前有效 | M002 V4 Agent 回调字段契约,基于 2026-07-18 业务基线和最新答复,冻结 `source_message``order_contexts``message_events`、订单级 Basic Information、六类 Event、S10/S99 和校验口径;后端已完成 V4 入站解析、持久化、查询、确认、复核和当前酒店数据库目录校验。 |
| `requirements/M002-v4-order-task-card-domain-model-cp2.md` | 当前有效 | M002 V4 CP2 订单任务与多卡领域模型设计,并记录 CP3-CP8 表结构、入站写入、查询、确认、复核和目录校验已落地状态CP11 已完成 DB 目录与 lookup APICP12 已完成前端 lookup 接入CP13 已完成目录管理后台 CP1CP14 已完成订单列表 V4 继续处理入口CP15 已完成 V4 业务审计查询CP15.1 已完成订单详情 V4 总览后端补齐,当前已停止 V4 普通业务双写旧 `workflow_reservation_task`,并已完成 Room Information 后端展示模型和前端业务化展示第一版,以及 Rooming List 确认自动 DEF 后端联动;已补 OWNER RATE Room Type / Rate Code 目录口径、Payment 附件预览、Rooming List 事项确认卡、V4 复核态卡片交互可编辑字段白名单文档口径;开发阶段不维护 V2/V3 旧任务兼容,测试数据可重建,生产迁移策略后置。 |
| `requirements/M002-v4-order-task-card-domain-model-cp2.md` | 当前有效 | M002 V4 CP2 订单任务与多卡领域模型设计,并记录 CP3-CP8 表结构、入站写入、查询、确认、复核和目录校验已落地状态CP11 已完成 DB 目录与 lookup APICP12 已完成前端 lookup 接入CP13 已完成目录管理后台 CP1CP14 已完成订单列表 V4 继续处理入口CP15 已完成 V4 业务审计查询CP15.1 已完成订单详情 V4 总览后端补齐,当前已停止 V4 普通业务双写旧 `workflow_reservation_task`,并已完成 Room Information 后端展示模型和前端业务化展示第一版,以及 Rooming List 确认自动 DEF 后端联动;已补 OWNER RATE Room Type / Rate Code 目录口径、Payment 附件预览、Rooming List 事项确认卡、V4 复核态卡片交互可编辑字段白名单和 V4 工作台 / 订单详情 / 任务详情普通酒店员工用户化展示契约;开发阶段不维护 V2/V3 旧任务兼容,测试数据可重建,生产迁移策略后置。 |
| `requirements/M002-v4-real-catalog-lookup-api-design.md` | 当前有效 | M002 V4 真实目录与 Lookup API 设计及 CP11 / CP13 CP1 实现记录,记录 Account、Market、Source、Room Type、Rate Code 从固定种子导入数据库、前端 lookup API、目录管理后端接口、权限、缓存后置、PMS / OPERA / OHIP 同步后置和失败兜底;已记录 OWNER RATE `RATECODE (2)` 只读整理结论Room Type 第一阶段收敛为 `RM2``RM3``RM4``SU1``SU2``SU3`Rate Code 第一阶段暂不建立 Account 适用关系Q.B.D / LIAN TAI 清单作为酒店级目录候选。 |
| `requirements/M002-v4-test-machine-smoke-checklist.md` | 当前有效 | M002 V4 测试机冒烟清单覆盖登录、酒店权限、V4 工作台、订单任务详情、lookup、确认、复核解阻、S10/S99 ack、订单详情 V4 时间线和目录管理 CP1 排查点。 |
| `requirements/M002-superagent-task-result-api-contract.md` | 阶段记录 | M002 SuperAgent 任务结果入站接口契约阶段记录;对外总契约以 `integrations/superagent-api-contract.md` 为准。 |
@@ -100,6 +100,6 @@
- 接口暴露、权限、酒店隔离和审计边界以 `security-access-control-boundary.md` 为总检查清单;具体 SuperAgent / MCP / AgentBus 请求响应契约仍以 `integrations/` 下对应文档为准。
- AI-NSES 的通用标准以 `../import/reusable/ai-native-software-engineering-standard.md` 为复用来源;本项目采用方式以 `ai-native-adoption.md` 为准。
- M002 V1 只作为历史参考V2 记录当前阶段实现;后续 M002 新开发以 `requirements/M002-order-task-workflow-v3.md` 为开发基线。
- 2026-07-18 导入的业务基线已形成 `requirements/M002-v4-agent-callback-field-contract.md` 字段契约M002 V4 入站解析 CP1 已落地V4 订单任务 + 多卡领域模型设计和关键业务决策见 `requirements/M002-v4-order-task-card-domain-model-cp2.md`M002 V4 CP3 已落地 V4 订单任务、任务卡、来源通知表结构和 Repository 基线CP4 已落地普通 V4 业务包和 S10/S99 来源通知入站写入新模型CP5 已落地工作台、订单任务和来源通知查询接口CP6/CP7 已落地卡片确认、S10/S99 ack 和复核解阻CP11 已落地 DB 目录与 lookup APICP12 已落地前端 lookup 接入CP13 已落地目录管理后台 CP1CP14 已落地订单列表 V4 继续处理入口CP15 已落地 V4 业务审计查询CP15.1 已落地订单详情 V4 总览后端补齐且前端已接入Room Information 后端展示模型第一版、前端业务化展示和 Rooming List 确认自动 DEF 后端联动已落地;已确认 Rooming List 卡第一版只做事项确认,`REVIEW_REQUIRED` 保持原业务卡内编辑并统一显示“确认卡片”OWNER RATE Room Type / Rate Code 目录导入口径已落地,后续仍需测试机联调和真实 PMS / OPERA / OHIP 同步。
- 2026-07-18 导入的业务基线已形成 `requirements/M002-v4-agent-callback-field-contract.md` 字段契约M002 V4 入站解析 CP1 已落地V4 订单任务 + 多卡领域模型设计和关键业务决策见 `requirements/M002-v4-order-task-card-domain-model-cp2.md`M002 V4 CP3 已落地 V4 订单任务、任务卡、来源通知表结构和 Repository 基线CP4 已落地普通 V4 业务包和 S10/S99 来源通知入站写入新模型CP5 已落地工作台、订单任务和来源通知查询接口CP6/CP7 已落地卡片确认、S10/S99 ack 和复核解阻CP11 已落地 DB 目录与 lookup APICP12 已落地前端 lookup 接入CP13 已落地目录管理后台 CP1CP14 已落地订单列表 V4 继续处理入口CP15 已落地 V4 业务审计查询CP15.1 已落地订单详情 V4 总览后端补齐且前端已接入Room Information 后端展示模型第一版、前端业务化展示和 Rooming List 确认自动 DEF 后端联动已落地;已确认 Rooming List 卡第一版只做事项确认,`REVIEW_REQUIRED` 保持原业务卡内编辑并统一显示“确认卡片”OWNER RATE Room Type / Rate Code 目录导入口径已落地V4 工作台 / 订单详情 / 任务详情页默认面向普通酒店员工,技术信息只允许放在高级筛选、折叠区或受控调试模式;真实 PMS / OPERA / OHIP 同步仍后置
- V3 / 旧任务前端展示和编辑字段仍以 2026-07-11 P0 冻结基线中的前端字段表、0712 字段控件说明和 `requirements/M002-task-field-control-contract-v1.md` 为白名单和控件契约基线V4 订单任务前端展示和编辑字段以 `requirements/M002-v4-order-task-card-domain-model-cp2.md`、后端返回的 `fields[]` 和 V4 前后端协作文档为准。
- 时间点语义以 `backend-time-design.md` 为准;数据库时间点按 UTC 理解API 返回带 `Z` 的 UTC 时间,页面再按酒店或用户时区展示。

View File

@@ -159,6 +159,8 @@ POST /api/auth/logout
订单详情已经补齐并完成前端接入 V4 订单页总览字段:`order_overview``next_v4_action``related_source_messages[]` 和增强后的 `v4_order_tasks[].cards[]`。订单详情页定位为订单视角总览,不要在订单详情页直接编辑、确认或复核任务卡;点击 `next_v4_action.order_task_id` 或时间线 `order_task_id` 后进入 `/reservation/order-tasks/{orderTaskId}` 对应的 V4 订单任务详情页处理。
订单详情页默认面向普通酒店员工,不面向开发 / 测试。页面标题、摘要和时间线区域应使用业务语言:`order_overview` 显示为“当前确认快照”或“订单信息总览”,`next_v4_action` 显示为“下一步处理”,`related_source_messages[]` 显示为“关联来源邮件”,`v4_order_tasks[]` 显示为“处理记录”或“来源邮件处理记录”,`cards[]` 显示为事项状态摘要。不要在默认主信息层级展示 `V4``order_id``order_task_id``card_id``source_message_id``action_type``action_status`、payload 字段名、route 或内部状态码;确需排查时只能放入折叠区或受控调试模式。订单详情主区域不展示确认 / 复核按钮,所有办理动作仍跳转到 V4 任务详情页。
`order_overview` 只从已确认 V4 卡片派生Basic Information 未确认时 Account / Market / Source 为空Room Information 未确认时日期、Rate Code、房型房量为空。前端不要把未确认卡片 display payload 反推成订单事实。
订单详情新增的 V4 `v4_order_tasks[]` 每项只返回订单任务安全摘要:
@@ -496,7 +498,15 @@ RESERVATION_ROOMING_LIST_GENERATE
后端已提供以下 V4 查询和写接口,前端接入时按这些约束实现;在前端页面正式集成并完成联调前,不把 V4 前端页面视为完成:
- `/reservation/tasks` 应使用 `GET /api/reservation/workbench-items` 作为默认工作台列表入口,展示 V4 订单任务和 S10/S99 来源通知混排摘要;当筛选工作项类型为订单任务时,改用 `GET /api/reservation/order-tasks`,仅发送后端当前支持的 `keyword``order_task_status``card_status``page_num``page_size`
- `/reservation/tasks` 默认面向普通酒店员工页面名称和空态应使用“待处理预订事项”“预订事项”“暂无需要处理的预订事项”等业务语言不直接显示“V4 工作台”“Order Task 列表”“任务卡列表”等技术描述。
- 任务列表默认视图优先展示需要用户处理的事项,例如待确认、需要复核、待确认已读的来源通知;已完成事项保留筛选入口,但不作为默认工作队列。`ORDER_TASK` 显示为“预订事项”,`SOURCE_NOTIFICATION` 显示为“来源通知”或“需查看邮件”,不直接展示内部 `item_type` code。
- 任务列表普通筛选建议为“全部”“待处理”“需要复核”“已完成”“来源通知”;技术筛选如 `item_type``order_task_status``card_status``route_code``system_process_category` 只能放在高级筛选或受控调试模式,不作为默认筛选文案。
- 任务类型标签应映射为业务名称,例如新预订、修改预订、取消预订、付款凭证、跟进事项、房表事项;前端业务判断仍使用稳定 code不使用展示文案反推类型。
- `/reservation/order-tasks/{orderTaskId}` 应使用 `GET /api/reservation/order-tasks/{orderTaskId}` 展示 `basic_information_card``business_cards[]``source_message_card``card_counts``order_task` 摘要和 `adapter_contract_errors[]` 只读诊断;页面顺序固定为 Basic Information、业务卡、SourceMessage Display。
- `/reservation/order-tasks/{orderTaskId}` 默认面向普通酒店员工页面定位是“订单事项办理页”不是“V4 任务卡模型调试页”。前端默认主标题、摘要和业务事项区域不得直接展示 `V4`、Task Card 模型、`order_task_id``card_id``order_ref``source_event_index``version`、JSON Pointer、`write_target`、payload 字段名、`route_code`、adapter 诊断或内部状态码;这些字段只能用于路由、提交、并发和排查,确需展示时放入折叠区或受控调试模式。
- V4 任务详情普通用户文案应使用业务名称Basic Information 展示为“预订基础信息”Room Information 展示为“房型与日期”或“房型信息”Payment 展示为“付款凭证”Trace 展示为“跟进事项”Rooming List 展示为“房表事项”SourceMessage Display 展示为“来源邮件”。`PENDING_CONFIRM``REVIEW_REQUIRED``CONFIRMED``RESOLVED``OPEN``COMPLETED` 等稳定 code 只能作为业务判断依据,页面应映射为“待确认”“需要复核”“已确认”“复核已完成”“待处理”“已完成”等用户可理解文案。
- V4 任务详情顶部摘要优先回答“这封邮件识别出了什么事项、当前还有什么要处理、下一步该点哪里”,不要把卡片数量、数据库 ID 或模型字段作为第一视觉层级。已完成事项可以折叠为摘要,待处理和需复核事项应突出;来源邮件固定在业务事项之后,默认折叠正文。
- 每张事项卡的主动作按钮放在该事项卡右侧,和状态同区域展示;移动端空间不足时可放到卡片底部右对齐。不要做页面底部统一确认按钮,避免用户误以为一次确认整页。`REVIEW_REQUIRED` 仍显示“确认卡片”,但前端内部调用 `review-resolution`
- `/reservation/source-notifications/{notificationId}` 应使用 `GET /api/reservation/source-notifications/{notificationId}` 展示 S10/S99 来源通知详情,并通过 `POST /api/reservation/source-notifications/{notificationId}/ack` 确认已读 / 已处理。
- V4 审计时间线应分别调用 `GET /api/reservation/order-tasks/{orderTaskId}/audits``GET /api/reservation/source-notifications/{notificationId}/audits`;按钮权限使用 `/api/auth/me.permissions[]` 中的 `RESERVATION_AUDIT_READ`
- V4 卡片确认应使用 `POST /api/reservation/order-tasks/{orderTaskId}/cards/{cardId}/confirm`,请求带 `version`;前端只从当前卡 `fields[]` 中挑选 `editable=true``raw_readonly!=true``write_target=confirmed_payload` 的字段构造 `confirmed_payload`
@@ -507,6 +517,7 @@ RESERVATION_ROOMING_LIST_GENERATE
- Trace 卡第一版使用稳定业务展示模型:普通事项内容字段统一为 `trace_items[].text`,不要使用或提交 `trace_items[].content``GENERAL` 的可编辑字段为 `/trace_items/{index}/text``/trace_items/{index}/department_code``EXTRA_BED` 的可编辑字段为 `/trace_items/{index}/target_room_type_code``/trace_items/{index}/extra_bed_room_count``/trace_items/{index}/department_code``department_code` 固定下拉 `FO``HSK``FO+HSK`,后端在对应字段返回 `options_source=reservation_v4_trace_department_fixed``fixed_options[]``target_room_type_code` 使用 Room Type lookup`extra_bed_room_count` 为正整数;确认和复核都只提交 `fields[]` 暴露的白名单 pointer不要提交 `target_order`、邮件正文、附件 URL、raw evidence 或 Agent 原始 payload。
- 前端不展示 `ai_payload_json`、附件 URL、raw evidence 或 SuperAgent 原始 payloadV4 任务详情页底部 `SOURCE_MESSAGE_DISPLAY` 可展示当前触发该 order task 的 SourceMessage 正文,但必须通过 `GET /api/source-messages/{sourceMessageId}/conversation` 读取并写原文读取审计,不能要求 `GET /api/reservation/order-tasks/{orderTaskId}` 直接返回正文。Payment 卡如展示付款凭证图片,也必须通过同一会话接口获取受控附件 URL卡片内显示缩略图点击打开大图预览非图片只显示文件列表和下载。HTML 邮件优先渲染 `html_body_sanitized`,缺少原文权限或接口失败时降级为安全摘要和“查看邮件会话”入口。
- V4 来源消息卡读取 `attachments``uploaded_media``file_references` 时,只允许展示附件名称、类型和大小等安全摘要;如果后端 payload 中异常出现 `https://``oss://``s3://` 等直接 URL 字符串,前端必须替换为“未命名附件”或隐藏,不得把 URL 渲染到普通业务页面。`SOURCE_MESSAGE_DISPLAY` 的邮件正文默认做长度折叠,用户可展开全文。
- 技术折叠区或调试模式也必须遵守同一安全边界不得展示邮件正文、HTML、附件 URL、AI 原始 payload、raw evidence、PMS 原始响应、Secret、Token 或跨酒店数据。若后续需要专门 Debug 视图,应按 `FRONTEND_DEBUG` 能力和安全边界另行登记,不要把 Debug 信息混入普通业务办理页。
- V4 主流程不调用旧 V2/V3 草稿、旧任务确认、旧同卡复核接口,也不展示 OPERA 模拟操作入口。
- 2026-07-20 测试机 smoke 注意:订单详情页依赖 `GET /api/reservation/orders/{orderId}` 返回 `order_overview``next_v4_action``related_source_messages[]``v4_order_tasks[].cards[]`。如果测试机响应仍只有旧 `order``tasks[]`、基础 `v4_order_tasks[]``warnings`,应先确认测试机后端是否部署了包含 M002 V4 CP15.1 的最新包;前端不要为了该旧响应重新做兼容逻辑,避免把部署问题固化成页面分支。

View File

@@ -53,6 +53,30 @@
| `GET /api/reservation/task-card-field-whitelist` | 未发现后端实现 | 不可以 | 若任务详情 `fields[]` 已补齐 3.0 元数据,可后置。 |
| `GET /api/reservation/lookups/accounts` / `room-types` / `rate-codes` | M002 V4 CP11 已实现M002-V4-owner-rate-catalog-data-alignment 已收敛 Room Type / Rate Code 数据2026-07-21 结论是 Rate Code 第一阶段暂不做 Account 范围过滤 | 可以 | 用于 V4 任务卡下拉 / 搜索选择Bearer token + `RESERVATION_TASK_READ` + 酒店访问权Account / Room Type / Rate Code 支持 `hotel_id``keyword``page_num``page_size`,只返回 ACTIVE 目录。Room Type 当前固定初始化为 `RM2``RM3``RM4``SU1``SU2``SU3`Rate Code 当前按酒店级目录返回 OWNER RATE 40 个规范化 code未来如新增 Account 适用关系,再由后端扩展 `account_code` / `booking_type` 过滤参数。 |
## 2.2 V4 工作台、订单详情和任务详情页用户化展示口径
2026-07-21 已确认V4 工作台 / 任务列表、订单详情页和任务详情页默认面向普通酒店员工,不面向开发 / 测试。当前后端 `GET /api/reservation/workbench-items``GET /api/reservation/order-tasks``GET /api/reservation/orders/{orderId}``GET /api/reservation/order-tasks/{orderTaskId}` 已返回前端完成第一版用户化展示所需的业务数据、订单确认快照、下一步入口、`fields[]` 白名单、`availability`、来源邮件摘要和安全 payload本 checkpoint 原则上不要求后端新增接口或改变入站 / 确认 / 复核模型。
前端下一轮 UX 重构应按以下口径实现:
- 工作台 / 任务列表页面定位为“待处理预订事项列表”或“预订事项工作台”不是“V4 模型工作台”。
- 任务列表默认视图优先展示待确认、需要复核、待确认已读的来源通知;已完成事项保留筛选入口,不作为默认工作队列。
- 任务列表普通筛选建议为“全部”“待处理”“需要复核”“已完成”“来源通知”。技术筛选如 `item_type``order_task_status``card_status``route_code``system_process_category` 可放入高级筛选或受控调试模式,不作为默认筛选文案。
- `ORDER_TASK` 用户可见文案为“预订事项”,`SOURCE_NOTIFICATION` 用户可见文案为“来源通知”或“需查看邮件”;新预订、修改预订、取消预订、付款凭证、跟进事项、房表事项等任务类型应显示业务名称,不直接展示内部 code。
- 列表行主动作使用“继续处理”“查看详情”“确认已读”等业务语言;空态使用“暂无需要处理的预订事项”,不显示内部模型空态。
- 订单详情页定位为“订单总览页”,不是 V4 时间线调试页;`order_overview` 显示为“当前确认快照”或“订单信息总览”,`next_v4_action` 显示为“下一步处理”,`related_source_messages[]` 显示为“关联来源邮件”,`v4_order_tasks[]` 显示为“处理记录”或“来源邮件处理记录”,`cards[]` 显示为事项状态摘要。
- 订单详情页标题优先显示订单业务名、Group Code、Confirmation Number 或用户可理解订单名称;不把数据库 `order_id`、V4 字段名、`order_task_id``card_id``source_message_id``action_type``action_status` 等作为主信息层级。订单详情不展示确认 / 复核按钮,所有办理动作仍跳转到任务详情页。
- 页面定位为“订单事项办理页”不是“V4 任务卡模型调试页”。
- 主标题、顶部摘要和业务事项区域使用普通用户可理解文案,不直接展示 `V4`、Task Card 模型、`order_task_id``card_id``order_ref``source_event_index``version`、JSON Pointer、`write_target`、payload 字段名、`route_code` 或内部状态码。
- 技术字段可以继续用于路由、提交、并发校验、错误定位和自动化测试;确需展示时只能放在“技术信息”折叠区或受控调试模式,不得占据默认主信息层级。
- 用户可见业务名称建议Basic Information = 预订基础信息Room Information = 房型与日期 / 房型信息Payment = 付款凭证Trace = 跟进事项Rooming List = 房表事项SourceMessage Display = 来源邮件。
- 用户可见状态建议:`PENDING_CONFIRM` = 待确认;`REVIEW_REQUIRED` = 需要复核;`CONFIRMED` = 已确认;`RESOLVED` = 复核已完成;`OPEN` = 待处理;`COMPLETED` = 已完成。前端业务判断仍使用稳定 code不使用展示文案反推状态。
- 顶部摘要应优先表达“这封邮件识别出了什么事项、当前还有什么要处理、下一步该点哪里”;已完成事项可以折叠为摘要,待处理和需复核事项应突出。
- 每张事项卡的主动作按钮放在该事项卡右侧,和状态同区域展示;移动端空间不足时可放到卡片底部右对齐。不要做页面底部统一确认按钮。`PENDING_CONFIRM``REVIEW_REQUIRED` 的用户可见主按钮都叫“确认卡片”,但前端内部仍按状态分别调用普通确认或 `review-resolution`
- 来源邮件固定放在业务事项之后,默认折叠正文;正文、图片预览和非图片下载仍走 `GET /api/source-messages/{sourceMessageId}/conversation` 原文权限链路。
如果前端实现时发现现有接口不足,可单独向后端提出字段补充,例如用户友好的 `display_title`、任务级 `next_step_label`、业务摘要短句或调试区可见性标记;在提出前不得由前端自行展示 AI 原始 payload 或解析后端内部字段来补标题。
## 3. 任务列表 / 工作台接口字段补齐
建议路径:

View File

@@ -154,6 +154,7 @@ th-TH
- 避免引入大型 Admin Template。
- 页面应优先表达业务主线,而不是堆叠技术字段。
- Debug 页面可以显示技术 ID但业务页面应优先展示可理解的业务状态和来源摘要。
- V4 工作台 / 任务列表、订单详情页和任务详情页默认面向普通酒店员工,应呈现为“待处理预订事项列表”“订单总览页”和“订单事项办理页”;`V4``ORDER_TASK``SOURCE_NOTIFICATION`、Task Card 模型、JSON Pointer、payload、version、route、数据库 ID 等技术信息不得出现在默认主信息层级,只能放在高级筛选、折叠区或受控调试模式。
- 预检、人工复核、任务确认要清楚区分:
- 外部 Provider 建议
- 人工确认值
@@ -345,13 +346,16 @@ pnpm test -- SomeSpecName.spec.ts
中文说明:
- 任务列表是独立菜单,服务于“按任务处理”的工作方式,不是订单列表的复制。
- 列表数据来自 `GET /api/reservation/tasks`;该接口已存在第一版,前端应直接接真实接口,不展示 fixture 假数据
- 本低保真结构图主要记录 V2/V3 旧任务列表结构V4 默认工作台 `/reservation/tasks` 应按 `M002-v4-order-task-card-domain-model-cp2.md` 的用户化契约使用 `GET /api/reservation/workbench-items` `GET /api/reservation/order-tasks`,展示“待处理预订事项 / 预订事项”,不直出 `ORDER_TASK``SOURCE_NOTIFICATION``card_status` 等技术筛选文案
- V2/V3 历史列表数据来自 `GET /api/reservation/tasks`;该接口已存在第一版,前端应直接接真实接口,不展示 fixture 假数据。
- 每行任务至少展示 `task_id`、关联订单、任务卡名称、任务类型 / 子类型、任务状态、队列顺序、是否可处理、只读原因和来源邮件摘要。
- 每行操作保留“查看任务”“查看订单”“查看邮件会话”三个入口;邮件会话入口按该任务的 `source_message_id``external_conversation_id` 打开。
- 如果来源邮件会话字段暂未接入,邮件会话入口置灰或展示“接口待补”,不使用假会话数据。
### 18.3 订单详情与任务卡低保真结构图
本节低保真结构图保留 V2/V3 旧任务流的页面骨架。V4 订单详情页默认是普通酒店员工使用的“订单总览页”,只展示订单当前确认快照、下一步处理、关联来源邮件和处理记录摘要;不在订单详情页直接渲染当前任务卡、保存草稿、确认任务或 OPERA 模拟操作。V4 订单详情、任务详情和工作台的当前展示契约以 `M002-v4-order-task-card-domain-model-cp2.md` 和前后端协作文档为准。
```text
┌────────────────────────────────────────────────────────────────────────────┐
│ 订单详情 GRP-001 / TMP-20260707-0001 ACTIVE / TEMPORARY │
@@ -384,7 +388,7 @@ pnpm test -- SomeSpecName.spec.ts
中文说明:
- 订单详情页必须沿用“订单归档容器 + 同订单任务队列 + 当前任务卡 + OPERA 模拟操作 + 审计时间线”的既有结构,不另起一套订单详情布局
- V2/V3 旧订单详情页沿用“订单归档容器 + 同订单任务队列 + 当前任务卡 + OPERA 模拟操作 + 审计时间线”的既有结构V4 订单详情页不沿用该“当前任务卡 + OPERA 模拟操作”主布局,而是作为订单总览页,通过下一步入口跳转到 V4 任务详情页办理
- 后续任务如果被前置任务阻塞,应在任务队列和任务卡操作区同时体现只读状态。
- 任务卡字段必须按后端字段矩阵分组渲染,不直接把 AI 原始 JSON 展示成自由表单。
- 邮件入口按任务粒度展示:每个任务可能来自不同 `source_message_id`,也可能落在不同 `external_conversation_id`。点击“邮件会话”只打开该任务来源消息所在的完整邮件会话,不代表订单下所有来源消息的合集。

View File

@@ -271,6 +271,66 @@ V4 当前不做 OPERA / PMS 执行,但仍需要保留同订单处理顺序,
- Rooming List 卡第一版没有可编辑业务字段;页面展示为轻量事项确认卡,用户点击“确认卡片”仅表示已人工处理当前 Rooming List 事项不代表名单已解析、Excel 已生成或 PMS 已导入。
- Room Information 卡下一阶段采用业务展示模型,不再只依赖通用 `fields[]` 扁平渲染具体规则见“Room Information 卡展示模型”。
### 9.1.1 V4 任务详情页用户化展示边界
2026-07-21 已确认:`/reservation/order-tasks/{orderTaskId}` 默认面向普通酒店员工,不面向开发 / 测试。该页面的产品定位是“订单事项办理页”不是“V4 任务卡模型调试页”。底层仍保持 Order Task / Task Card / SourceMessage 领域模型不变,但前端默认展示必须把模型语言翻译成业务语言。
展示口径:
- 页面主标题不直接使用“V4”“后端任务卡模型”“Task Card 模型”等技术描述,建议使用“处理预订事项”“订单事项处理”等业务文案。
- `Reservation Task Card` 在普通页面上显示为“事项”“待确认事项”或具体业务名称,不直接称为“卡片模型”。
- `SOURCE_MESSAGE_DISPLAY` 面向用户显示为“来源邮件”,固定在业务事项之后,默认折叠正文;正文仍只通过 SourceMessage conversation 权限链路读取。
- Basic Information 显示为“预订基础信息”Room Information 显示为“房型与日期”或“房型信息”Payment 显示为“付款凭证”Trace 显示为“跟进事项”Rooming List 显示为“房表事项”。
- 技术 ID、`order_task_id``card_id``source_event_index``order_ref``version``route_code`、JSON Pointer、`write_target`、payload 字段名、adapter 诊断和内部状态码默认不得出现在主摘要或业务事项区域;确需排查时只能放在折叠区或受控调试模式。
- 普通用户可见状态应使用业务文案映射,例如 `PENDING_CONFIRM` 显示为“待确认”,`REVIEW_REQUIRED` 显示为“需要复核”,`CONFIRMED` 显示为“已确认”,`RESOLVED` 显示为“复核已完成”,`OPEN` / `COMPLETED` 显示为“待处理” / “已完成”。
- 顶部摘要优先回答“这封邮件识别出了什么事项、当前还有什么要处理、下一步该点哪里”,而不是优先展示卡片数量和数据库 ID已完成事项可以折叠为摘要待处理或需复核事项应突出。
- 每张可处理事项卡的主动作按钮放在该事项卡右侧,和该卡状态同区域展示;`PENDING_CONFIRM``REVIEW_REQUIRED` 的用户可见主按钮均为“确认卡片”,但前端内部仍按卡片状态分别调用普通确认或复核解阻接口。已确认事项不显示主动作按钮,只显示“已确认”或“复核已完成”等状态。移动端可降级为卡片底部右对齐,但仍属于当前事项卡,不做页面底部统一确认按钮。
安全边界:
- 技术折叠区或调试模式也不得展示邮件正文、HTML、附件 URL、AI 原始 payload、raw evidence、PMS 原始响应、Secret、Token 或跨酒店数据。
- 如果后端接口为了路由、并发和提交必须返回 ID、`version``fields[]``write_target` 等稳定技术字段,前端可以用于内部逻辑,但默认用户页面不得把这些字段原样作为主文案。
- 本节只约束展示和信息层级,不改变 V4 入站、确认、复核、审计、权限、酒店隔离或 SourceMessage 读取链路。
### 9.1.2 V4 工作台 / 任务列表用户化展示边界
`/reservation/tasks` 默认面向普通酒店员工,产品定位是“待处理预订事项列表”或“预订事项工作台”,不是 V4 模型列表。该页面可以继续使用 `GET /api/reservation/workbench-items``GET /api/reservation/order-tasks` 的稳定 code 做查询、路由和筛选,但普通用户可见文案不得直接暴露内部 item type、card status 或 route 语汇。
默认展示口径:
- 列表标题建议使用“待处理预订事项”“预订事项”或“工作台”不直接使用“V4 工作台”“Order Task 列表”“任务卡列表”等技术描述。
- 默认视图优先展示需要用户处理的事项,例如待确认、需要复核、待确认已读的来源通知;已完成事项保留筛选入口,但不应淹没默认工作队列。
- `ORDER_TASK` 面向用户显示为“预订事项”,`SOURCE_NOTIFICATION` 面向用户显示为“来源通知”或“需查看邮件”,不直接展示内部 `item_type` code。
- 任务类型面向用户显示为业务名称,例如新预订、修改预订、取消预订、付款凭证、跟进事项、房表事项;不要默认展示 `NEW_BOOKING``TRACE_RESERVATION_NOTES``ROOMING_LIST``PAYMENT` 等技术 code。
- 筛选项第一版面向普通用户建议为“全部”“待我处理 / 待处理”“需要复核”“已完成”“来源通知”。技术筛选如 `item_type``order_task_status``card_status``route_code``system_process_category` 可放入高级筛选或受控调试模式,不作为默认筛选文案。
- 列表行主动作保持业务化,例如“继续处理”“查看详情”“确认已读”;不把 V4 入口、旧任务 fallback 或 SourceMessage 模型差异暴露给普通用户。
- 空态文案使用业务语言,例如“暂无需要处理的预订事项”,不要显示“暂无 ORDER_TASK”或“暂无 V4 card_status 匹配结果”。
安全边界:
- 列表默认不展示邮件正文、附件 URL、AI 原始 payload、adapter 诊断、raw evidence、JSON Pointer、数据库 ID 或 route 诊断;必要的技术信息只能用于内部逻辑、高级筛选或受控调试模式。
- 高级筛选或调试模式不得突破酒店隔离、权限、SourceMessage 原文读取权限和敏感数据脱敏规则。
### 9.1.3 V4 订单详情页用户化展示边界
`/reservation/orders/{orderId}` 默认面向普通酒店员工,产品定位是“订单总览页”,不是 V4 时间线或任务卡调试页。该页面只展示订单当前确认快照、下一步处理入口、关联来源邮件和处理记录摘要,不在订单详情页直接确认、复核或编辑任务卡;具体办理动作仍进入 `/reservation/order-tasks/{orderTaskId}`
展示口径:
- 页面标题优先显示订单业务名、Group Code、Confirmation Number 或用户可理解的订单名称,不把数据库 `order_id`、V4 字段名或内部 ID 作为第一视觉层级。
- `order_overview` 面向用户显示为“当前确认快照”或“订单信息总览”,不显示为 `order_overview` 或 V4 payload。
- `next_v4_action` 面向用户显示为“下一步处理”,例如“下一步:确认房型与日期”“下一步:复核付款凭证”;不直接展示 `action_type``action_status``card_id` 等内部 code。
- `related_source_messages[]` 面向用户显示为“关联来源邮件”,不直接展示 SourceMessage 模型名或内部 SourceMessage ID需要正文时仍通过 SourceMessage conversation 权限链路读取。
- `v4_order_tasks[]` 面向用户显示为“处理记录”或“来源邮件处理记录”不显示为“V4 时间线”。`cards[]` 面向用户显示为事项状态摘要,不显示为“卡片安全摘要”。
- 订单详情页可以显示业务状态摘要,例如预订基础信息、房型与日期、付款凭证、跟进事项、房表事项的状态;但不在该页展示可编辑表单、确认按钮或复核提交入口。
- 技术 ID、`order_task_id``card_id``source_message_id``version``route_code`、payload 字段名和内部状态码默认不得出现在订单详情主信息层级;确需排查时只能放入折叠区或受控调试模式。
安全边界:
- 订单详情 `order_overview` 只展示已确认 V4 卡片派生的订单事实,不把未确认 AI 建议或 display payload 当成订单事实。
- 订单详情不得直接返回或展示邮件正文、HTML、附件 URL、AI 原始 payload、raw evidence、PMS 原始响应、Secret、Token 或跨酒店数据。
- 本节只约束展示和信息层级,不改变订单详情接口作为订单总览页的定位,也不改变任务卡确认、复核、审计或 SourceMessage 读取链路。
### 9.2 同一本地订单下多个订单任务
如果多个 SourceMessage 或多个回调包绑定到同一本地订单:

View File

@@ -69,6 +69,18 @@
| `POST /api/reservation/invoices/manual-generations` | `FRONTEND_USER` | 已实现 M009 CP2强制 Bearer 登录 + `RESERVATION_INVOICE_GENERATE` + 酒店访问权;`task_id` / `order_id` 可为空,传入时反查对象所属酒店 | 保持登录 + `RESERVATION_INVOICE_GENERATE` + 酒店访问权;后续如增加历史列表或预填接口需单独登记权限 | 写业务审计,记录来源类型、模板版本、生成结果摘要;生成失败写入生成记录安全错误摘要 |
| `POST /api/reservation/rooming-lists/generations` | `FRONTEND_USER` | 已实现 M010 CP1multipart 上传来源名单并直接下载 `.xlsx`;已在 multipart 参数绑定前前置校验登录和生成权限 | 登录 + `RESERVATION_ROOMING_LIST_GENERATE` + 酒店访问权;第一版不落库、不上传 OSS | CP1 不落生成记录表;错误响应不得记录完整名单和证件信息,后续若增加历史记录再补业务审计 |
### 3.2.1 V4 工作台、订单详情和任务详情页展示层技术信息边界
2026-07-21 已确认:`/reservation/tasks``/reservation/orders/{orderId}``/reservation/order-tasks/{orderTaskId}` 默认是普通酒店员工使用的预订事项工作台、订单总览页和订单事项办理页,不是开发 / 测试调试页。`GET /api/reservation/workbench-items``GET /api/reservation/order-tasks``GET /api/reservation/orders/{orderId}``GET /api/reservation/order-tasks/{orderTaskId}` 为了路由、筛选、并发、提交和排查可以返回 `item_type``order_task_status``card_status``order_id``order_task_id``card_id``source_message_id``version``fields[]``write_target``availability` 等稳定技术字段,但前端普通业务页面不得把这些字段作为主标题、默认筛选文案、顶部摘要、订单总览或业务事项正文直接展示。
展示规则:
- 默认主信息层级使用业务文案,例如“待处理预订事项”“预订事项”“订单总览”“当前确认快照”“下一步处理”“关联来源邮件”“处理记录”“处理预订事项”“预订基础信息”“房型与日期”“付款凭证”“跟进事项”“房表事项”“来源邮件”。
- 普通筛选使用“全部”“待处理”“需要复核”“已完成”“来源通知”等业务文案;`item_type``order_task_status``card_status``route_code``system_process_category` 等技术筛选只能放在高级筛选或受控调试模式。
- 技术 ID、JSON Pointer、payload 字段名、adapter 诊断、内部状态码和模型名只能用于内部逻辑;确需给开发 / 测试排查时,放在折叠区、高级筛选或受控调试模式。
- 技术折叠区或调试模式仍不得展示邮件正文、HTML、附件 URL、AI 原始 payload、raw evidence、PMS 原始响应、Secret、Token、外部签名 URL 或跨酒店数据。
- 如果后续需要单独的 Debug 视图或更完整的技术诊断页,应按 `FRONTEND_DEBUG` 分类、环境开关、专门权限和调试审计重新登记,不能把普通业务页变成调试页。
### 3.3 来源邮件接口
| 接口 / 能力 | 分类 | 当前管控 | 目标管控 | 审计要求 |