Files
zkxw/docs/superpowers/specs/2026-08-05-user-role-dual-track-read-model-design.md
T
zlwuandCursor de22678c87 feat: ship OA drafts/badges, role dual-track, and test-env deploy tooling.
Add approval instance drafts with menu badges, dual-track user/role read model and role bound names, form-designer outline docs, and bare-metal test deploy scripts. Ignore local test-server credential file.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 13:58:47 +08:00

1.7 KiB
Raw Blame History

用户角色双轨读模型(方案 B)

日期: 2026-08-05
状态: 已确认,按此实现
前置: 2026-08-02-post-role-permission-design.md

决策

项 结论
权限模型 长期双轨:直接绑定 ∪ 职位继承(运行时并集,已落地)
用户管理写入 UI 不提供直接绑角色;日常仅配职位
直接绑定运维 API / 脚本 / 库表,或专用授权模块(如质检金额查看)
用户详情读模型 区分直接 / 职位继承 / 有效三层,便于审计

字段约定(用户详情)

字段 含义
roleIds 仅 sys_user_role 直接绑定(写路径 / 运维)
postInheritedRoleIds 经启用职位继承的启用角色 ID
effectiveRoleIds 有效角色 ID = 启用直接 ∪ 职位继承(与 get_effective_role_ids 一致)
effectiveRoleNames 有效角色名称(去重保序)
postIds 用户职位(不变)

写入规则

  • 用户新增/编辑 UI 不提交 roleIds。
  • update_user 关联替换:仅当请求体显式带 roleIds / postIds 时替换对应一侧;只改职位不得清空直接角色。
  • 菜单权限、数据权限、登录门禁继续走有效角色并集;本变更不改运行时语义。

前端

  • 查看弹窗:展示有效角色,并只读附「直接绑定」「职位继承」。
  • 新增/编辑:仅职位多选,无角色写入控件。

非目标

  • 恢复用户页直接绑角色 UI
  • 角色页反向关联职位
  • 专用授权模块(如 qc_material_amount_auth)改为职位继承