Files
kra-new/docs/BUSINESS_OA.md
T

45 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 商务与 OA 对接
商务应用负责展示和发起申请,OA 负责商务账号管理、SDK 绑定审核、渠道激活审核与渠道操作。OA 使用 `oa/server`,不依赖尚未迁移业务的 `oa-new`。
## 部署顺序与连接
1. 先升级新商务,完成自动迁移和原商务数据迁移。新商务用户表为 `sys_users`,角色表为 `sys_authorities`,用户角色关系为 `sys_user_authority`。本次新增用户备注列及激活接口权限迁移。
2. OA 的 `db-list` 中保留连接别名 `shangwu`,把该连接的数据库指向**迁移后的新商务主库**。`lx`、`hw`、`yq` 仍指向对应 SDK 数据库。OA 启动会检查 `shangwu.sys_users`,避免误连旧库。
3. 新商务 `data.database_list` 的 `oa` 连接指向 OA 主库;`lx`、`hw`、`yq` 指向对应 SDK 数据库。新商务只读取这些外部表,不创建它们。
4. 两边设置同一服务间密钥。OA 配置使用 `service-credentials.business-integration-key`;新商务可使用环境变量 `KRA_BUSINESS_OA_KEY`,或配置文件中的 `business_oa.key`。密钥只保存在部署环境,不提交版本库。
5. 新商务设置 `KRA_BUSINESS_OA_URL`(或 `business_oa.url`),值为 OA 服务地址,包含 OA 配置的 `router-prefix`,末尾无需添加接口路径。例如 OA 前缀为 `/api` 时,基地址以 `/api` 结尾。
6. 升级 OA。启动迁移新增 OA 激活申请字段,并在已配置的三个 SDK 库创建 `tab_promote_business_event`。部署账号需要对应的建表/改表权限。应用不会把旧库用户字段自动改造成新商务结构。
## 接口与行为
| 功能 | 新商务接口 | OA 行为 |
| --- | --- | --- |
| 激活列表 | `GET /sw/promoteActivePool/bindList` | 读取 OA 的绑定记录,按当前用户已通过的 SDK 绑定限定范围 |
| 激活流水 | `GET /sw/promoteActivePool/bindSpendDetail` | 绑定起算至实际解绑;达标不中止累计;跨平台关联渠道来自申请时的快照,流水和注册读取 OA 使用的 SDK 库 |
| 可申请渠道 | `GET /sw/promoteActivePool/pool` | 仅可认领渠道,状态来自 SDK 库;不返回联系方式、注册详情、充值金额或充值详情 |
| 本人商务选项 | `GET /sw/promoteActivePool/options` | 仅本人审核通过的 SDK 商务;申请平台必须匹配 |
| 申请 | `POST /sw/promoteActivePool/apply` | 后端转发到 `POST /internal/business/activation/apply`,再次校验申请人及其绑定权限 |
| 流失记录 | `GET /sw/promoteActivePool/churn` | 按 SDK 渠道换绑事件展示离开原商务的一侧;从池返回不新增回流记录 |
| 工作台 | 原工作台概览接口 | 锁定/解除合作按事件发生时间、发生时归属商务统计渠道数,解锁不抹去历史 |
服务间申请接口以 HMAC-SHA256 校验方法、完整路径、时间戳和请求体,允许前后五分钟时钟偏差。`X-Business-Timestamp` 为 Unix 秒,`X-Business-Signature` 为十六进制签名。签名串为 `METHOD\nPATH\nTIMESTAMP\nBODY`。业务 ID 使用十进制 JSON 字符串。密钥未配置时拒绝服务间申请。
OA 商务创建/编辑兼容旧请求的 `roleId` 字段,但忽略该值,按 `sys_authorities.business_level` 唯一解析角色。新增账号使用新商务自增 ID、UUID、密码更新时间和默认偏好;锁定同时设置 `business_status` 与 `enable`。调整等级会校验整棵子树并同步角色,不允许把已有 SDK 绑定的账号变成非三级商务。
OA SDK 绑定审核继续使用原接口。审批遇到重复 SDK 绑定时返回已有账号提示,调用方确认后需传 `confirmDuplicate: true`。通过、驳回、解绑与新商务申请共用平台商务键锁。
OA 激活审核接口新增 `bindAt`(`YYYY-MM-DD`,省略时取审核当天)、`reason`(驳回必填)及 `restoreCooperation`(明确确认恢复合作时传 `true`)。审核通过只进入观察期,不改变渠道商务归属;累计流水达标后才变更主渠道及下级的商务归属,并从池中移除关联渠道。`ownershipPending` 表示达标后的跨库归属同步尚待完成;定时扫描会重试,同步成功前关联渠道仍保持认领锁定。观察期内主动解绑或到期未达标,只解除认领,不改渠道归属;已达标记录保持原 OA 规则,不能通过观察期解绑接口退回。
绑定扫描只在观察期内判定达标,迟到的观察期外流水不能使过期申请达标;达标后的展示统计继续累计。外部换绑会结束原激活关系,新商务读取流水时也会依据换绑事件截断,防止读到新归属期间数据。
累计注册统计仅包含绑定期间新增的主账号;身份证去重开启时跨平台按非空实名身份证合并,缺实名不计入。流水不受身份证去重影响。
免预警名单自动移出依据 OA 实际入池记录,避免本地流水不足却被 OA 豁免的渠道被误移出。预警列表的实时流失风险指标仍按其原型定义计算,历史预警快照不更改。
## 历史与校验
渠道事件从本版本部署后开始记录。SDK 事件表保存首次启用时间;工作台查询或同比区间早于该时间时显示历史不完整,而不把缺失记录当成真实零值。现有 SDK 表仅保留当前状态,不能可靠还原过去每次锁定/解除合作与人工换绑,因此不以当前状态伪造历史事件。既有激活记录继续可读;没有关联快照的历史申请按原平台渠道统计。
联调应覆盖:新建商务登录、锁定/解锁、SDK 绑定冲突确认、申请→审核→观察期→达标→归属同步、驳回重提、达标后继续累计、到期解绑、跨库暂时不可用后的同步重试,以及不同商务/平台的访问隔离。单元测试使用临时 SQLite 数据库,真实部署还需按上述连接配置验证实际 OA 和 SDK 数据源。