# 用户与权限模块说明(`src/users`) ## 1. 目标 - 管理用户基础信息(姓名、手机号、角色、组织归属)。 - 维护 B 端角色权限边界和工程师绑定医院逻辑。 ## 2. 角色枚举 - `SYSTEM_ADMIN`:系统管理员 - `HOSPITAL_ADMIN`:院管 - `DIRECTOR`:主任 - `LEADER`:组长 - `DOCTOR`:医生 - `ENGINEER`:工程师 ## 3. 关键规则 - 医院内数据按 `hospitalId` 强隔离。 - 仅 `SYSTEM_ADMIN` 可执行工程师绑定医院。 - `SYSTEM_ADMIN/HOSPITAL_ADMIN` 可执行用户创建、编辑、删除。 - `DIRECTOR` 仅可只读查看本科室下级医生/组长。 - `LEADER` 仅可只读查看本小组医生列表。 - `HOSPITAL_ADMIN` 仅可操作本院非管理员账号。 - 用户组织字段校验: - 院管/医生/工程师等需有医院归属; - 主任/组长需有科室/小组等必要归属; - 系统管理员不能绑定院内组织字段。 - 更新用户时,仅允许医生调整 `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`:删除本院无关联、且非管理员用户 其中主任侧的常用链路为: - `GET /users`:查看本科室下级医生/组长 - `GET /users/:id`:查看本科室下级详情 其中组长侧的常用链路为: - `GET /users`:查看本小组医生列表 - `GET /users/:id`:查看本小组医生详情 ## 5. 开发改造建议 - 若增加角色,请同步修改: - Prisma `Role` 枚举 - `roles.guard.ts` 与各 Service 权限判断 - Swagger DTO 中文说明