回填V4单卡可操作态smoke结果
This commit is contained in:
@@ -674,6 +674,7 @@ Payment 卡附件展示规则:
|
||||
- 后端已在 Payment 卡 `display_payload.payment_attachments[]` 中返回安全摘要,由 `attachment_ids[]` 匹配当前触发 SourceMessage 的包级附件或同酒店 SourceMessage 媒体摘要生成。匹配只认包级附件 ID / `external_media_id`,不认本系统媒体表内部 row ID,也不按文件名猜测。字段为 `attachment_id`、`file_name`、`content_type`、`size_bytes`、`is_image`、`preview_available`、`download_available`,可选 `external_media_id` / `unavailable_reason_code`;不得包含 `externalUrl`、OSS URL、签名参数或附件原始二进制。
|
||||
- 图片判断以 `content_type` 以 `image/` 开头为主;图片在 Payment 卡内展示缩略图,点击后打开大图预览。缩略图和大图实际 URL 不从 `GET /api/reservation/order-tasks/{orderTaskId}` 返回,前端必须在具备 `SOURCE_MESSAGE_READ + SOURCE_MESSAGE_ORIGINAL_READ` 时调用 `GET /api/source-messages/{sourceMessageId}/conversation`,定位当前 SourceMessage 后按 `external_media_id` / `attachment_id` 匹配对应附件。
|
||||
- 非图片附件统一显示文件列表,至少展示文件名、类型和大小,并提供下载动作;第一版不在 Payment 卡内嵌 PDF、Word、Excel 或压缩包预览。
|
||||
- 2026-07-24 已确认:用户触发图片预览或文件下载时,前端 DOM 的 `img[src]` 或 `a[href]` 可以临时持有 conversation 接口返回的受权限附件 URL。该允许范围只覆盖当前用户、当前 SourceMessage、被 Payment `attachment_ids[]` 引用的附件和当前页面渲染 / 下载动作;V4 task detail API、页面可见文本、确认 payload、日志、错误上报、URL query 和 localStorage 仍不得暴露附件 URL。
|
||||
- 入站 `PAYMENT.attachment_ids[]` 无法匹配同包 `source_message.attachments[].id` 时,不创建用户可处理 Payment 卡,只写 `adapter_contract_error` transition 或按 S10 / 技术异常规则处理。只有 `attachment_ids[]` 已合法匹配、但用户缺少原文读取权限、会话接口失败、附件 URL 缺失或媒体预览链路暂不可用时,Payment 卡才展示安全摘要和“无法预览 / 无法下载”的状态,不应把附件 URL 或错误详情暴露给普通用户。
|
||||
- 前端不得把附件外链写入日志、错误上报、URL query、localStorage 或确认 payload;Payment 第一版确认卡片时只提交 `version` 和必要审计说明,不提交 `attachment_ids[]`、附件 URL 或完整附件对象。后续如需支持人工选择 / 增删付款凭证附件,必须另行定义数组编辑契约和后端审计口径。
|
||||
|
||||
|
||||
@@ -93,6 +93,7 @@ Reservation V4 还必须满足 `docs/project/ai-nses-project-overlay.md` 的项
|
||||
- 图片附件在卡片内展示缩略图,点击打开大图预览。
|
||||
- 非图片附件统一显示文件列表和下载动作,不在卡片内嵌 PDF、Word、Excel 或压缩包预览。
|
||||
- 图片预览和非图片下载的真实 URL 只能通过 `GET /api/source-messages/{sourceMessageId}/conversation` 原文权限链路取得。
|
||||
- 已确认允许用户触发图片预览或文件下载时,前端 DOM 的 `img[src]` 或 `a[href]` 临时持有 conversation 接口返回的受权限附件 URL;该 URL 仍不得出现在 V4 task detail API、页面可见文本、确认 payload、日志、URL query、localStorage 或错误上报中。
|
||||
- Payment 确认只提交 `version`,不提交 `attachment_ids[]`、附件 URL 或完整附件对象。
|
||||
|
||||
### 7.3 Rooming List
|
||||
@@ -138,6 +139,7 @@ Reservation V4 还必须满足 `docs/project/ai-nses-project-overlay.md` 的项
|
||||
- 造数应使用唯一 runId,不复用旧 SourceMessage 时间线导致阻塞误判。
|
||||
- 为了让目标业务卡可操作,可以先确认同 order task 内 Basic Information;目标卡本身不得提前确认。
|
||||
- 每条样例应记录 orderId、orderTaskId、sourceMessageId、目标 cardId、version、卡片状态、允许动作和安全扫描结果。
|
||||
- 2026-07-24 测试机已完成 6 条 fresh V4 order task 数据集,覆盖 Basic、Room Information、Trace General、Trace Extra Bed Review、Rooming List 和 Payment;只执行造数和必要 Basic 前置确认,未确认目标业务卡、未执行 review-resolution、未 ack。
|
||||
|
||||
## 8. 接口或交互契约
|
||||
|
||||
@@ -176,15 +178,33 @@ Reservation V4 还必须满足 `docs/project/ai-nses-project-overlay.md` 的项
|
||||
| REVIEW_REQUIRED 原卡复核、按钮显示“确认卡片” | Done | Done | Passed | V4 领域模型、前后端协作文档 | Implemented |
|
||||
| SourceMessage Display 底部展示、正文默认折叠 | Done | Done | Passed | V4 领域模型、安全边界、前后端协作文档 | Implemented |
|
||||
| V4 工作台 / 订单详情 / 任务详情普通员工用户化展示 | N/A | Done | Passed | V4 领域模型、前后端协作文档 | Implemented |
|
||||
| 单卡可操作态测试数据 | N/A | N/A | Pending | 本文 | Approved |
|
||||
| 单卡可操作态测试数据 | N/A | N/A | Passed | 本文第 9.1 节 | Implemented |
|
||||
| 模板化 Spec 对齐 | N/A | N/A | N/A | 本文、AI-NSES Overlay、项目索引 | Implemented |
|
||||
|
||||
### 9.1 单卡可操作态 Smoke 回填
|
||||
|
||||
2026-07-24 测试机数据集 `M002-CARD-DEMO-1784726894698` 已完成。该数据集用于演示和验证每类目标业务卡处于单卡可操作态,目标卡均未提前确认。
|
||||
|
||||
| 样例 | orderId | orderTaskId | sourceMessageId | targetCardId | 目标状态 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| BASIC | `2079921478960455682` | `2079921478968844290` | `2079921475227525122` | `2079921478994010113` | `PENDING_CONFIRM`,`confirmable=true` |
|
||||
| ROOM | `2079921487558778881` | `2079921487571361794` | `2079921484266250241` | `2079921487625887745` | `PENDING_CONFIRM`,`confirmable=true` |
|
||||
| TRACE_GENERAL | `2079921506877743106` | `2079921506886131713` | `2079921501228015618` | `2079921506915491842` | `PENDING_CONFIRM`,`confirmable=true` |
|
||||
| TRACE_EXTRA_BED_REVIEW | `2079921521973043201` | `2079921521985626113` | `2079921516902129666` | `2079921522035957761` | `REVIEW_REQUIRED`,`reviewable=true` |
|
||||
| ROOMING_LIST | `2079921534555955202` | `2079921534576926722` | `2079921531255037954` | `2079921534610481153` | `PENDING_CONFIRM`,`confirmable=true` |
|
||||
| PAYMENT | `2079921555439394817` | `2079921555447783426` | `2079921543749869569` | `2079921555477143553` | `PENDING_CONFIRM`,`confirmable=true` |
|
||||
|
||||
写操作范围:只执行 ROOM、TRACE_GENERAL、TRACE_EXTRA_BED_REVIEW、ROOMING_LIST、PAYMENT 五条样例的 Basic Information 前置确认,请求体均为 `{ "version": 0 }`;未确认目标业务卡、未执行复核提交、未确认来源通知。
|
||||
|
||||
安全结论:6 条 V4 task detail API 均未返回 `ai_payload_json`、`raw_evidence`、`html_body`、`text_body`、`target_order`、附件 URL、`externalUrl`、`download_url` 或 `signedUrl`;页面可见文本也未展示上述敏感字段或 URL。Payment 页面在图片预览 / PDF 下载能力中,DOM 属性出现 conversation 接口返回的受权限附件 URL,按第 7.2 节口径允许,不视为 V4 task detail API 或页面可见文本泄漏。
|
||||
|
||||
## 10. 验收标准
|
||||
|
||||
- Given 一个新的 V4 需求改变业务卡、接口、页面交互或安全边界,When 分派给后端 / 前端 / 测试 agent,Then 必须先引用本文或后续 Change Request,并列出需求追踪表。
|
||||
- Given 一个普通酒店员工打开任务列表、订单总览或订单事项办理页,When 页面默认加载,Then 不应在主信息层级展示 V4 模型、JSON Pointer、payload、内部 ID、route 或 adapter 诊断。
|
||||
- Given Room Information 存在多个 `room_items[]`,When 打开 V4 任务详情,Then API 和页面都应展示多行房型,不把组合 code 当成单个合法房型。
|
||||
- Given Payment 卡引用图片和非图片附件,When 打开 V4 任务详情,Then 任务详情 API 只返回附件安全摘要,前端通过 SourceMessage 原文权限链路展示图片预览和非图片下载。
|
||||
- Given 用户触发 Payment 图片预览或非图片下载,When 浏览器渲染预览或下载入口,Then DOM `src/href` 可以临时使用 conversation 接口返回的受权限附件 URL,但页面可见文本、V4 task detail API、确认 payload、日志和本地存储仍不得暴露该 URL。
|
||||
- Given Rooming List 卡被确认且同订单 Group 有可更新 Room Information 快照,When 刷新详情,Then Group Booking Status 显示 `DEF-Definite` 并可查到自动 DEF 审计。
|
||||
- Given Trace 卡确认或复核成功,When 刷新详情,Then `fields[].value` 显示已确认值,旧 validation errors 清空。
|
||||
|
||||
@@ -193,7 +213,7 @@ Reservation V4 还必须满足 `docs/project/ai-nses-project-overlay.md` 的项
|
||||
- 单元测试:本文不新增代码测试;后续代码变更仍按对应前后端模块测试要求执行。
|
||||
- 集成测试:本文不改变接口;已有 smoke 已覆盖主要 V4 卡片链路。
|
||||
- 手工验证:本次文档 checkpoint 使用 `git diff --check` 验证 Markdown 格式。
|
||||
- 后续 smoke:需要测试 agent 继续补“单卡可操作态”数据集并回填结果。
|
||||
- 后续 smoke:单卡可操作态数据集已回填;后续如需要可继续用 fresh runId 造演示数据,避免复用旧 SourceMessage 时间线造成阻塞误判。
|
||||
|
||||
## 12. 未确认问题
|
||||
|
||||
|
||||
Reference in New Issue
Block a user