实现酒店上下文单酒店收口
This commit is contained in:
@@ -43,7 +43,7 @@
|
||||
- 所有 Secret 都通过环境变量、部署平台 Secret 或密钥管理系统注入,不写入仓库、镜像、前端环境变量或普通配置文件。
|
||||
- 生产默认不保存 AgentBus raw frame 样本。
|
||||
- AgentBus 实时链路开启前,已经确认 WebSocket URL、Token、Bot Address、外部消息幂等键和断线重连语义。
|
||||
- S000/S999 特殊入口结果上线前,必须确认 `AGENTBUS_DEFAULT_HOTEL_ID` 已配置且对应 SourceMessage Inbox 入库酒店一致。
|
||||
- S000/S999 特殊入口结果上线前,必须确认 `platform_hotel` 中存在且只存在一家 `ACTIVE` 酒店,并且已有 SourceMessage Inbox 数据的 `hotel_id` 与该酒店一致。
|
||||
- 原文读取接口开启前,已经确认谁可以使用、在哪些场景使用、如何轮换访问 key。
|
||||
- 日志采集、错误响应和监控面板都不会展示邮件正文、HTML、附件 URL、Token、Cookie、客户姓名、邮箱、电话或支付信息。
|
||||
|
||||
@@ -77,6 +77,10 @@
|
||||
- `access_token` 只在登录成功响应中返回一次;前端只能放 `sessionStorage`,不能放 `localStorage`、URL、日志或错误上报。
|
||||
- 当前第一版只做可选 Bearer token 解析,现有 Reservation / SourceMessage 业务接口仍不强制登录。
|
||||
- `/api/auth/me` 和 `/api/auth/logout` 需要 `Authorization: Bearer <access_token>`。
|
||||
- 初始管理员 bootstrap 只以“启用状态超级管理员”为阻断条件;如果测试库或生产库只剩禁用超级管理员,应通过环境变量恢复一个可登录超级管理员后再排查账号运营问题。
|
||||
- 内置角色权限矩阵在启动时按代码同步,矩阵移除的旧权限关系会被清理;管理后台上线前不要手工给内置角色追加临时权限作为长期方案。
|
||||
- 普通用户默认酒店由后端写入逻辑和数据库唯一索引共同保持单默认;V10 migration 会在建约束前把历史重复默认清理为每个用户保留 id 最大的一条。
|
||||
- 单酒店阶段系统酒店由 `platform_hotel` 唯一 `ACTIVE` 酒店决定;V12 migration 会通过唯一索引阻止第二家 `ACTIVE` 酒店。上线前如果已有多家 `ACTIVE` 酒店,必须先调整数据,否则迁移或运行时解析会失败。
|
||||
- 管理后台还未上线时,不要把数据库手工改用户、角色、权限作为常规运营手段。
|
||||
|
||||
### 3.3 SourceMessage
|
||||
@@ -104,7 +108,7 @@
|
||||
| `AGENTBUS_CONNECT_TIMEOUT` | 否 | 连接超时,默认 `15s`。 |
|
||||
| `AGENTBUS_MAX_FRAME_BYTES` | 否 | 单个入站 frame 最大字节数,默认 `1048576`。 |
|
||||
| `AGENTBUS_CAPTURE_ENABLED` | 否 | 是否把业务 frame 写入 SourceMessage Inbox。 |
|
||||
| `AGENTBUS_DEFAULT_HOTEL_ID` | 否 | AgentBus 未提供酒店上下文时的默认业务上下文。 |
|
||||
| `AGENTBUS_DEFAULT_HOTEL_ID` | 否 | 旧兼容变量;M005 后 AgentBus 捕获不再使用它作为运行时酒店来源,系统酒店来自 `platform_hotel` 唯一 `ACTIVE` 酒店。 |
|
||||
|
||||
注意:
|
||||
|
||||
@@ -129,8 +133,8 @@
|
||||
- 查询接口和任务结果通知接口使用同一套 Header、签名串、secret、timestamp 和 nonce 规则。
|
||||
- SuperAgent 侧也需要配置同一个 secret,并按原始请求体计算 SHA-256。
|
||||
- 当前第一版只支持一个 HMAC secret,secret 轮换需要协调部署窗口。
|
||||
- 任务结果通知接口 JSON body 里的 `source_message_id` 是外部来源消息 ID,对应 AgentBus `source.external_message_id`;正式 JSON 请求必须带 `hotel_id`,后端用 `hotel_id + provider + channel + external_message_id` 反查内部 SourceMessage Inbox。
|
||||
- 任务结果通知接口也支持 `text/plain` 的 `S000,source_message_id` 和 `S999,source_message_id`。这类请求不在 body 里带 `hotel_id`,后端使用 `AGENTBUS_DEFAULT_HOTEL_ID` 查询 SourceMessage Inbox。
|
||||
- 任务结果通知接口 JSON body 里的 `source_message_id` 是外部来源消息 ID,对应 AgentBus `source.external_message_id`;SuperAgent 默认不传 `hotel_id`,后端用系统酒店 `hotel_id + provider + channel + external_message_id` 反查内部 SourceMessage Inbox。
|
||||
- 任务结果通知接口也支持 `text/plain` 的 `S000,source_message_id` 和 `S999,source_message_id`。这类请求不在 body 里带 `hotel_id`,后端同样使用平台酒店表唯一 `ACTIVE` 酒店查询 SourceMessage Inbox。
|
||||
- `application/json` 和 `text/plain` 都必须使用原始请求体计算 SHA-256 并参与 HMAC 签名;SuperAgent 侧不能签名格式化后的 JSON 或二次拼接字符串。
|
||||
- S000/S999 会创建 `SOURCE_MESSAGE_ONLY` 只读特殊任务和隐藏技术订单,任务列表可见,订单列表不可见,不允许编辑、确认、转换订单或执行 OPERA。
|
||||
- SuperAgent 查询上下文接口中的 `source_message_id`、`source_event_index` 第一版仅兼容接收,不参与查询和校验;不要依赖它们限制查询范围。
|
||||
@@ -196,6 +200,7 @@
|
||||
当前 M003 登录权限相关 migration:
|
||||
|
||||
- `server/src/main/resources/db/migration/V9__create_identity_access_hotel_menu.sql`
|
||||
- `server/src/main/resources/db/migration/V10__enforce_single_default_user_hotel.sql`
|
||||
|
||||
上线前确认:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user