Files
HealthCarePregnant/pcm-platform/README.md
T
2026-06-18 09:48:05 +08:00

70 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PCM 孕产个案管理平台
Monorepo。文档见上级目录:`0-req-PCM.md`(需求)、`1-prd-PCM.md`PRD)、`2-task-PCM.md`(任务)、`3-ui-style-PCM.md`UI 风格)、`4-arch-PCM.md`(架构)。
## 结构
- `backend/` — NestJS API(核心后端,全局鉴权/授权守卫)
- `patient-app/` — 孕妇端(Vite+React 移动 WebAI 对话优先)
- `admin-web/` — 医护/运营端(React PC 工作台 + 知识库/审计)
- `family-app/` — 家属端(轻量移动 Web,只读状态+提醒+问答)
> 移动端按 `4-arch-PCM.md` 最终可经 Taro 移植为微信小程序;当前以可运行可验证的 Web 实现。
## 本地开发
后端:
```bash
cd backend
npm install
cp .env.example .env # 按需填写 AUTH_SECRET 等
npm run start:dev # 开发模式
npm test # 单元测试
```
前端(任一应用,开发服务器自带 /api → 后端代理):
```bash
cd patient-app # 或 admin-web / family-app
npm install
npm run dev
```
健康检查:`GET http://localhost:3000/api/health`
示例数据(seed,需 PostgreSQL):
```bash
cd backend
DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5432/pcm \
FIELD_ENCRYPTION_KEY=<32字节hex> npm run seed
```
清空领域数据并写入真实示例:账号(caseManager/physician/operator/admin/mama01/family01,密码 pcm12345)、知识库、12 名孕妇(含编号 PCM-000001…、不同风险分层,部分含预警/个案/照护计划/提醒)。
## 容器化部署(dev/staging
前置:Docker + Docker Compose。
一键部署:
```bash
cp .env.example .env # 设置 AUTH_SECRET 与端口
make up # 构建并启动全部服务(= docker compose up -d --build
# 或:make deploy-staging # 构建 + 启动 + 等待后端健康 + 探活前端
```
默认访问地址:
- 后端 API`http://localhost:3000/api/health`
- 孕妇端:`http://localhost:8081/`
- 医护/运营端:`http://localhost:8082/`
- 家属端:`http://localhost:8083/`
常用命令:`make ps`(状态)、`make logs`(日志)、`make down`(停止)。
镜像构成:
- 后端:多阶段构建(编译 → 仅生产依赖,非 root 运行,含健康检查)。
- 三前端:Vite 构建产物由 nginx 托管,SPA 路由回退,`/api` 反向代理到 `backend` 服务。
环境分层:
- dev:各应用 `npm run dev`Vite 代理 `/api` 到本地后端。
- staging`make deploy-staging`(本编排)。
- prod:同编排为基线,需追加 TLS 终止、密钥管理、PostgreSQL 持久化与监控。
> 持久化:编排含 PostgreSQL `db` 服务,后端经 `DATABASE_URL` 连接并持久化(auth/audit 已落库,启动幂等建表)。不设置 `DATABASE_URL` 时后端回退内存仓储(dev/测试)。字段级加密密钥经 `FIELD_ENCRYPTION_KEY` 注入(用于敏感健康字段,随 patient/observation 迁移启用)。
## 安全约定
- 密钥仅放本地 `.env`,不提交仓库;生产 `AUTH_SECRET` 必须为强随机值。
- 全局守卫:JwtAuthGuard(令牌校验)+ CapabilitiesGuardRBAC 能力授权,越权 403 并审计)。
- 孕产+胎儿数据按最敏感个人信息处理(加密、最小化、分级访问、审计)。