再次提交一下代码
This commit is contained in:
@@ -219,7 +219,7 @@ SOURCE_MESSAGE_READ
|
||||
// 邮件来源记录读取权限:允许查看列表和摘要详情
|
||||
|
||||
SOURCE_MESSAGE_ORIGINAL_READ
|
||||
// 邮件原文读取权限:允许读取正文、HTML、正文图片 URL 和附件 URL
|
||||
// 邮件原文读取附加权限:需叠加 SOURCE_MESSAGE_READ,允许读取正文、HTML、正文图片 URL 和附件 URL
|
||||
```
|
||||
|
||||
## 6. Success Metrics
|
||||
@@ -233,7 +233,7 @@ SOURCE_MESSAGE_ORIGINAL_READ
|
||||
|
||||
- 重复投递去重成功率:重复外部邮件不会重复创建 SourceMessage。
|
||||
- 查询可用性:可以按时间、状态、外部邮件 ID、外部邮件链 ID 查询本项目已接收邮件。
|
||||
- 原文读取可控性:只有具备 `SOURCE_MESSAGE_ORIGINAL_READ` 权限的调用方可以读取原文和媒体 URL。
|
||||
- 原文读取可控性:只有同时具备 `SOURCE_MESSAGE_READ` 和 `SOURCE_MESSAGE_ORIGINAL_READ` 权限的调用方可以读取原文和媒体 URL。
|
||||
|
||||
### Guardrail Metrics
|
||||
|
||||
@@ -310,10 +310,10 @@ so that 后续业务功能可以在需要时展示完整邮件上下文
|
||||
|
||||
Acceptance Criteria:
|
||||
|
||||
- Given 调用方具备 `SOURCE_MESSAGE_ORIGINAL_READ` 权限
|
||||
- Given 调用方同时具备 `SOURCE_MESSAGE_READ` 和 `SOURCE_MESSAGE_ORIGINAL_READ` 权限
|
||||
When 调用邮件原文读取接口
|
||||
Then 返回 `textBody`、`htmlBody`、`inlineImages[]`、`attachments[]`
|
||||
- Given 调用方不具备 `SOURCE_MESSAGE_ORIGINAL_READ` 权限
|
||||
- Given 调用方不具备 `SOURCE_MESSAGE_READ` 或 `SOURCE_MESSAGE_ORIGINAL_READ` 任一权限
|
||||
When 调用邮件原文读取接口
|
||||
Then 系统拒绝访问
|
||||
- Given 原文接口返回 `htmlBody`
|
||||
@@ -347,9 +347,9 @@ Acceptance Criteria:
|
||||
### Dependencies
|
||||
|
||||
- AgentBus payload 字段稳定性:依赖 `source.external_message_id`、`source.external_conversation_id`、`body.text`、`body.html`、`inline_images[]`、`attachments[]`。
|
||||
- 权限体系:需要后续确认 `SOURCE_MESSAGE_READ` 和 `SOURCE_MESSAGE_ORIGINAL_READ` 如何落到角色。
|
||||
- 审计体系:需要记录原文读取行为,具体表结构可与平台审计能力统一设计。
|
||||
- HTML 安全展示:前端展示 HTML 前必须 sanitize,后端接口文档也要明确该约束。
|
||||
- 权限体系:已落地 `SOURCE_MESSAGE_READ` 和 `SOURCE_MESSAGE_ORIGINAL_READ`,内置角色映射以 M003 和当前代码为准。
|
||||
- 审计体系:原文读取已使用 `platform_source_message_original_access_audit` 独立记录。
|
||||
- HTML 安全展示:后端已返回 `html_body_sanitized` / `html_render_mode`,前端生产展示优先使用清洗字段。
|
||||
|
||||
### Risks & Mitigations
|
||||
|
||||
@@ -358,7 +358,7 @@ Acceptance Criteria:
|
||||
- Risk:重复投递 payload 内容不同,覆盖原始事实会破坏追溯。
|
||||
Mitigation:幂等命中后不覆盖原 payload,差异通过安全摘要或后续 attempt 记录表达。
|
||||
- Risk:邮件原文或媒体 URL 在列表、日志、错误响应中过度暴露。
|
||||
Mitigation:列表只返回安全摘要;原文接口独立权限;日志和错误响应脱敏。
|
||||
Mitigation:列表只返回安全摘要;原文接口必须同时校验摘要读取和原文读取权限;日志和错误响应脱敏。
|
||||
- Risk:业务模块直接依赖 AgentBus DTO。
|
||||
Mitigation:业务模块只依赖 SourceMessage ID 和平台接口;AgentBus DTO 只留在 `integrations.messaging.agentbus`。
|
||||
- Risk:HTML 原文直接渲染带来安全问题。
|
||||
@@ -368,10 +368,10 @@ Acceptance Criteria:
|
||||
|
||||
| 问题 | 负责人 | 状态 |
|
||||
| --- | --- | --- |
|
||||
| 第一个 checkpoint 是否直接实现 `/api/source-messages/{id}/original` 原文读取接口,还是只写接口契约并后置实现? | 产品 / 后端 | Open |
|
||||
| `SOURCE_MESSAGE_READ` 和 `SOURCE_MESSAGE_ORIGINAL_READ` 第一阶段如何映射到角色? | 产品 / 后端 | Open |
|
||||
| 原文读取审计是否使用独立表,还是复用后续统一审计能力? | 后端 | Open |
|
||||
| HTML sanitize 主要在前端完成,还是后端也提供清洗后的安全 HTML? | 前端 / 后端 | Open |
|
||||
| 第一个 checkpoint 是否直接实现 `/api/source-messages/{id}/original` 原文读取接口,还是只写接口契约并后置实现? | 产品 / 后端 | Closed:已实现单封原文读取,并补充会话完整正文接口。 |
|
||||
| `SOURCE_MESSAGE_READ` 和 `SOURCE_MESSAGE_ORIGINAL_READ` 第一阶段如何映射到角色? | 产品 / 后端 | Closed:内置 `RESERVATION_OPERATOR` 含原文读取权限,`RESERVATION_VIEWER` 仅含安全摘要读取权限;系统管理员拥有全部权限。 |
|
||||
| 原文读取审计是否使用独立表,还是复用后续统一审计能力? | 后端 | Closed:使用 `platform_source_message_original_access_audit` 独立记录原文读取审计。 |
|
||||
| HTML sanitize 主要在前端完成,还是后端也提供清洗后的安全 HTML? | 前端 / 后端 | Closed:后端返回 `html_body_sanitized` / `html_render_mode`,前端生产展示优先使用清洗字段。 |
|
||||
| 是否需要第一阶段支持按正文摘要关键字搜索,还是只按 ID、时间、状态、邮件链查询? | 产品 | Open |
|
||||
|
||||
## PRD Self-Assessment
|
||||
|
||||
@@ -263,7 +263,7 @@ platform.security
|
||||
| 权限码 | 中文说明 |
|
||||
| --- | --- |
|
||||
| `SOURCE_MESSAGE_READ` | 查看来源消息安全摘要 |
|
||||
| `SOURCE_MESSAGE_ORIGINAL_READ` | 查看来源消息原文和媒体 URL |
|
||||
| `SOURCE_MESSAGE_ORIGINAL_READ` | 查看来源消息原文和媒体 URL;必须叠加 `SOURCE_MESSAGE_READ` 使用 |
|
||||
| `RESERVATION_ORDER_READ` | 查看订单 |
|
||||
| `RESERVATION_TASK_READ` | 查看任务 |
|
||||
| `RESERVATION_TASK_EDIT` | 保存任务草稿 |
|
||||
@@ -289,7 +289,7 @@ platform.security
|
||||
中文说明:
|
||||
|
||||
- `SYSTEM_ADMIN` 用于系统初始化和调试能力,第一版可访问所有启用酒店。
|
||||
- `RESERVATION_OPERATOR` 需要查看邮件原文和附件外链来处理任务,因此第一版包含 `SOURCE_MESSAGE_ORIGINAL_READ`。
|
||||
- `RESERVATION_OPERATOR` 需要查看邮件原文和附件外链来处理任务,因此第一版同时包含 `SOURCE_MESSAGE_READ` 和 `SOURCE_MESSAGE_ORIGINAL_READ`。
|
||||
- `RESERVATION_VIEWER` 只读查看订单、任务、审计和来源消息安全摘要;不允许保存、确认、执行 OPERA 模拟,也不允许访问 Debug EML。
|
||||
- `SYSTEM_DEBUG_EML_RUN` 第一版只授予 `SYSTEM_ADMIN`,避免普通业务用户触发 SuperAgent 调试链路。
|
||||
- 启动初始化会按上表同步内置角色权限矩阵:矩阵中新增的权限会补齐,矩阵中移除的旧关系会清理。后续如果管理后台允许人工改内置角色,需要先重新确认“代码矩阵”和“后台配置”的优先级。
|
||||
@@ -477,9 +477,9 @@ Authorization: Bearer <access_token>
|
||||
|
||||
后续强制鉴权时应按接口分批启用:
|
||||
|
||||
1. 查询类接口先要求登录和酒店权限。
|
||||
1. 查询类接口先要求登录和酒店权限。已完成:Reservation / SourceMessage 第一批只读查询。
|
||||
2. 写操作再要求具体操作权限。
|
||||
3. 邮件原文读取迁移到 `SOURCE_MESSAGE_ORIGINAL_READ`。
|
||||
3. 邮件原文读取迁移到 `SOURCE_MESSAGE_READ` + `SOURCE_MESSAGE_ORIGINAL_READ`。已完成:`/api/source-messages/{id}/original` 和 `/api/source-messages/{id}/conversation`。
|
||||
4. OPERA 模拟迁移到 `RESERVATION_OPERA_SIM_EXECUTE`。
|
||||
5. 审计查询迁移到 `RESERVATION_AUDIT_READ`。
|
||||
|
||||
@@ -519,7 +519,7 @@ Authorization: Bearer <access_token>
|
||||
| 用户最终确认任务 | 有 token 时记录当前用户;无 token 时继续兼容本地占位 |
|
||||
| Fallback 转换 | 有 token 时记录当前用户 |
|
||||
| OPERA 模拟执行 / 重试 | 有 token 时记录当前用户 |
|
||||
| 邮件原文读取 | 后续从 access-key 迁移到 `SOURCE_MESSAGE_ORIGINAL_READ` 权限 |
|
||||
| 邮件原文读取 | 已从 access-key 迁移到 `SOURCE_MESSAGE_READ` + `SOURCE_MESSAGE_ORIGINAL_READ` 权限,并记录当前登录用户稳定 ID |
|
||||
|
||||
第一期不强制改完所有业务审计 actor,但需要提供可复用的当前用户上下文接口。
|
||||
|
||||
@@ -602,7 +602,7 @@ AUTH_TEST_SESSION_TTL_MINUTES=720
|
||||
|
||||
- Reservation 查询接口校验登录和酒店权限。
|
||||
- Reservation 写接口校验具体权限。
|
||||
- SourceMessage 原文读取迁移到 `SOURCE_MESSAGE_ORIGINAL_READ`。
|
||||
- SourceMessage 原文读取迁移到 `SOURCE_MESSAGE_READ` + `SOURCE_MESSAGE_ORIGINAL_READ`。已完成 CP2,后续保持回归。
|
||||
- 审计 actor 全面迁移到当前用户。
|
||||
|
||||
### CP4:管理后台接口
|
||||
|
||||
@@ -840,7 +840,7 @@ GET /api/admin/audits
|
||||
|
||||
- Reservation 查询接口强制登录和酒店权限。
|
||||
- Reservation 写接口强制具体操作权限。
|
||||
- SourceMessage 原文读取迁移到 `SOURCE_MESSAGE_ORIGINAL_READ`。
|
||||
- SourceMessage 原文读取迁移到 `SOURCE_MESSAGE_READ` + `SOURCE_MESSAGE_ORIGINAL_READ`。已通过接口权限与酒店隔离收口 CP2 完成。
|
||||
- 业务审计 actor 全面迁移到当前用户。
|
||||
|
||||
该阶段和 M003 CP3、M005 酒店上下文统一收口有关,建议单独拆文档和任务。
|
||||
|
||||
Reference in New Issue
Block a user