## Work Log - 角色管理支持删除(2026-05-07) - 背景: - Issue `FL-203` 反馈“角色管理要支持删除”。 - 根因: - `api/app/services/legacy_admin_rbac_service.py` 的 `delete_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` 模式下支持按 `id` 或 `code` 定位角色。 - 删除时同步清理 `role_menus`、`role_permissions`、`user_roles` 关联并删除 `roles` 主记录。 - 保护角色校验从仅 legacy `id` 扩展为 modern `code` 校验,保持 `admin/user/sys_mgr` 不可删。 - 推送事件 `role_id/role_code` 改为使用解析后的真实值,避免前端订阅端收到错误标识。 - 验证: - 未执行编译与自动化测试(遵循任务约束:不做编译检查,不安装依赖)。 - 通过代码链路核对,`DELETE /api/v1/admin/roles/{role_id}` 在 legacy 与 modern 两种表结构下均有完整删除路径。 - 风险与影响: - 影响面限定在角色删除服务逻辑。 - 角色列表、创建、编辑接口行为未改动。