Files
fquiz/memory/2026-05-07.md
T
2026-05-07 09:46:21 +08:00

1.4 KiB

Work Log - 角色管理支持删除(2026-05-07)

  • 背景:

    • Issue FL-203 反馈“角色管理要支持删除”。
  • 根因:

    • api/app/services/legacy_admin_rbac_service.pydelete_role 只按 legacy 表(user_role/role_menu_rela)执行删除。
    • 当环境使用 modern RBAC 表(roles/role_menus/role_permissions/user_roles)时,删除接口会判定角色不存在或删除失败。
  • 本次改动(最小闭环):

    • 文件:api/app/services/legacy_admin_rbac_service.py
    • 调整 delete_role 逻辑为与列表/更新一致的双模式处理:
      • 自动识别 legacy/modern 角色来源。
      • modern 模式下支持按 idcode 定位角色。
      • 删除时同步清理 role_menusrole_permissionsuser_roles 关联并删除 roles 主记录。
      • 保护角色校验从仅 legacy id 扩展为 modern code 校验,保持 admin/user/sys_mgr 不可删。
      • 推送事件 role_id/role_code 改为使用解析后的真实值,避免前端订阅端收到错误标识。
  • 验证:

    • 未执行编译与自动化测试(遵循任务约束:不做编译检查,不安装依赖)。
    • 通过代码链路核对,DELETE /api/v1/admin/roles/{role_id} 在 legacy 与 modern 两种表结构下均有完整删除路径。
  • 风险与影响:

    • 影响面限定在角色删除服务逻辑。
    • 角色列表、创建、编辑接口行为未改动。