這是一個使用 NestJS、Prisma、PostgreSQL 構建的診所管理系統後端 API。
- 框架:NestJS + TypeScript
- 資料庫:PostgreSQL
- ORM:Prisma
- 認證:JWT + Firebase Auth
- 即時通訊:MQTT
- 快取:Redis
- API 文件:Swagger/OpenAPI
- 架構模式:Clean Architecture
- Node.js 18+
- Docker 和 Docker Compose
- PostgreSQL 14+
- 啟動開發環境:
docker-compose -f docker-compose.dev.yml up -d這將啟動 PostgreSQL、Redis、MQTT Broker 和 pgAdmin。
- 複製環境變數範本:
cp .env.example .env- 安裝依賴:
npm install- 生成 Prisma 客戶端:
npm run prisma:generate- 執行資料庫遷移:
npm run prisma:migrate- 啟動開發伺服器:
npm run start:dev應用程式將在 http://localhost:3000 上執行。
API 文件可以在 http://localhost:3000/docs 瀏覽。
- pgAdmin 可以在 http://localhost:5050 瀏覽
- 使用者: admin@example.com
- 密碼: admin
本系統採用 Clean Architecture,分為四個主要層級:
- Domain 層 - 業務核心,包含業務實體、規則和介面定義
- Use Cases 層 - 應用程式特定業務邏輯,協調領域實體
- Presentation 層 - 處理外部輸入和輸出,如 API 控制器、MQTT 等
- Infrastructure 層 - 實現技術細節,如資料庫存取、外部服務等
nest g module app/module-namenest g controller presentation/rest/module-namenest g service infrastructure/services/service-name# 單元測試
npm run test
# e2e 測試
npm run test:e2e
# 測試覆蓋率
npm run test:cov系統使用以下 MQTT 主題結構:
cms/clinic/{clinic_id}/queue/updates- 候診隊列更新cms/clinic/{clinic_id}/room/{room_id}/status- 診間狀態變更cms/clinic/{clinic_id}/notifications- 系統通知cms/patient/{patient_id}/notifications- 病患專屬通知
MIT