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