48 lines
4.0 KiB
Markdown
48 lines
4.0 KiB
Markdown
# 权限组部门身份修复
|
||
|
||
组织来源为报表库 `hr_groups`,由 `organization-sync` 默认每天上海时间 02:00 同步。
|
||
同步以 `sourceDeptId` 更新同一个 `OrganizationUnit.id`,改名、换上级不重建身份;上游删除只下线。
|
||
权限组归属由管理员保存的数据库配置决定,不能根据部门名称自动推断。
|
||
|
||
## 修复
|
||
|
||
- 部门关联保存 `organizationUnitId` 外键;旧 `departmentPath` 保留为历史快照。
|
||
- 权限组页面、按人看权限和鉴权统一使用绑定部门的当前有效路径。
|
||
- 花名册中有部门 ID 时,只使用组织数据库解析的当前任职,忽略旧路径快照;一人多部门仍取各任职最近组的并集。
|
||
- 移除按名称自动挂接默认组的逻辑;管理页面不再创建默认组或重置组名。
|
||
- 无有效身份的历史关联显示“关联已失效”,不参与组鉴权,可按关联记录 ID 精确清理。
|
||
- 部门只允许加入一个组,约束由稳定身份的数据库唯一索引保证;并发冲突不会返回假成功。
|
||
|
||
## 数据迁移与边界
|
||
|
||
`20261008_permission_group_department_identity` 只回填当前有效且完整路径唯一匹配的部门。
|
||
无法证明的历史关联保留为空,不按简称、同名或名称相似度猜测。迁移不修改组里的素材权限或个人成员。
|
||
迁移失败时不得部署依赖新字段的应用。
|
||
|
||
生产只读盘点:17 条关联,16 条精确匹配;1 条为“视觉”组的“效率部(懂业务的技术部)”。
|
||
当前组织目录唯一部门为“效率部”,上游 ID `920560736`。
|
||
该条已先备份旧记录与目标身份,再修正为当前完整路径;未修改权限勾选或个人成员。
|
||
修复后只读复核为 17 条关联、17 条当前有效部门唯一精确匹配、0 条未匹配。
|
||
受保护的生产备份位于 `/mnt/PoolOne/apps/youyidian-3d/releases/permission-identity-repair-20261008`,包含 before 与 after JSON,目录权限 0700。
|
||
这是让现有版本恢复关联的单条数据修复;稳定部门 ID 的新代码及数据库迁移尚未提交、发布。
|
||
|
||
`scripts/repair-permission-group-department.mjs` 用明确的关联 ID、当前部门 ID、预期组 ID 和预期旧路径复核。
|
||
默认只读预演;`--apply` 必须指定 `--backup-dir`,写前备份,事务内检查身份和记录未变化。
|
||
此工具依赖新字段,须在上述数据库迁移完成后使用。
|
||
|
||
## 验证
|
||
|
||
覆盖改名与移动、部门下线、旧路径复用、一人多部门、最近上级继承、组冲突与并发、失效关联清理和管理员组名保留。
|
||
在独立 PostgreSQL 容器执行迁移 SQL,验证精确回填、歧义与失效保留、唯一约束和外键保护。
|
||
相关 12 个测试套件、86 项测试通过;Prisma 生成、客户端校验、类型检查和修改文件 lint 通过。
|
||
本地隔离样例完成桌面及 390px 移动端检查,无横向溢出,失效关联提示和按记录 ID 移除正常。
|
||
截图位于 `tmp/permission-groups-qa/identity-desktop.png`、`identity-mobile.png`。样例操作没有写入生产数据。
|
||
浏览器控制会话恢复后,已补充当前生产版本的登录态界面验收:
|
||
- 权限组「视觉」的部门列表显示「效率部」及当前完整路径。
|
||
- 按人看权限搜索「魔礼红」,显示「效率部」、部门组「视觉 · 本部门」,个人组为空;与权限组页面一致。
|
||
- 桌面及 390px 移动端显示正常,移动端文档宽度与视口均为 390px,无横向溢出。
|
||
- 生产截图位于 `tmp/permission-groups-qa/production-efficiency-person-desktop.png`、`production-efficiency-person-mobile.png`;权限组截图为 `browser-control-recovered.png`。
|
||
上述结果验证单条生产关联修正的显示结果;未操作权限勾选或个人加组,未以魔礼红身份执行真实下载。
|
||
稳定 ID 新代码的生产迁移、部署及上线后的鉴权验收仍待完成。
|
||
生产鉴权和界面验收必须在应用上线后按真实数据检查;本地样例验收不能代替生产验收。
|