这一步对照设计文档第 6 节的权限矩阵,换账号逐项检查,发现问题再让 Agent 改。
1. 换账号检查
用 Alice(员工)、Ben(IT 支持)、Cathy(资产管理员)分别登录,对照这张表:
| 检查 | 期望 | 实际 |
|---|---|---|
| Alice 的「领用申请」 | 只有自己的申请 | 能看到所有人的申请 |
| Alice 的「设备台账」 | 只有自己名下的设备 | 能看到全部设备 |
| Ben 打开待审批的申请 | 没有「批准」「驳回」 | 有「批准」,点了提示没有权限 |
| Cathy 打开待发放的申请 | 没有「发放」 | 有「发放」,点了提示没有权限 |
| 系统管理员打开「权限管理」里的员工角色 | 能看到每个业务操作和数据范围 | 只有页面访问 |

Ben 点「批准」被拒绝,说明服务端的权限检查是对的。
2. 提修改意见
按 docs/design.md 的权限矩阵修正权限:
1. 员工只能看到、撤回自己的申请,台账里只看到自己名下的设备。
2. 申请详情只显示当前角色能做的操作。
3. 在「权限管理」里能配置设备、领用申请的每个操作和数据范围。Agent 的改法:
| 问题 | 改法 |
|---|---|
| 员工能看到全部 | 新增一个种子数据,把员工角色的查看、撤回改为“我提交的申请”,设备改为“分配给我的设备”;只在角色还是初始内容时才改 |
| 按钮没跟着角色 | 申请详情接口返回当前角色能做哪些操作,页面只显示流程允许、角色也允许的按钮 |
| 权限管理里看不到业务操作 | 在权限编辑器里登记两组业务操作和流程管理的设置项 |
| 接口越权 | 新增权限测试,用三个普通账号直接调用接口,覆盖上面的验收项 |
种子数据由 Agent 运行 pnpm nocobase db apply 写入正在使用的数据库。
3. 再检查一遍
Alice 只看到自己的三个申请和名下的两台设备;Ben 打开待审批的申请,只显示“这个申请现在没有需要你处理的操作”。Alice 绕过页面直接发审批请求,仍然被拒绝。

系统管理员在「系统设置 › 权限管理」里编辑员工角色,「业务操作」里列出每个操作和它的数据范围,之后可以直接在这里调整。

权限怎样声明、检查和验证,见 认证与权限;权限管理页面见 权限。
完成的标志三个账号登录后看到和能做的与权限矩阵一致;权限测试里,普通账号直接调用越权接口全部被拒绝;权限管理里能看到并调整每个业务操作和数据范围。