eab91174db
Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
3.2 KiB
Markdown
70 lines
3.2 KiB
Markdown
# 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 移动 Web,AI 对话优先)
|
||
- `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(令牌校验)+ CapabilitiesGuard(RBAC 能力授权,越权 403 并审计)。
|
||
- 孕产+胎儿数据按最敏感个人信息处理(加密、最小化、分级访问、审计)。
|