feat(platform): Complete Postgres-Only architecture refactoring (Phase 1-7)

Major Changes:
- Implement Platform-Only architecture pattern (unified task management)
- Add PostgresCacheAdapter for unified caching (platform_schema.app_cache)
- Add PgBossQueue for job queue management (platform_schema.job)
- Implement CheckpointService using job.data (generic for all modules)
- Add intelligent threshold-based dual-mode processing (THRESHOLD=50)
- Add task splitting mechanism (auto chunk size recommendation)
- Refactor ASL screening service with smart mode selection
- Refactor DC extraction service with smart mode selection
- Register workers for ASL and DC modules

Technical Highlights:
- All task management data stored in platform_schema.job.data (JSONB)
- Business tables remain clean (no task management fields)
- CheckpointService is generic (shared by all modules)
- Zero code duplication (DRY principle)
- Follows 3-layer architecture principle
- Zero additional cost (no Redis needed, save 8400 CNY/year)

Code Statistics:
- New code: ~1750 lines
- Modified code: ~500 lines
- Test code: ~1800 lines
- Documentation: ~3000 lines

Testing:
- Unit tests: 8/8 passed
- Integration tests: 2/2 passed
- Architecture validation: passed
- Linter errors: 0

Files:
- Platform layer: PostgresCacheAdapter, PgBossQueue, CheckpointService, utils
- ASL module: screeningService, screeningWorker
- DC module: ExtractionController, extractionWorker
- Tests: 11 test files
- Docs: Updated 4 key documents

Status: Phase 1-7 completed, Phase 8-9 pending
This commit is contained in:
2025-12-13 16:10:04 +08:00
parent a3586cdf30
commit fa72beea6c
135 changed files with 17508 additions and 91 deletions

315
快速部署到SAE.md Normal file
View File

