Files
xuanzhi-service/web/.ai-transition/sys-change/2026-04-25-api-batch-assign-role.md
wdh-home 392fbea7eb
Some checks failed
CI / init (pull_request) Has been cancelled
CI / Frontend node 18.16.0 (pull_request) Has been cancelled
CI / Backend go (1.22) (pull_request) Has been cancelled
CI / release-pr (pull_request) Has been cancelled
CI / devops-test (1.22, 18.16.0) (pull_request) Has been cancelled
CI / release-please (pull_request) Has been cancelled
CI / devops-prod (1.22, 18.x) (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
基础项目
2026-04-26 15:32:46 +08:00

45 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# API 管理批量分配角色方案归档
## 背景
- 页面:`/layout/admin/api`
- 源码:`src/view/superAdmin/api/api.vue`
- 需求:在 API 管理列表中勾选多个 API 后,支持一次性分配角色。
## 方案
- 在 API 表格顶部按钮区新增 `批量分配角色` 按钮。
- 按钮复用表格已有 `selection-change` 选中数据,未勾选 API 时禁用。
- 批量分配复用原单条 `分配角色` 抽屉,不新增独立页面或公共组件。
- 批量模式下抽屉标题显示 `批量分配角色 - 已选 N 个API`
- 批量模式下角色树默认不预勾选角色,避免多个 API 当前角色不一致时产生误导。
- 点击确定后,对所选 API 逐个调用现有 `setApiRoles` 接口。
- 保存语义与单条分配保持一致:对每个 API 都是全量覆盖角色关联关系,并由后端接口刷新 Casbin 缓存。
## 取舍
- 当前采用前端批量调用现有接口,不新增后端批量接口。
- 优点:改动边界小,复用既有 `getAuthorityList``setApiRoles` 和页面抽屉逻辑。
- 限制:多个 API 会产生多次请求;如果后续需要事务一致性或大量 API 批量处理,应新增后端批量接口。
## 涉及文件
- `src/view/superAdmin/api/api.vue`
- 新增批量分配入口。
- 新增批量模式状态、标题和提示文案。
- 单条与批量共用提交函数。
- `src/view/superAdmin/api/assignRole.js`
- 新增 `buildApiRoleAssignRequests`,统一构造角色分配请求参数。
- `src/view/superAdmin/api/assignRole.test.mjs`
- 覆盖批量 API 到 `setApiRoles` payload 的转换逻辑。
## 验证
- `node .\src\view\superAdmin\api\assignRole.test.mjs`:通过。
- `npm run build`:通过。
- 构建存在 Vite 大 chunk warning属于现有构建体积提示不影响本次功能编译。
## 后续建议
- 若批量选择数量可能很大,建议后端补充批量接口,例如一次提交 `apis + authorityIds`,由后端统一处理事务、错误聚合和缓存刷新。