# 用户与权限模块说明(`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 中文说明