限制主任变更:禁止将医生改为其他角色,禁止跨科室调整归属 新增 DIRECTOR_SCOPE_FORBIDDEN 统一错误文案 前端权限同步:主任可进入用户页,页面文案调整为“医生管理” 前端交互同步:主任创建/编辑时角色固定为医生,医院与科室范围锁定 仪表盘统计按角色收敛,主任视角展示本科室医生相关统计 补充 e2e 场景覆盖与接口文档说明"
48 lines
1.6 KiB
Markdown
48 lines
1.6 KiB
Markdown
# 用户与权限模块说明(`src/users`)
|
||
|
||
## 1. 目标
|
||
|
||
- 管理用户基础信息(姓名、手机号、角色、组织归属)。
|
||
- 维护 B 端角色权限边界和工程师绑定医院逻辑。
|
||
|
||
## 2. 角色枚举
|
||
|
||
- `SYSTEM_ADMIN`:系统管理员
|
||
- `HOSPITAL_ADMIN`:院管
|
||
- `DIRECTOR`:主任
|
||
- `LEADER`:组长
|
||
- `DOCTOR`:医生
|
||
- `ENGINEER`:工程师
|
||
|
||
## 3. 关键规则
|
||
|
||
- 医院内数据按 `hospitalId` 强隔离。
|
||
- 仅 `SYSTEM_ADMIN` 可执行工程师绑定医院。
|
||
- `DIRECTOR/LEADER` 可读取用户列表,但仅返回当前科室可见用户。
|
||
- `DIRECTOR` 可创建、查看、编辑、删除本科室医生,但不能跨科室操作,也不能把医生改成其他角色。
|
||
- 用户组织字段校验:
|
||
- 院管/医生/工程师等需有医院归属;
|
||
- 主任/组长需有科室/小组等必要归属;
|
||
- 系统管理员不能绑定院内组织字段。
|
||
- 更新用户时,仅允许医生调整 `departmentId/groupId`(后端强约束)。
|
||
- 科室/小组父级关系冻结:不允许通过更新接口迁移科室所属医院或小组所属科室。
|
||
|
||
## 4. 典型接口
|
||
|
||
- `GET /users`、`GET /users/:id`、`PATCH /users/:id`、`DELETE /users/:id`
|
||
- `POST /b/users/:id/assign-engineer-hospital`
|
||
|
||
其中主任侧的常用链路为:
|
||
|
||
- `POST /users`:创建本科室医生
|
||
- `GET /users/:id`:查看本科室医生详情
|
||
- `PATCH /users/:id`:修改本科室医生信息
|
||
- `DELETE /users/:id`:删除无关联数据的本科室医生
|
||
|
||
## 5. 开发改造建议
|
||
|
||
- 若增加角色,请同步修改:
|
||
- Prisma `Role` 枚举
|
||
- `roles.guard.ts` 与各 Service 权限判断
|
||
- Swagger DTO 中文说明
|