# 评查点模块收尾清单 > 适用范围:`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)