171 lines
5.7 KiB
Markdown
171 lines
5.7 KiB
Markdown
# 评查点模块收尾清单
|
||
|
||
> 适用范围:`evaluation_points` 旧表仍在线、评查点模块已完成 `T5-1 ~ T5-5` 首轮 tenant-first 收口后的最终收尾阶段
|
||
> 更新日期:2026-05-21
|
||
> 文档定位:明确评查点模块距离“真正摆脱 area 主边界”还差哪些数据库、后端、前端、验收与风险动作。
|
||
|
||
---
|
||
|
||
## 1. 当前真实状态
|
||
|
||
评查点模块当前已经完成的不是“全量终态”,而是第一轮高风险收口:
|
||
|
||
1. 读链路已经 `tenant_code` 优先
|
||
2. 写链路已经 `tenant_code` 优先
|
||
3. 共享域 `PUBLIC / PROVINCIAL` 已经开始标准化
|
||
4. 主链路角色判定已切到 `data_scope + permission`
|
||
5. 旧 `area` 仍然是物理表兼容字段,不是最终可删除状态
|
||
|
||
也就是说:
|
||
|
||
1. 现在已经能明显降低“写错租户、查错范围”的风险
|
||
2. 但还不能说评查点模块已经彻底完成租户化
|
||
|
||
---
|
||
|
||
## 2. 收尾目标
|
||
|
||
评查点模块最终收尾只看 4 个结果:
|
||
|
||
1. `evaluation_points` 具备真实 `tenant_code`
|
||
2. 历史 `area` 已完成可审计回填
|
||
3. service 查询与写入不再把 `area` 当主边界
|
||
4. `area` 退化为展示/兼容字段,最后可评估下线
|
||
|
||
---
|
||
|
||
## 3. 数据库收尾项
|
||
|
||
### 3.1 必做
|
||
|
||
1. 给旧表 `evaluation_points` 补:
|
||
- `tenant_code VARCHAR(64) NULL`
|
||
- `tenant_name VARCHAR(128) NULL`
|
||
2. 建索引:
|
||
- `idx_evaluation_points_tenant_code`
|
||
- `idx_evaluation_points_group_tenant_code`
|
||
- 如编码唯一性要按租户收口,再评估 `uq_evaluation_points_tenant_code_code_active`
|
||
3. 先不删 `area`
|
||
4. 先不加 `NOT NULL`
|
||
|
||
### 3.2 历史回填规则
|
||
|
||
统一按下面顺序:
|
||
|
||
1. 已有合法 `tenant_code` 保留
|
||
2. 否则优先按 `sys_tenant_aliases.alias_value -> tenant_code`
|
||
3. 否则按 `sys_tenants.tenant_name -> tenant_code`
|
||
4. 否则按兼容值兜底:
|
||
- `公共` / `default` / 空值 -> `PUBLIC`
|
||
- `省级` / `省局` -> `PROVINCIAL`
|
||
5. `tenant_name` 与 `tenant_code` 一起回填
|
||
|
||
### 3.3 回填前预检
|
||
|
||
上线前必须先跑:
|
||
|
||
1. `area` 值分布统计
|
||
2. `area` 无法映射租户编码的残留清单
|
||
3. `code` 在跨租户下是否允许重复的预检
|
||
4. `公共/省级/省局/default/空值` 数量统计
|
||
|
||
---
|
||
|
||
## 4. 后端收尾项
|
||
|
||
### 4.1 可以在数据库补字段后立即推进
|
||
|
||
1. `ListPoints` / `GetPoint` 查询彻底改成:
|
||
- 先按 `tenant_code`
|
||
- `tenant_name/area` 仅在老数据回填不完整时 fallback
|
||
2. `CreatePoint` / `UpdatePoint` 默认要求落 `tenant_code/tenant_name`
|
||
3. `_evaluation_point_tenant_code_expr()` 可从“兼容表达式”逐步收窄到真实列
|
||
4. `_tenant_scope_match_sql()` 的旧中文兼容匹配可以继续缩薄
|
||
|
||
### 4.2 等历史回填完成后再推进
|
||
|
||
1. 去掉读链路里对 `公共/default/空值/省局/省级` 的多值 fallback
|
||
2. 去掉写链路里 `area` 作为最终归属镜像字段的必要性
|
||
3. 评估把 `GetPoint` / `ListPoints` 的共享域判断统一下沉到模块 policy
|
||
|
||
---
|
||
|
||
## 5. 前端收尾项
|
||
|
||
### 5.1 必查
|
||
|
||
1. 评查点列表页是否还传 `area`
|
||
2. 新建/编辑页是否还允许手填地区文本
|
||
3. 详情页是否仍以 `area` 为主展示归属
|
||
4. 查询缓存 key 是否仍含旧 `area`
|
||
|
||
### 5.2 目标状态
|
||
|
||
1. 查询主参数只传 `tenant_code`
|
||
2. 展示层显示 `tenant_name`
|
||
3. `area` 最多只作为历史记录兼容显示
|
||
|
||
---
|
||
|
||
## 6. 验收清单
|
||
|
||
### 6.1 数据验收
|
||
|
||
1. `evaluation_points` 中 `tenant_code` 非空占比可统计
|
||
2. `PUBLIC / PROVINCIAL` 记录数量可统计
|
||
3. 未映射记录清单可导出
|
||
|
||
### 6.2 行为验收
|
||
|
||
1. 本租户管理员只能看到本租户 + 共享域评查点
|
||
2. 本租户管理员不能把评查点改挂到其他租户
|
||
3. 全局用户创建非共享评查点,必须显式指定 `tenant_code`
|
||
4. 共享域列表读取优先命中标准编码,不再先靠中文值
|
||
5. 新建一个自定义租户后,可正常筛选该租户评查点
|
||
|
||
### 6.3 回归验收
|
||
|
||
1. 旧数据中 `公共/default/空值` 仍可见
|
||
2. 旧数据中 `省级/省局` 仍可见
|
||
3. 评查点分组联动不回归
|
||
4. 编码唯一性行为不意外变化
|
||
|
||
---
|
||
|
||
## 7. 剩余风险
|
||
|
||
### 高风险
|
||
|
||
1. 如果数据库不先补 `tenant_code`,代码层再怎么 tenant-first,也只能停留在兼容态
|
||
2. 如果历史回填不先跑,查询口径会长期停在“标准编码 + 中文兼容混合”阶段
|
||
|
||
### 中风险
|
||
|
||
1. 若前端仍持续提交 `area`,会延长兼容期
|
||
2. 若共享域中文常量在别的模块也继续扩散,会影响后续统一执行器接入
|
||
|
||
### 低风险
|
||
|
||
1. `tenant_name` 展示名后续调整可能影响少量历史展示,不应影响真实边界
|
||
|
||
---
|
||
|
||
## 8. 推荐执行顺序
|
||
|
||
1. 先执行评查点 `tenant_code` 补字段与历史回填脚本
|
||
2. 再做一次评查点接口联调
|
||
3. 再收掉 service 内最厚的 `area` fallback
|
||
4. 最后把这条链接到统一数据范围执行器
|
||
|
||
---
|
||
|
||
## 9. 本轮直接产物
|
||
|
||
本轮已新增两份配套产物:
|
||
|
||
1. 本文档:[评查点模块收尾清单.md](/home/wren-dev/Porject/leaudit-platform/docs/权限与地区隔离/评查点模块收尾清单.md)
|
||
2. 数据库草案:[schema_evaluation_points_tenant_cleanup.sql](/home/wren-dev/Porject/leaudit-platform/scripts/创建sql/schema_evaluation_points_tenant_cleanup.sql)
|
||
3. 执行说明与验证清单:[评查点数据库执行说明与验证SQL.md](/home/wren-dev/Porject/leaudit-platform/docs/权限与地区隔离/评查点数据库执行说明与验证SQL.md)
|
||
4. 执行前预检 SQL:[precheck_evaluation_points_tenant_cleanup.sql](/home/wren-dev/Porject/leaudit-platform/scripts/创建sql/precheck_evaluation_points_tenant_cleanup.sql)
|
||
5. 预检结果判读模板:[评查点预检结果判读模板.md](/home/wren-dev/Porject/leaudit-platform/docs/权限与地区隔离/评查点预检结果判读模板.md)
|