# 模块 2:权限控制方案生成
权限不是按钮隐藏。工单模块必须同时覆盖菜单权限、按钮权限、接口权限和数据权限。
---
# 工单权限字符建议
```md
work:order:list
work:order:query
work:order:add
work:order:edit
work:order:delete
work:order:assign
work:order:transition
work:order:audit
work:order:dashboard
```
权限字符必须统一命名,否则前端、后端、菜单配置和 Review 清单会对不上。
---
# 权限控制方案表
| 操作 | 前端入口 | 权限字符 | 后端接口 | 数据权限 | 验收 |
|---|---|---|---|---|---|
| 新增工单 | 新增按钮 | work:order:add | /workOrder/add | 无 | 无权限账号返回 403 |
| 删除工单 | 删除按钮 | work:order:delete | /workOrder/delete | 管理员范围 | 非管理员返回 403 |
| 指派工单 | 指派按钮 | work:order:assign | /workOrder/assign | 团队范围 | 研发账号不可指派 |
| 状态流转 | 状态按钮 | work:order:transition | /workOrder/transition | 工单可见范围 | 非法角色不能流转 |
| 查看看板 | 看板菜单 | work:order:dashboard | /workOrder/dashboard/* | 管理范围 | 只读用户不可访问 |
---
# 权限落地检查
| 检查项 | 通过标准 |
|---|---|
| 菜单权限 | 菜单配置有对应权限字符 |
| 按钮权限 | 无权限用户看不到敏感按钮 |
| 接口权限 | 直接请求敏感接口被拒绝 |
| 数据权限 | 不同角色只看到授权范围 |
| 验收记录 | 有账号、操作、结果和证据 |
---
# rules 要落到这些位置
| rule 条款 | 代码落点 | 验证项 |
|---|---|---|
| 四层校验 | 菜单配置、按钮权限、Controller、Service 查询 | 无权限账号不可见且接口失败 |
| 权限字符有来源 | 菜单表、路由、按钮指令、后端注解 | 同一字符贯穿前后端 |
| 数据权限后端校验 | 列表、详情、导出、看板查询 | 改请求参数不能越权 |
| 敏感字段最小返回 | 列表接口、详情接口、审计展示 | 不暴露不必要 old/new value |
让 TRAE 改权限前,先把相关 rule 和权限控制方案一起给它。