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>
1.7 KiB
1.7 KiB
用户角色双轨读模型(方案 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)改为职位继承