303 lines
6.2 KiB
Markdown
303 lines
6.2 KiB
Markdown
# 新平台主链路租户改造实施任务单
|
|
|
|
> 目标:把新平台主链路从“半租户化”推进到“关键链路 tenant-first”
|
|
> 当前优先级:先修会落错数据、查错范围、跨租户误改的链路
|
|
|
|
---
|
|
|
|
## T1 文档上传 tenant-first 收口
|
|
|
|
### 数据库变更
|
|
|
|
- 无强制新表
|
|
- 如当前库中还没有文档业务快照字段,需要补充:
|
|
- `leaudit_documents.root_group_id`
|
|
- `leaudit_documents.entry_module_id`
|
|
|
|
### 后端改造
|
|
|
|
- `Upload` 改为显式以 `tenant_code` 为主,不再依赖 `region` 主导归属
|
|
- 上传时校验:
|
|
- `group_id` 必须属于 `document_type_id`
|
|
- `group_id` 必须属于当前入口模块业务树
|
|
- `group_id` 必须属于当前租户允许范围
|
|
- 上传落库时持久化:
|
|
- `tenant_code`
|
|
- `group_id`
|
|
- `root_group_id`
|
|
- `entry_module_id`
|
|
|
|
### 前端改造
|
|
|
|
- 上传页显式提交 `tenant_code`
|
|
- 上传页不再仅传 `region`
|
|
- 上传页当前租户显式展示
|
|
|
|
### 验收点
|
|
|
|
- 同一文档类型、不同租户上传,不会再混入同一版本链
|
|
- 上传请求缺少 `tenant_code` 时,行为明确可控
|
|
- 非当前租户二级组 ID 无法上传成功
|
|
|
|
### 风险
|
|
|
|
- 历史旧文档若仍无 `tenant_code`,需要兼容迁移窗口
|
|
|
|
---
|
|
|
|
## T2 文档列表/详情停止 `tenant_code + region` 混查
|
|
|
|
### 数据库变更
|
|
|
|
- 如缺索引,确认:
|
|
- `idx_leaudit_documents_tenant_code`
|
|
- `idx_leaudit_documents_group_id`
|
|
|
|
### 后端改造
|
|
|
|
- 收紧 `_document_tenant_filter_sql`
|
|
- 收紧 `_buildDocumentScopeFilters`
|
|
- 收紧 `_find_latest_version_candidate`
|
|
- 停止危险的“`tenant_code` 不命中就退回 `region`”
|
|
|
|
### 前端改造
|
|
|
|
- 文档列表请求显式带 `tenant_code`
|
|
- 列表页显示当前租户范围
|
|
|
|
### 验收点
|
|
|
|
- 同地区旧数据不会再被当成当前租户数据读出来
|
|
- 文档列表和详情在同一租户下口径一致
|
|
|
|
### 风险
|
|
|
|
- 某些历史脏数据可能在收紧后“暂时查不到”,需要预先判定为预期行为
|
|
|
|
---
|
|
|
|
## T3 文档业务边界快照固化
|
|
|
|
### 数据库变更
|
|
|
|
- 补字段:
|
|
- `leaudit_documents.root_group_id`
|
|
- `leaudit_documents.entry_module_id`
|
|
|
|
### 后端改造
|
|
|
|
- 上传落库时写入业务快照
|
|
- 列表/详情优先读持久化快照,不再运行时推断
|
|
- 减少 `COALESCE(d.group_id, inferred_group_id)` 这类推导
|
|
|
|
### 前端改造
|
|
|
|
- 无必须改动
|
|
- 后续可显示上传时绑定的业务子类型
|
|
|
|
### 验收点
|
|
|
|
- 分组树配置变化后,历史文档仍保持原业务归属
|
|
|
|
### 风险
|
|
|
|
- 需要一次性回填历史文档快照
|
|
|
|
---
|
|
|
|
## T4 RuleController 鉴权与权限补齐
|
|
|
|
### 数据库变更
|
|
|
|
- 无
|
|
|
|
### 后端改造
|
|
|
|
- `RuleController` 全量加 `verify_access_token`
|
|
- 补功能权限校验
|
|
- 统一透传当前租户上下文
|
|
|
|
### 前端改造
|
|
|
|
- 无必须改动
|
|
|
|
### 验收点
|
|
|
|
- 未登录不能直接访问规则接口
|
|
- 无权限用户不能读写规则版本和绑定
|
|
|
|
### 风险
|
|
|
|
- 可能暴露前端现有页面实际依赖“裸接口”的问题
|
|
|
|
---
|
|
|
|
## T5 评查组读链路 tenant-first 收口
|
|
|
|
### 数据库变更
|
|
|
|
- 短期可先不改表结构
|
|
- 中期需要评估给 `leaudit_evaluation_point_groups` 增加 `tenant_code`
|
|
|
|
### 后端改造
|
|
|
|
- `ListGroups`
|
|
- `ListAllGroups`
|
|
- `GetGroup`
|
|
- `GetChildren`
|
|
- `ListGroupsByDocumentTypes`
|
|
|
|
以上全部接入租户过滤
|
|
|
|
### 前端改造
|
|
|
|
- `rule-groups` 页面查询显式带 `tenant_code`
|
|
- 页面头部显示当前租户
|
|
|
|
### 验收点
|
|
|
|
- 不同租户打开分组页,看到的根组/子组不再混杂
|
|
|
|
### 风险
|
|
|
|
- 如果当前业务暂时仍共享分组树,需要先定义共享策略
|
|
|
|
---
|
|
|
|
## T6 评查组写链路 tenant-first 收口
|
|
|
|
### 数据库变更
|
|
|
|
- 中期大概率需要:
|
|
- `leaudit_evaluation_point_groups.tenant_code`
|
|
- `leaudit_rule_group_bindings.tenant_code`
|
|
|
|
### 后端改造
|
|
|
|
- `CreateGroup`
|
|
- `UpdateGroup`
|
|
- `DeleteGroup`
|
|
- `BatchDelete`
|
|
- `BatchUpdateStatus`
|
|
- `RebindGroup`
|
|
- `CreateBinding`
|
|
- `UpdateBinding`
|
|
- `DeleteBinding`
|
|
|
|
全部改成租户内操作
|
|
|
|
### 前端改造
|
|
|
|
- 编辑、删除、迁移前提示当前租户范围
|
|
|
|
### 验收点
|
|
|
|
- 无法跨租户误删、误绑、误迁移分组
|
|
|
|
### 风险
|
|
|
|
- `RebindGroup` 是最高危操作,必须单独加保护
|
|
|
|
---
|
|
|
|
## T7 规则版本与规则集归属模型重构
|
|
|
|
### 数据库变更
|
|
|
|
- 评估是否新增:
|
|
- `leaudit_rule_sets.tenant_code`
|
|
- `leaudit_rule_versions.tenant_code`
|
|
|
|
### 后端改造
|
|
|
|
- `CreateVersion`
|
|
- `PublishRuleVersion`
|
|
- `RollbackRuleVersion`
|
|
- `ListSets`
|
|
- `GetVersions`
|
|
- `GetContent`
|
|
|
|
全部明确租户归属模型
|
|
|
|
### 前端改造
|
|
|
|
- 规则列表/版本查看显示当前租户
|
|
|
|
### 验收点
|
|
|
|
- 一个租户发布规则版本,不会影响另一个租户同名规则类型
|
|
|
|
### 风险
|
|
|
|
- 这是最深层模型调整,需要最后做,不适合第一批直接大改
|
|
|
|
---
|
|
|
|
## T8 前端作用域上下文统一
|
|
|
|
### 数据库变更
|
|
|
|
- 无
|
|
|
|
### 后端改造
|
|
|
|
- 允许并鼓励所有主链路查询显式接受 `tenant_code`
|
|
|
|
### 前端改造
|
|
|
|
- 首页点击入口时带上 `tenant_code`
|
|
- sessionStorage 记录 `selectedTenantCode`
|
|
- 上传页、列表页、分组页、文档类型页全部统一读取/透传
|
|
|
|
### 验收点
|
|
|
|
- 跨页面刷新、跨模块进入后,租户上下文不丢失
|
|
|
|
### 风险
|
|
|
|
- 需要统一多页面的 scope 来源,避免出现多个来源互相覆盖
|
|
|
|
---
|
|
|
|
## T9 交叉评查跨租户策略明确化
|
|
|
|
### 数据库变更
|
|
|
|
- 可选补快照字段到 `leaudit_review_point_audits`
|
|
|
|
### 后端改造
|
|
|
|
- 明确 `_hasCrossReviewDocumentAccess` 是否允许跨租户
|
|
- 如果允许:
|
|
- 做显式特权链路
|
|
- 做审计快照
|
|
- 如果不允许:
|
|
- 收紧 bypass scope
|
|
|
|
### 前端改造
|
|
|
|
- 交叉评查页展示任务涉及租户
|
|
|
|
### 验收点
|
|
|
|
- 跨租户访问行为是“明确允许”而不是“意外绕过”
|
|
|
|
### 风险
|
|
|
|
- 这是业务策略题,改之前必须先拍板
|
|
|
|
---
|
|
|
|
## 当前建议执行顺序
|
|
|
|
1. `T1 文档上传 tenant-first 收口`
|
|
2. `T2 文档列表/详情停止 tenant_code + region 混查`
|
|
3. `T4 RuleController 鉴权与权限补齐`
|
|
4. `T5 评查组读链路 tenant-first 收口`
|
|
5. `T8 前端作用域上下文统一`
|
|
6. `T3 文档业务边界快照固化`
|
|
7. `T6 评查组写链路 tenant-first 收口`
|
|
8. `T9 交叉评查跨租户策略明确化`
|
|
9. `T7 规则版本与规则集归属模型重构`
|
|
|