Appearance
Permission.code 约定(阶段 0 定稿)
与 permission-api-unification.md、permission-matrix.md 配套。实施配角色、新增权限节点、对接 API 时遵守本约定。
1. 鉴权主键
| 决策 | 约定 |
|---|---|
| API / 网关 / 按钮 | 以 Permission.code 字符串 为准(JWT / x-user-permissions 传 code 列表)。 |
| PC 菜单可见 | 以 Permission.id 集合为准(resolveAllowedPermissionIds:勾选节点 + 祖先 id 一并加入,仅影响菜单/路由展示)。 |
| 二者关系 | 同一业务可 一行两用:type=menu 的 menu_acc_* 同时作为 读 API 能力;写操作 另建 type=button 的 btn_acc_*_write。 |
注意:只勾选父级「目录」不会自动获得子级 btn_* 写权限;只勾选子菜单不会自动获得父级未勾选的兄弟模块 API。
2. 命名规范(沿用现有种子)
| 前缀 | type | platform | 含义 |
|---|---|---|---|
menu_acc_* | menu | pc | PC 记账模块入口;隐含该模块读接口(assertAccReadPermission)。 |
btn_acc_* | button | pc | PC 写操作(过账、冲红等);挂在对应 menu_acc_* 下。 |
mobile_* | menu | mobile | 小程序九宫格入口;route 为 /pages/...。 |
btn_acc_labor_review | button | pc | 报工审核(PC)。 |
btn_acc_production_wip_correct | button | pc | 生产/出库冲红(与 PROD_WIP_LEAD 等配合)。 |
模块与 code 对照(Acc)见 backend/src/libs/shared/auth/acc-permission-codes.ts 与种子 seed-sys-admin-permissions.mjs。
小程序常用 code
| code | 说明 |
|---|---|
mobile_recorder_inbound_create | 新建入库(还须 btn_acc_inbound_write 才能过账) |
mobile_recorder_outbound_create | 新建成品出库 |
mobile_recorder_production | 生产过账 / 在制相关入口 |
mobile_recorder_labour_view | 站点记工明细(labor-records/site-page) |
mobile_manager_labor_review | 经理报工审核 |
mobile_manager_settlement | 工资结算 |
mobile_manager_wage_issue | 发放工资 |
mobile_manager_reports | 记工报表 |
mobile_worker_labour | 工人「我的记工」 |
3. 菜单 vs API(产品语义)
| 用户操作 | 所需 permission(示例:入库) |
|---|---|
| PC 看入库列表 | menu_acc_inbound |
| PC / 小程序过账、冲红 | btn_acc_inbound_write |
| 小程序仅看到「入库列表」格子 | mobile_recorder_inbound 等 mobile 入口码 |
| 小程序「新建入库」页 | 入口码 + btn_acc_inbound_write(页面内 useAccPermissions 控制按钮;API 仍 403) |
miniRole(worker / recorder / manager)仅用于 tab 与分包体验;不能替代上表 code。子页门禁见 useMiniappPageGate + miniapp/src/utils/acc-permissions.ts。
4. 超管与 ADMIN
SUPER_ADMIN/ADMIN角色:接口层视为拥有全部 Acc 能力(与MeRoutesService一致)。- 改 seed 后执行
db:sync-roles-perms;改角色绑定后用户须 重新登录(会话 + claims 缓存失效)。
5. 后台维护文案
在 系统管理 → 权限 编辑节点时:
- menu:控制对应端菜单/格子 +(Acc)模块读接口。
- button:不单独出现在菜单树叶子导航,但控制过账/审核等写接口。
- 子节点 platform 继承父节点,勿跨 pc/mobile 混挂。
6. 预置角色
见 permission-role-templates.md。执行 pnpm --filter taskflow-backend run db:sync-roles-perms 写入角色定义。
7. 未决项(可选后续)
- 是否新增独立
api:*前缀行(仅 API、不展示菜单):当前 不强制,registry +btn_*已覆盖。 - DB 字段
apiPattern:见 permission-api-unification.md 第五节,待单独评审。