Files
AIclinicalresearch/快速部署到SAE.md
HaHafeng 4c6eaaecbf feat(dc): Implement Postgres-Only async architecture and performance optimization
Summary:
- Implement async file upload processing (Platform-Only pattern)
- Add parseExcelWorker with pg-boss queue
- Implement React Query polling mechanism
- Add clean data caching (avoid duplicate parsing)
- Fix pivot single-value column tuple issue
- Optimize performance by 99 percent

Technical Details:

1. Async Architecture (Postgres-Only):
   - SessionService.createSession: Fast upload + push to queue (3s)
   - parseExcelWorker: Background parsing + save clean data (53s)
   - SessionController.getSessionStatus: Status query API for polling
   - React Query Hook: useSessionStatus (auto-serial polling)
   - Frontend progress bar with real-time feedback

2. Performance Optimization:
   - Clean data caching: Worker saves processed data to OSS
   - getPreviewData: Read from clean data cache (0.5s vs 43s, -99 percent)
   - getFullData: Read from clean data cache (0.5s vs 43s, -99 percent)
   - Intelligent cleaning: Boundary detection + ghost column/row removal
   - Safety valve: Max 3000 columns, 5M cells

3. Bug Fixes:
   - Fix pivot column name tuple issue for single value column
   - Fix queue name format (colon to underscore: asl:screening -> asl_screening)
   - Fix polling storm (15+ concurrent requests -> 1 serial request)
   - Fix QUEUE_TYPE environment variable (memory -> pgboss)
   - Fix logger import in PgBossQueue
   - Fix formatSession to return cleanDataKey
   - Fix saveProcessedData to update clean data synchronously

4. Database Changes:
   - ALTER TABLE dc_tool_c_sessions ADD COLUMN clean_data_key VARCHAR(1000)
   - ALTER TABLE dc_tool_c_sessions ALTER COLUMN total_rows DROP NOT NULL
   - ALTER TABLE dc_tool_c_sessions ALTER COLUMN total_cols DROP NOT NULL
   - ALTER TABLE dc_tool_c_sessions ALTER COLUMN columns DROP NOT NULL

5. Documentation:
   - Create Postgres-Only async task processing guide (588 lines)
   - Update Tool C status document (Day 10 summary)
   - Update DC module status document
   - Update system overview document
   - Update cloud-native development guide

Performance Improvements:
- Upload + preview: 96s -> 53.5s (-44 percent)
- Filter operation: 44s -> 2.5s (-94 percent)
- Pivot operation: 45s -> 2.5s (-94 percent)
- Concurrent requests: 15+ -> 1 (-93 percent)
- Complete workflow (upload + 7 ops): 404s -> 70.5s (-83 percent)

Files Changed:
- Backend: 15 files (Worker, Service, Controller, Schema, Config)
- Frontend: 4 files (Hook, Component, API)
- Docs: 4 files (Guide, Status, Overview, Spec)
- Database: 4 column modifications
- Total: ~1388 lines of new/modified code

Status: Fully tested and verified, production ready
2025-12-22 21:30:31 +08:00

6.7 KiB
Raw Blame History

🚀 快速部署到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

  2. 确认阿里云服务已购买

    • SAE (Serverless应用引擎)
    • RDS PostgreSQL
    • OSS (对象存储)

Step 2: 构建和推送镜像15分钟

打开PowerShell执行

# 1. 进入项目目录
cd D:\MyCursor\AIclinicalresearch

# 2. 使用自动化脚本部署
.\deploy-to-sae.ps1 -Version "v1.0.0"

# 脚本会自动完成:
# - 构建Docker镜像
# - 推送到阿里云容器镜像服务

如果提示需要登录阿里云:

docker login --username=你的阿里云账号 registry.cn-hangzhou.aliyuncs.com
# 输入密码(在阿里云容器镜像服务设置的密码)

Step 3: 在SAE控制台完成部署30分钟

  1. 登录阿里云控制台

  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

配置方法:

# 初期配置
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静态托管推荐初期

# 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

预期返回:

{
  "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
维护者: 技术架构师
下次更新: 根据实际部署反馈优化