@@ -0,0 +1,315 @@
# 🚀 快速部署到SAE - 5分钟上手
> **适合人群:** 零部署经验的产品经理
> **预计时间:** 2-3小时包含等待
> **难度等级:** ⭐⭐ 简单
---
## 📚 完整文档清单
我已经为您准备了3份详细文档请按顺序阅读
### 1⃣ 详细部署指南(必读)
**文件:** `docs/05-部署文档/02-SAE部署完全指南(产品经理版).md`
**内容:**
- ✅ 需不需要购买Redis的答案
- ✅ 傻瓜式部署步骤7个大步骤
- ✅ 每一步都有截图和说明
- ✅ 常见问题解决方案
- ✅ 成本估算和优化建议
**阅读时间:** 20-30分钟
---
### 2⃣ 环境变量配置指南(必读)
**文件:** `docs/07-运维文档/03-SAE环境变量配置指南.md`
**内容:**
- ✅ 所有环境变量的详细说明
- ✅ 如何正确填写每一个配置项
- ✅ 配置检查清单
- ✅ 常见错误和解决方法
**阅读时间:** 10-15分钟
---
### 3⃣ 部署检查清单(打印/对照)
**文件:** `部署检查清单.md`
**内容:**
- ✅ 7个阶段的检查项
- ✅ 每个步骤都有复选框
- ✅ 快速验证命令
- ✅ 重要信息记录模板
**使用方法:** 打印出来或在另一个屏幕打开,边部署边勾选
---
## 🎯 三步快速开始
### Step 1: 准备工具5分钟
1. **安装Docker Desktop**
- 下载https://www.docker.com/products/docker-desktop/
- 安装后重启电脑
- 确认Docker运行在PowerShell输入 `docker ps`
2. **确认阿里云服务已购买**
- ✅ SAE (Serverless应用引擎)
- ✅ RDS PostgreSQL
- ✅ OSS (对象存储)
---
### Step 2: 构建和推送镜像15分钟
**打开PowerShell执行**
```powershell
# 1. 进入项目目录
cd D:\MyCursor\AIclinicalresearch
# 2. 使用自动化脚本部署
.\deploy-to-sae.ps1 -Version "v1.0.0"
# 脚本会自动完成:
# - 构建Docker镜像
# - 推送到阿里云容器镜像服务
```
**如果提示需要登录阿里云:**
```powershell
docker login --username=你的阿里云账号 registry.cn-hangzhou.aliyuncs.com
# 输入密码(在阿里云容器镜像服务设置的密码)
```
---
### Step 3: 在SAE控制台完成部署30分钟
1. **登录阿里云控制台**
- https://www.aliyun.com
- 搜索"Serverless应用引擎"
2. **创建应用**
- 应用名称:`aiclinical-backend-dev`
- 镜像:选择刚才推送的镜像
- 实例规格1核2GB
3. **配置环境变量**
- 参考:`docs/07-运维文档/03-SAE环境变量配置指南.md`
- 逐行复制配置(注意替换真实值)
4. **验证部署**
- 访问:`http://你的SAE地址:3001/health`
- 看到 `{"status":"ok"}` 就成功了!
---
## ❓ 核心问题快速解答
### Q1: 需要购买Redis吗
**答案:初期不需要!**
- ✅ 开发测试环境:使用内存缓存(`CACHE_TYPE=memory`
- ✅ 用户<100人内存缓存足够
- ⚠️ 用户100-1000人建议购买Redis¥200/月)
- ✅ 用户>1000人必须使用Redis
**配置方法:**
```bash
# 初期配置
CACHE_TYPE=memory
# 未来需要时改为
CACHE_TYPE=redis
REDIS_HOST=r-xxxx.redis.rds.aliyuncs.com
REDIS_PASSWORD=你的密码
```
---
### Q2: Python微服务怎么部署
**三个方案:**
**方案A暂不部署推荐初期**
- 先部署Node.js后端
- Python服务继续在本地运行
- 环境变量:`EXTRACTION_SERVICE_URL=http://你的本地公网IP:8000`
- 或使用ngrok等内网穿透工具
**方案B也部署到SAE推荐正式上线**
- 创建 `extraction_service/Dockerfile`
- 推送镜像到ACR
- 在SAE创建新应用 `aiclinical-python-dev`
- 配置SAE内网通信
**方案C使用阿里云FC函数计算**
- 成本最低
- 按调用次数付费
- 需要改造代码
---
### Q3: 前端怎么部署?
**两个方案:**
**方案AOSS静态托管推荐初期**
```powershell
# 1. 构建前端
cd frontend-v2
npm run build
# 2. 上传到OSS
# 在OSS控制台手动上传dist目录所有文件
# 3. 配置静态网站托管
# OSS控制台 → 基础设置 → 静态页面
```
**方案BSAE部署推荐正式**
- 使用Nginx容器
- 创建Dockerfile for frontend
- 部署到SAE独立应用
---
### Q4: 部署失败怎么办?
**3个排查步骤**
1. **查看日志**
```
SAE控制台 → 应用详情 → 实时日志
找红色ERROR关键词
```
2. **检查环境变量**
```
SAE控制台 → 配置管理 → 环境变量
确认DATABASE_URL、OSS密钥等配置正确
```
3. **查看详细文档**
```
docs/05-部署文档/02-SAE部署完全指南(产品经理版).md
→ 第8章常见问题解决
```
---
## 📊 部署成功标志
### ✅ 后端部署成功
访问:`http://你的SAE地址:3001/health`
**预期返回:**
```json
{
"status": "ok",
"database": "connected",
"storage": "oss",
"cache": "memory",
"timestamp": "2025-12-11T10:30:00.000Z"
}
```
### ✅ 数据库连接成功
**日志中显示:**
```
✅ [Config] Environment validation passed
✅ [Database] 数据库连接成功
📦 [Storage] 使用阿里云 OSS 存储
```
### ✅ OSS存储正常
**测试方法:**
1. 访问后端API上传文件
2. 在OSS控制台能看到文件
3. 文件可以正常下载
---
## 💰 成本估算
### 开发测试环境(当前配置)
| 服务 | 规格 | 月费 | 说明 |
|------|------|------|------|
| SAE | 1C2G × 1实例 | ¥150 | 按量付费 |
| RDS | 2C4G 通用版 | ¥300 | 可包年优惠 |
| OSS | 100GB存储 | ¥10 | 按实际使用 |
| Redis | - | **¥0** | **不购买** |
| **合计** | | **¥460/月** | |
### 正式生产环境(用户>1000
| 服务 | 规格 | 月费 |
|------|------|------|
| SAE | 2C4G × 3实例 | ¥600 |
| RDS | 4C8G 通用版 | ¥600 |
| OSS | 500GB + 50GB流量 | ¥70 |
| Redis | 2GB标准版 | ¥200 |
| **合计** | | **¥1470/月** |
---
## 🎉 恭喜!
如果您已经完成部署,恭喜您!
### 记得保存重要信息:
```
【部署信息】
后端地址http://_______________:3001
前端地址http://_______________
RDS地址_______________
RDS密码_______________
OSS Bucketaiclinical-dev
OSS AccessKeyId_______________
OSS AccessKeySecret_______________
部署时间_______________
```
---
## 📞 需要帮助?
1. **查看详细文档**
- `docs/05-部署文档/02-SAE部署完全指南(产品经理版).md`
2. **查看环境变量配置**
- `docs/07-运维文档/03-SAE环境变量配置指南.md`
3. **使用检查清单**
- `部署检查清单.md`
4. **查看云原生架构设计**
- `docs/09-架构实施/03-云原生部署架构指南.md`
---
**版本:** v1.0
**创建日期:** 2025-12-11
**维护者:** 技术架构师
**下次更新:** 根据实际部署反馈优化