chore: 权限号段根治——9041-9046 并进种子;修正 grant 脚本与种子 9020-9034 的 id 映射冲突

This commit is contained in:
2026-09-12 12:09:55 +08:00
parent 2bb056e516
commit cdb2de3e45
3 changed files with 65 additions and 39 deletions
@@ -39,14 +39,18 @@ if admin:
我方库里没有 `super_admin` 角色,`admin=True` 那一支由 `admin` 满足。
## ⚠️ 与 `seed_test_rbac.py` 的冲突(与投顾那次同源)
## ✅ 已并入种子(2026-09-12)
`seed_test_rbac.py` 是 **DELETE 重建**语义,它的
`DELETE FROM sys_permission WHERE id BETWEEN 9001 AND 9099` 会**清掉本脚本建的权限**。
所以本脚本**只增不删**,用于局部补齐;若要长期固化,请把这三个权限并进
`seed_test_rbac.py` 的 `PERMISSIONS` 常量(投顾那 16 个也是同一个待办)。
这三个权限码**已经并进 `seed_test_rbac.py` 的 `PERMISSIONS`(id 9044-9046)**,
所以"换环境 / 重跑种子之后接口又 403"这个根问题已经解决。本脚本保留下来作为
**幂等补齐**:库里临时缺这几行、或只想跑这一个脚本时用它。
权限 id 从 **9036** 起:避开种子占用的 9001-9019,也避开投顾的 9020-9035。
权限 id 的号段现状:种子占 9001-9034,投顾治理类占 9041-9043,本脚本用 **9044-9046**。
⚠️ 注意 `seed_test_rbac.py` 是 **DELETE 重建**语义,它的
`DELETE FROM sys_permission WHERE id BETWEEN 9001 AND 9099` 会删掉该号段内**所有**权限
再按常量重建 —— 所以**权限码的定义以种子为准**。以后新增权限码请先并进种子的
`PERMISSIONS`,不要只写一个脚本。
用法:
@@ -68,11 +72,13 @@ from app.infrastructure.db import SessionFactory
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(errors="replace") # type: ignore[union-attr]
#: 权限 id 从 9044 起:种子 `seed_test_rbac.py` 已占 9001-9034,投顾治理类用 9041-9043,
#: 本脚本再接 9044-9046。这三个权限码**已并进种子**,所以本脚本只做幂等补齐与授权。
#: (id, permission_code, resource, action, data_scope)
PHASE2_PERMISSIONS: tuple[tuple[int, str, str, str, str], ...] = (
(9036, "memory:candidate:confirm", "memory:candidate", "confirm", "self"),
(9037, "memory:candidate:review", "memory:candidate", "review", "all"),
(9038, "handover:read", "handover", "read", "all"),
(9044, "memory:candidate:confirm", "memory:candidate", "confirm", "self"),
(9045, "memory:candidate:review", "memory:candidate", "review", "all"),
(9046, "handover:read", "handover", "read", "all"),
)
#: 角色 id(`seed_test_rbac.py` 建的)。