feat: 权限系统重构 — 操作权限双向展开 + 启动时自动补全默认权限

## permission_service.py
- init_all_menus: menu_defs 新增 inbound_purchase(采购申请) 菜单项
- init_all_menus: 创建 inbound_purchase:operation 操作元素
- 新增 ensure_default_permissions(): 启动时从 sys_user 提取活跃角色,
  对空权限角色自动补全默认菜单(按角色类型分级)
- 自动迁移: 已有 inbound_buy 权限的角色 → 自动获得 inbound_purchase
- SUPERVISOR 启动时自动获得 inbound_purchase 菜单权限

## decorators.py
- _expand_operation_perms 改为双向桥接:
  正向(inbound_buy:operation←inbound_buy:write)→通过
  反向(inbound_buy←inbound_buy:operation)→通过(可编辑隐含可读)
- 新增详细诊断日志,记录展开路径和失败原因

## __init__.py
- 启动时调用 PermissionService.ensure_default_permissions()
This commit is contained in:
yueli
2026-07-16 11:25:41 +08:00
parent 329820117f
commit 0b75740ae0
3 changed files with 217 additions and 3 deletions

View File

@ -197,6 +197,8 @@ def create_app():
PermissionService.init_stocktake_menus()
# 初始化所有菜单的层级结构
PermissionService.init_all_menus()
# ★ 启动时自动为所有已知角色补充默认权限(仅补充空角色,不覆盖已有)
PermissionService.ensure_default_permissions()
except Exception as e:
print(f"⚠️ 菜单初始化跳过: {e}")