# 多租户医疗调压系统后端（NestJS + Prisma）

本项目是医疗调压系统后端 MVP，支持 B 端（医院内部）与 C 端（家属跨院视图）两套接口语义。

## 1. 技术栈

- NestJS（模块化后端框架）
- Prisma（ORM + Schema 管理）
- PostgreSQL/MySQL（按 `.env` 的 `DATABASE_URL` 决定）
- JWT（认证）
- Swagger（接口文档）

## 2. 目录结构

```text
src/
  auth/                 认证与鉴权（JWT、Guard、RBAC）
  users/                用户与角色管理
  tasks/                调压任务流转（发布/接收/完成/取消）
  patients/             患者查询（B 端范围 + C 端聚合）
  hospitals/            医院管理模块
  departments/          科室管理模块
  groups/               小组管理模块
  organization-common/  组织域共享 DTO/权限校验能力
  organization/         组织域聚合模块（仅负责引入子模块）
  common/               全局响应、异常、消息常量
  generated/prisma/     Prisma 生成代码
prisma/
  schema.prisma         数据模型定义
docs/
  auth.md
  users.md
  tasks.md
  patients.md
```

## 3. 环境变量

请在项目根目录创建 `.env`：

```env
DATABASE_URL="postgresql://user:password@127.0.0.1:5432/tyt?schema=public"
AUTH_TOKEN_SECRET="请替换为强随机密钥"
JWT_EXPIRES_IN="7d"
SYSTEM_ADMIN_BOOTSTRAP_KEY="初始化系统管理员用密钥"
```

管理员创建链路：

- 可通过 `POST /auth/system-admin` 创建系统管理员（需引导密钥）。
- 系统管理员负责创建医院、系统管理员与医院管理员。
- 医院管理员负责创建本院下级角色（主任/组长/医生/工程师）。

## 4. 启动流程

```bash
pnpm install
pnpm prisma generate
pnpm prisma migrate dev
pnpm start:dev
```

## 5. 统一响应规范

- 成功：`{ code: 0, msg: "成功", data: ... }`
- 失败：`{ code: 4xx/5xx, msg: "中文错误信息", data: null }`

已通过全局拦截器与全局异常过滤器统一输出。

## 6. API 文档

- Swagger UI: `/api/docs`
- OpenAPI JSON: `/api/docs-json`
- 鉴权头：`Authorization: Bearer <token>`

## 7. 组织管理（医院/科室/小组 CRUD）

统一前缀：`/b/organization`

- 医院：
  - `POST /b/organization/hospitals`
  - `GET /b/organization/hospitals`
  - `GET /b/organization/hospitals/:id`
  - `PATCH /b/organization/hospitals/:id`
  - `DELETE /b/organization/hospitals/:id`
- 科室：
  - `POST /b/organization/departments`
  - `GET /b/organization/departments`
  - `GET /b/organization/departments/:id`
  - `PATCH /b/organization/departments/:id`
  - `DELETE /b/organization/departments/:id`
- 小组：
  - `POST /b/organization/groups`
  - `GET /b/organization/groups`
  - `GET /b/organization/groups/:id`
  - `PATCH /b/organization/groups/:id`
  - `DELETE /b/organization/groups/:id`

## 8. 模块文档

- 认证与登录：`docs/auth.md`
- 用户与权限：`docs/users.md`
- 任务流转：`docs/tasks.md`
- 患者查询：`docs/patients.md`

## 9. 常见改造入口

- 新增字段/关系：修改 `prisma/schema.prisma` 后执行 `prisma migrate`。
- 调整中文提示：修改 `src/common/messages.ts`。
- 调整全局响应壳：修改 `src/common/response-envelope.interceptor.ts` 与 `src/common/http-exception.filter.ts`。
- 扩展 RBAC：修改 `src/auth/roles.guard.ts` 与对应 Service 的权限断言。
