tyt-api-nest/docs/users.md
EL 64d1ad7896 新增主任范围校验:仅可操作同医院同科室的 DOCTOR 账号
限制主任变更:禁止将医生改为其他角色,禁止跨科室调整归属
新增 DIRECTOR_SCOPE_FORBIDDEN 统一错误文案
前端权限同步:主任可进入用户页,页面文案调整为“医生管理”
前端交互同步:主任创建/编辑时角色固定为医生,医院与科室范围锁定
仪表盘统计按角色收敛,主任视角展示本科室医生相关统计
补充 e2e 场景覆盖与接口文档说明"
2026-03-19 11:08:36 +08:00

1.6 KiB
Raw Blame History

用户与权限模块说明(src/users

1. 目标

  • 管理用户基础信息(姓名、手机号、角色、组织归属)。
  • 维护 B 端角色权限边界和工程师绑定医院逻辑。

2. 角色枚举

  • SYSTEM_ADMIN:系统管理员
  • HOSPITAL_ADMIN:院管
  • DIRECTOR:主任
  • LEADER:组长
  • DOCTOR:医生
  • ENGINEER:工程师

3. 关键规则

  • 医院内数据按 hospitalId 强隔离。
  • SYSTEM_ADMIN 可执行工程师绑定医院。
  • DIRECTOR/LEADER 可读取用户列表,但仅返回当前科室可见用户。
  • DIRECTOR 可创建、查看、编辑、删除本科室医生,但不能跨科室操作,也不能把医生改成其他角色。
  • 用户组织字段校验:
    • 院管/医生/工程师等需有医院归属;
    • 主任/组长需有科室/小组等必要归属;
    • 系统管理员不能绑定院内组织字段。
  • 更新用户时,仅允许医生调整 departmentId/groupId(后端强约束)。
  • 科室/小组父级关系冻结:不允许通过更新接口迁移科室所属医院或小组所属科室。

4. 典型接口

  • GET /usersGET /users/:idPATCH /users/:idDELETE /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 中文说明