Skip to content

Permission.code 约定(阶段 0 定稿)

permission-api-unification.mdpermission-matrix.md 配套。实施配角色、新增权限节点、对接 API 时遵守本约定。

1. 鉴权主键

决策约定
API / 网关 / 按钮Permission.code 字符串 为准(JWT / x-user-permissions 传 code 列表)。
PC 菜单可见Permission.id 集合为准(resolveAllowedPermissionIds:勾选节点 + 祖先 id 一并加入,仅影响菜单/路由展示)。
二者关系同一业务可 一行两用type=menumenu_acc_* 同时作为 读 API 能力;写操作 另建 type=buttonbtn_acc_*_write

注意:只勾选父级「目录」不会自动获得子级 btn_* 写权限;只勾选子菜单不会自动获得父级未勾选的兄弟模块 API。

2. 命名规范(沿用现有种子)

前缀typeplatform含义
menu_acc_*menupcPC 记账模块入口;隐含该模块读接口assertAccReadPermission)。
btn_acc_*buttonpcPC 写操作(过账、冲红等);挂在对应 menu_acc_* 下。
mobile_*menumobile小程序九宫格入口;route/pages/...
btn_acc_labor_reviewbuttonpc报工审核(PC)。
btn_acc_production_wip_correctbuttonpc生产/出库冲红(与 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_inboundmobile 入口码
小程序「新建入库」页入口码 + btn_acc_inbound_write(页面内 useAccPermissions 控制按钮;API 仍 403)

miniRoleworker / 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 第五节,待单独评审。

TaskFlow 内部文档 Released under the MIT License.