# 🚀 AI临床研究平台 - 部署进度总览 > **文档用途**:统一展示项目部署状态、资源信息、操作手册索引 > **更新时间**:2025-12-24 > **维护人员**:开发团队 --- ## 📊 一、部署进度一览表 | 服务名称 | 部署状态 | 镜像版本 | 部署位置 | 完成时间 | 操作文档 | |---------|---------|---------|---------|---------|---------| | **PostgreSQL数据库** | ✅ 已完成 | PostgreSQL 15 | RDS | 2025-12-24 | [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md) | | **前端Nginx服务** | ✅ 已完成 | v1.0 | SAE(待部署) | 2025-12-24 | [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md) | | **Python微服务** | ✅ 已完成 | v1.0 | SAE(轻量版) | 2025-12-24 | [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md) | | **Node.js后端** | ✅ 已完成 | v1.0 | SAE(待部署) | 2025-12-24 | [10-Node.js后端-Docker镜像构建手册.md](./10-Node.js后端-Docker镜像构建手册.md) | | **Dify AI服务** | ⏳ 待开始 | - | - | - | - | **图例说明**: - ✅ 已完成:服务已成功部署并验证 - 🔄 进行中:正在部署或配置 - ⏳ 待开始:尚未开始 --- ## 🔑 二、阿里云资源速查表 ### 2.1 ACR容器镜像仓库 **基本信息**: - **命名空间**:`ai-clinical` - **Registry地址(公网)**:`crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com` - **Registry地址(VPC)**:`crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com` - **用户名**:`gofeng117@163.com` - **密码**:`fengzhibo117` **镜像仓库列表**: | 仓库名称 | 最新版本 | 镜像大小 | 公网地址 | VPC地址 | |---------|---------|---------|---------|---------| | **python-extraction** | v1.0 | 1.12GB | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` | | **ai-clinical_frontend-nginx** | v1.0 | ~50MB | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0` | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0` | | **backend-service** | v1.0 | 838MB | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0` | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0` | --- ### 2.2 VPC网络与NAT网关 **VPC信息**: - **VPC ID**:`vpc-2ze055cptkew9c38w4r06` - **VPC名称**:`ai-clinical-vpc` - **网段**:`172.17.0.0/16` - **地域**:华北2(北京) - **交换机1**:`vsw-2zevacop039bxrmj6yc0c`(可用区F) - **交换机2**:`vsw-2zehoeyw9ldncymcyvfwq`(可用区A) - **安全组ID**:`sg-2zedk6fi8sgmmcwdu7tu` **NAT网关信息**: - **NAT网关名称**:`NAT_airesearch` - **NAT网关ID**:`ngw-2zeec9ulzgw7ywvx1pst6` - **公网IP(EIP)**:`182.92.176.14` - **SNAT表ID**:`stb-2zesszmzx1qpwf1cb2bry` - **SNAT条目**:覆盖所有交换机,允许VPC内资源访问公网 --- ### 2.3 RDS PostgreSQL数据库 **实例信息**: - **实例ID**:`pgm-2zex1m2y3r23hdn5` - **规格**:2核4GB(pg.n2.2c.1m) - **存储空间**:100GB(SSD云盘) - **PostgreSQL版本**:15.0 - **内网地址**:`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432` - **外网地址**:`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com`(⚠️ 已关闭) - **最大连接数**:400 - **时区**:Asia/Shanghai - **白名单**:172.17.0.0/16(VPC网段) **数据库配置**: - **数据库名**:`ai_clinical_research` - **用户名**:`airesearch` - **密码**:`Xibahe@fengzhibo117` - **字符集**:UTF8 - **排序规则**:en_US.utf8 **Schema架构**(11个业务Schema): | Schema名称 | 功能模块 | 表数量 | 说明 | |-----------|---------|-------|------| | `platform_schema` | 平台核心 | 8 | 用户、权限、任务队列(pg-boss) | | `asl_schema` | 系统文献筛查 | 6 | 项目、文献、筛查记录 | | `aia_schema` | AI智能摘要 | 5 | AI项目、摘要任务 | | `dc_schema` | 数据清洗 | 6 | 工具A/B/C数据处理 | | `pkb_schema` | 个人知识库 | 5 | 文献管理、笔记 | | `admin_schema` | 系统管理 | 0 | 预留 | | `rvw_schema` | 文献回顾 | 0 | 预留 | | `ssa_schema` | 智能统计分析 | 0 | 预留 | | `st_schema` | 统计工具 | 0 | 预留 | | `common_schema` | 公共模块 | 0 | 预留 | | `information_schema` | 系统元数据 | - | PostgreSQL标准 | **关键数据量**(截至2025-12-24): - 用户:3条 - AI项目:2条 - 文献:1204条 - 筛查记录:783条 - pg-boss任务:350条 **连接字符串格式**: ``` postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research ``` ⚠️ 注意:密码中的 `@` 需要URL编码为 `%40` --- ### 2.4 SAE Serverless应用 **命名空间**: - **命名空间ID**:`cn-beijing:test-airesearch` - **地域**:华北2(北京) **已部署/待部署应用列表**: | 应用名称 | 状态 | 规格 | 实例数 | 端口 | 内网地址 | 公网地址 | |---------|------|------|-------|------|---------|---------| | **python-extraction-test** | ✅ 运行中 | 1核2GB | 1 | 8000 | `http://172.17.173.66:8000` | 无(仅内网) | | **nodejs-backend-test** | 镜像已推送 | 1核2GB | 1 | 3001 | 待部署后填写 | 待部署后填写 | | **frontend-nginx** | 镜像已推送 | 1核2GB | 1 | 80 | 待部署后填写 | 待部署后填写 | --- ### 2.5 OSS对象存储 **Bucket信息**: - **Bucket名称**:`ai-clinical-research` - **地域**:华北2(北京) - **存储类型**:标准存储 - **访问控制**:私有 - **存储冗余类型**:同城冗余存储 - **内网Endpoint**:`oss-cn-beijing-internal.aliyuncs.com` - **公网Endpoint**:`oss-cn-beijing.aliyuncs.com` - **Bucket域名(内网)**:`ai-clinical-research.oss-cn-beijing-internal.aliyuncs.com` - **创建时间**:2025-12-16 20:22 **RAM用户访问凭证**(用于OSS写入): - **RAM用户名**:`oss-bucket-put-object@1991407246109125.onaliyun.com` - **AccessKeyId**:`LTAI5tB2Dt3NdvBL3G7nYGv7` - **AccessKeySecret**:`1iSN9k39RkApP93QjUhC1DcPIeMG4V` - **UID**:`203256565888301026` - **创建时间**:2025-12-16 20:31:41 ⚠️ **安全警告**:AccessKey是敏感信息,请勿提交到公开Git仓库! **存储用途**: - `/uploads/pdfs/` - PDF文件上传 - `/uploads/docx/` - Word文档上传 - `/uploads/txt/` - 文本文件上传 - `/exports/` - 导出文件临时存储 --- --- ### 2.6 镜像配置文件存储位置 **前端Nginx服务**: ``` AIclinicalresearch/frontend-v2/ ├── Dockerfile ✅ 已提交Git(多阶段构建) ├── .dockerignore ✅ 已提交Git(优化构建上下文) ├── nginx.conf ✅ 已提交Git(Nginx配置) └── docker-entrypoint.sh ✅ 已提交Git(启动脚本) 镜像存储位置: 公网:crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0 VPC:crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0 ``` **Python微服务**: ``` AIclinicalresearch/extraction_service/ ├── Dockerfile ✅ 已提交Git(多阶段构建 + 阿里云源) ├── .dockerignore ✅ 已提交Git(优化构建上下文) └── requirements-prod.txt ✅ 已提交Git(精简依赖列表) 镜像存储位置: 公网:crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0 VPC:crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0 ``` **Node.js后端**: ``` AIclinicalresearch/backend/ ├── Dockerfile ✅ 已提交Git(改进版方案B:本地编译+Docker打包) ├── .dockerignore ✅ 已提交Git(优化构建上下文) ├── prisma/schema.prisma ✅ 已同步RDS(32个模型+30+关系字段) └── tsconfig.json ✅ 已优化(排除测试文件) 镜像存储位置: 公网:crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0 VPC:crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0 镜像摘要:sha256:a4ffb61c15af1cd1ed9de187b4464a1aab773918e5b41b4df5b8ad96514f9941 ``` **Git提交规范**: | 文件类型 | 是否提交Git | 说明 | |---------|------------|------| | ✅ Dockerfile | 必须提交 | 镜像构建蓝图,团队协作必需 | | ✅ .dockerignore | 必须提交 | 优化构建性能,避免传输无用文件 | | ✅ requirements*.txt / package.json | 必须提交 | 依赖清单,可复现构建 | | ✅ nginx.conf / 配置文件 | 必须提交 | 服务配置 | | ❌ .env | 禁止提交 | 敏感信息(密码、API密钥) | | ❌ Docker镜像文件(.tar) | 禁止提交 | 镜像文件很大,存储在ACR云端 | --- ## 📦 三、已部署服务详情 ### 3.1 PostgreSQL数据库 **部署概要**: - **部署时间**:2025-12-24 - **部署方式**:`pg_dump` 全量导出 → RDS导入 - **数据迁移时长**:约12秒(90MB SQL文件) - **验证状态**:✅ Schema完整、数据一致、关系正确 **关键配置**: ```bash # 本地PostgreSQL Docker容器 docker run --name ai-clinical-postgres \ -e POSTGRES_PASSWORD=postgres \ -e POSTGRES_DB=ai_clinical_research \ -p 5432:5432 \ -d postgres:15-alpine ``` **备份信息**: - **本地备份文件**:`AIclinicalresearch/rds_init_20251224_154529.sql`(90MB) - **备份内容**:完整Schema + 全量数据 - **RDS自动备份**:每日凌晨2点(保留7天) **操作文档**: - [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md) - 完整部署流程 - [PostgreSQL部署策略-摸底报告.md](./PostgreSQL部署策略-摸底报告.md) - 数据库分析报告 **重要提示**: - ⚠️ **安全**:外网访问已关闭,生产环境禁止长期开启 - ⚠️ **连接**:需通过VPC内网或SSH隧道连接 - ⚠️ **密码**:环境变量中的 `@` 需转义为 `%40` --- ### 3.2 前端Nginx服务 **镜像信息**: - **仓库名称**:`ai-clinical_frontend-nginx` - **镜像版本**:`v1.0` - **镜像大小**:约50MB - **基础镜像**:`nginx:alpine` - **构建时间**:2025-12-24 **镜像功能**: - ✅ 托管React单页应用(SPA) - ✅ Nginx反向代理API请求 - ✅ 支持动态环境变量注入 - ✅ Gzip压缩优化 - ✅ 健康检查端点 **构建产物**: - **Dockerfile**:`AIclinicalresearch/frontend-v2/Dockerfile` - **Nginx配置**:`AIclinicalresearch/frontend-v2/nginx.conf` - **.dockerignore**:`AIclinicalresearch/frontend-v2/.dockerignore` **SAE配置建议**: - **CPU/内存**:1核 / 2GB - **实例数**:1 - **端口**:80 - **健康检查**:`GET /` 返回200 - **环境变量**: ```bash VITE_API_BASE_URL=http://nodejs-backend-service.cn-beijing:test-airesearch.svc.cluster.local:3001 ``` ⚠️ 注意:内网地址需在SAE部署后获取 **操作文档**: - [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md) - 完整SAE部署步骤 - [06-前端Nginx-SAE容器部署指南.md](./06-前端Nginx-SAE容器部署指南.md) - 技术架构详解 **部署状态**: - ✅ Docker镜像构建成功 - ✅ 镜像已推送至ACR - ⏳ 待部署到SAE --- ### 3.3 Node.js后端服务 **镜像信息**: - **仓库名称**:`backend-service` - **镜像版本**:`v1.0` - **镜像大小**:838MB (压缩后 ~186MB) - **基础镜像**:`node:alpine` - **构建时间**:2025-12-24 - **构建策略**:改进版方案B(本地编译+Docker打包) **构建成果**: - ✅ TypeScript编译成功(0错误,修复200+个错误) - ✅ Prisma Schema已同步RDS(32个模型) - ✅ 手动补全30+个关系字段 - ✅ 镜像已推送到ACR(v1.0 + latest) **技术架构**: - **Node.js版本**:22.x - **Prisma版本**:6.17.0 - **ORM**:Prisma(支持多Schema) - **Web框架**:Fastify - **队列系统**:pg-boss(Postgres-Only架构) - **缓存系统**:PostgreSQL(替代Redis) **构建产物**: - **Dockerfile**:`AIclinicalresearch/backend/Dockerfile` - **.dockerignore**:`AIclinicalresearch/backend/.dockerignore` - **Prisma Schema**:`AIclinicalresearch/backend/prisma/schema.prisma` **SAE配置建议**: - **CPU/内存**:1核 / 2GB(测试环境) - **实例数**:1 - **端口**:3001 - **健康检查**:`GET /health` 返回200 - **环境变量**(关键配置): ```bash NODE_ENV=production PORT=3001 DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=18&pool_timeout=10 # Python微服务地址 PYTHON_SERVICE_URL=http://172.17.173.66:8000 # OSS配置 OSS_ACCESS_KEY_ID=LTAI5tB2Dt3NdvBL3G7nYGv7 OSS_ACCESS_KEY_SECRET=1iSN9k39RkApP93QjUhC1DcPIeMG4V OSS_BUCKET=ai-clinical-research OSS_ENDPOINT=oss-cn-beijing-internal.aliyuncs.com # JWT密钥 JWT_SECRET=your-secret-key-change-in-production JWT_EXPIRES_IN=7d # LLM API Keys DEEPSEEK_API_KEY=sk-7f8cc37a79fa4799860b38fc7ba2e150 DASHSCOPE_API_KEY=sk-75b4ff29a14a49e79667a331034f3298 # 队列和缓存(Postgres-Only) QUEUE_TYPE=pgboss CACHE_TYPE=postgres ``` **操作文档**: - [10-Node.js后端-Docker镜像构建手册.md](./10-Node.js后端-Docker镜像构建手册.md) - 镜像构建详细步骤 - [05-Node.js后端-SAE容器部署指南.md](./05-Node.js后端-SAE容器部署指南.md) - SAE部署技术指南 **部署状态**: - ✅ Prisma反向同步完成(32个模型) - ✅ TypeScript编译成功(修复200+错误) - ✅ Docker镜像构建成功 - ✅ 镜像已推送至ACR - ⏳ 待部署到SAE **关键突破**: 1. ✅ 解决了Prisma `db pull` 后缺少关系字段的问题(手动补全30+个) 2. ✅ 修复了TypeScript类型错误(JSON、Buffer、pg-boss等) 3. ✅ 优化了Docker构建策略(本地编译,避免网络超时) 4. ✅ 实现了零编译错误(200+ → 0) --- ### 3.4 Python微服务 **镜像信息**: - **仓库名称**:`python-extraction` - **镜像版本**:`v1.0` - **镜像大小**:1.12GB - **基础镜像**:`python:3-slim` - **构建时间**:2025-12-24 **功能模块**: - ✅ **PDF文本提取**:PyMuPDF 1.26.7 - ✅ **Docx文档提取**:Mammoth + python-docx - ✅ **数据清洗(DC工具)**:pandas 2.0+ / numpy 1.24+ / polars 0.19+ - ✅ **语言检测**:langdetect - ❌ **Nougat OCR**:已移除(减小镜像1.5GB) **依赖优化**: ```txt # 精简版依赖(requirements-prod.txt) - 移除:nougat-ocr (1.5GB) - 移除:albumentations (Nougat依赖) - 保留:pandas、numpy、polars(DC工具必需) - 保留:PyMuPDF、pdfplumber(PDF提取) ``` **健康检查**: - **端点**:`GET /api/health` - **响应示例**: ```json { "status": "healthy", "checks": { "pymupdf": {"available": true, "version": "1.26.7"}, "nougat": {"available": false, "error": "Nougat未安装"}, "temp_dir": {"path": "/tmp/extraction_service", "writable": true} } } ``` **SAE配置建议**: - **CPU/内存**:1核 / 2GB - **实例数**:1 - **端口**:8000 - **启动命令**:默认(Dockerfile中的CMD) - **健康检查**:`GET /api/health` 返回200 - **环境变量**: ```bash LOG_LEVEL=INFO TEMP_DIR=/tmp/extraction_service ``` ⚠️ 生产环境建议根据实际负载调整实例数 **构建产物**: - **Dockerfile**:`AIclinicalresearch/extraction_service/Dockerfile` - **依赖文件**:`AIclinicalresearch/extraction_service/requirements-prod.txt` - **.dockerignore**:`AIclinicalresearch/extraction_service/.dockerignore` **关键技术方案**: - ✅ 使用阿里云Debian镜像源(解决apt-get网络问题) - ✅ 多阶段构建(优化镜像大小) - ✅ 运行时依赖安装(libgl1、libglib2.0) **操作文档**: - [04-Python微服务-SAE容器部署指南.md](./04-Python微服务-SAE容器部署指南.md) - 技术架构详解 - [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md) - SAE部署操作步骤 **部署状态**: - ✅ Docker镜像构建成功(本地测试通过) - ✅ 镜像已推送至ACR - ✅ 已部署到SAE(轻量版应用) - ✅ 应用运行正常(2个worker进程) **内网访问地址**: ``` http://172.17.173.66:8000 ``` **部署时间**:2025-12-24 **健康检查**:✅ 通过 --- ## ⚡ 四、快速命令参考 ### 4.1 Docker镜像管理 **登录ACR**: ```bash # 使用公网地址登录 docker login --username=gofeng117@163.com \ --password=fengzhibo117 \ crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com ``` **拉取镜像**: ```bash # 前端Nginx docker pull crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0 # Python微服务 docker pull crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0 ``` **本地测试**: ```bash # 前端Nginx(端口3000) docker run -d -p 3000:80 \ -e VITE_API_BASE_URL=http://localhost:3001 \ --name frontend-test \ ai-clinical_frontend-nginx:v1.0 # Python微服务(端口8000) docker run -d -p 8000:8000 \ --name python-test \ python-extraction:v1.0 # 查看日志 docker logs -f frontend-test docker logs -f python-test # 健康检查 curl http://localhost:3000 # 前端 curl http://localhost:8000/api/health # Python微服务 ``` **构建新版本**: ```bash # 前端Nginx cd AIclinicalresearch/frontend-v2 docker build -t ai-clinical_frontend-nginx:v1.1 . docker tag ai-clinical_frontend-nginx:v1.1 \ crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1 docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1 # Python微服务 cd AIclinicalresearch/extraction_service docker build -t python-extraction:v1.1 -f Dockerfile . docker tag python-extraction:v1.1 \ crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1 docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1 ``` --- ### 4.2 数据库连接与管理 **通过本地Docker容器连接RDS**: ```bash # 启动本地PostgreSQL容器(用于psql客户端) docker run --name ai-clinical-postgres \ -e POSTGRES_PASSWORD=postgres \ -p 5432:5432 \ -d postgres:15-alpine # 连接到RDS(需临时开启外网或使用VPC) docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \ ai-clinical-postgres psql \ -h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \ -p 5432 \ -U airesearch \ -d ai_clinical_research # 查看Schema列表 docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \ ai-clinical-postgres psql \ -h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \ -p 5432 -U airesearch -d ai_clinical_research \ -c "SELECT nspname FROM pg_namespace WHERE nspname LIKE '%_schema' ORDER BY nspname;" # 查看表数量统计 docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \ ai-clinical-postgres psql \ -h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \ -p 5432 -U airesearch -d ai_clinical_research \ -c "SELECT schemaname, COUNT(*) FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema') GROUP BY schemaname;" ``` **数据库备份**: ```bash # 导出完整数据库 docker exec ai-clinical-postgres pg_dump \ -U postgres \ -d ai_clinical_research \ --format=plain \ --no-owner \ --no-acl \ --encoding=UTF8 \ > "backup_$(date +%Y%m%d_%H%M%S).sql" # 导入到RDS(需临时开启外网) cat backup_20251224_154529.sql | \ docker exec -i -e PGPASSWORD="Xibahe@fengzhibo117" \ ai-clinical-postgres psql \ -h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \ -p 5432 -U airesearch -d ai_clinical_research ``` **Node.js应用连接字符串**: ```bash # .env 文件配置 DATABASE_URL="postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research" # 注意:@ 符号需要URL编码为 %40 ``` --- ### 4.3 SAE常用操作 **通过阿里云CLI部署**(可选): ```bash # 安装阿里云CLI # https://help.aliyun.com/document_detail/121541.html # 配置访问凭证 aliyun configure # 部署应用(示例) aliyun sae DeployApplication \ --AppId xxx \ --ImageUrl crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0 \ --Namespace cn-beijing:xxx ``` **通过Web控制台部署**(推荐): 1. 登录阿里云SAE控制台 2. 选择应用 → 部署应用 3. 选择镜像版本 4. 配置环境变量 5. 确认部署 --- ## ⚠️ 五、注意事项与最佳实践 ### 5.1 安全规范 🔒 **数据库安全**: - ❌ **禁止**:RDS外网地址长期开启 - ✅ **推荐**:使用VPC内网或SSH隧道连接 - ✅ **白名单**:仅允许必要的IP访问 - ✅ **密码强度**:使用复杂密码(大小写+数字+特殊字符) **镜像仓库安全**: - ❌ **禁止**:在代码中硬编码ACR密码 - ✅ **推荐**:定期轮换Registry密码(每季度) - ✅ **访问控制**:仅团队成员拥有推送权限 **环境变量管理**: - ❌ **禁止**:在Git中提交 `.env` 文件 - ✅ **推荐**:使用SAE的环境变量配置功能 - ✅ **敏感信息**:数据库密码、API密钥等使用环境变量 **SSL/TLS**: - ✅ 生产环境必须启用HTTPS - ✅ 使用阿里云免费SSL证书或Let's Encrypt --- ### 5.2 部署顺序 📋 **推荐的部署顺序**: 1. ✅ **基础设施**:VPC、NAT网关、安全组 2. ✅ **数据库**:RDS PostgreSQL(数据迁移+验证) 3. ✅ **对象存储**:OSS Bucket创建+权限配置 4. ✅ **后端服务**: - ✅ Python微服务(文档提取+数据清洗)- 已部署到SAE - ✅ Node.js后端(API服务器)- 镜像已构建,待部署 5. ⏳ **前端服务**:Nginx静态资源托管 - 镜像已推送,待部署 6. ⏳ **AI服务**:Dify部署 7. ⏳ **验证测试**:全链路功能验证 **依赖关系**: ``` RDS PostgreSQL (必需) ↓ Node.js 后端 (依赖数据库) ↓ Python 微服务 (可独立,但后端会调用) ↓ 前端 Nginx (依赖后端API) ↓ Dify AI (可独立) ``` --- ### 5.3 回滚策略 🔄 **镜像版本管理**: - ACR保留所有历史版本(v1.0, v1.1, v1.2...) - 使用语义化版本号:`major.minor.patch` - 生产环境使用固定版本号,禁止使用 `:latest` **SAE应用回滚**: - SAE支持一键回滚到上一版本 - 回滚时长:约1-2分钟 - 建议:部署前先在测试环境验证 **数据库回滚**: - RDS自动备份:每日凌晨2点(保留7天) - 手动备份:重大变更前务必手动备份 - 回滚时长:取决于数据量(约10分钟/10GB) --- ### 5.4 监控与日志 📊 **应用监控**(建议配置): - **健康检查**:每个服务配置健康检查端点 - **日志收集**:SAE自动收集stdout/stderr日志 - **告警规则**:CPU>80%、内存>80%、健康检查失败 **日志查看**: ```bash # SAE控制台 → 应用详情 → 日志查询 # 或使用阿里云CLI aliyun sae DescribeApplicationInstances --AppId xxx ``` **性能指标**: - **响应时间**:API平均响应<500ms - **错误率**:<1% - **可用性**:>99.9% --- ### 5.5 成本优化 💰 **SAE资源配置**: - **开发环境**:0.5核 / 1GB(约¥30/月) - **生产环境**:1核 / 2GB(约¥60/月) - **弹性伸缩**:根据流量自动扩缩容 **RDS成本**: - **按量付费**:测试阶段使用 - **包年包月**:生产环境更优惠(约¥800/月) **OSS成本**: - **存储费用**:约¥0.12/GB/月 - **流量费用**:内网流量免费,外网流量¥0.5/GB --- ## 📝 六、待办事项清单 ### 高优先级 🔴 - [x] **Python微服务**:部署到SAE并验证 ✅ 已完成 - [x] **Python微服务**:创建SAE部署操作手册 ✅ 已完成 - [x] **Node.js后端**:Docker镜像构建 ✅ 已完成(2025-12-24) - [x] **Node.js后端**:Prisma反向同步 ✅ 已完成(32个模型) - [x] **Node.js后端**:TypeScript编译修复 ✅ 已完成(修复200+错误) - [x] **Node.js后端**:镜像推送到ACR ✅ 已完成 - [ ] **Node.js后端**:部署到SAE - [ ] **Node.js后端**:配置环境变量(Python服务地址) ### 中优先级 🟡 - [ ] **前端Nginx**:部署到SAE并配置域名 - [ ] **内网通信**:配置前端→后端→Python微服务的内网调用 - [ ] **SSL证书**:申请并配置HTTPS - [ ] **监控告警**:配置SAE健康检查和告警规则 ### 低优先级 🟢 - [ ] **Dify AI**:评估部署方案 - [ ] **负载测试**:压力测试各服务性能 - [ ] **文档完善**:补充故障排查手册 - [ ] **CI/CD**:配置自动化部署流程 --- ## 📚 七、相关文档索引 ### 部署指南 - [01-快速部署SOP-零基础版.md](./01-快速部署SOP-零基础版.md) - **完整部署流程总纲** - [02-SAE部署完全指南(产品经理版).md](./02-SAE部署完全指南(产品经理版).md) - SAE基础知识 ### 服务部署手册 - [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md) - 前端Nginx部署步骤 - [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md) - PostgreSQL部署步骤 - [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md) - Python微服务部署步骤 - [10-Node.js后端-Docker镜像构建手册.md](./10-Node.js后端-Docker镜像构建手册.md) - Node.js后端Docker构建详解 ### 技术架构文档 - [00-部署架构总览.md](./00-部署架构总览.md) - 架构设计与技术选型 - [04-Python微服务-SAE容器部署指南.md](./04-Python微服务-SAE容器部署指南.md) - Python服务技术详解 - [05-Node.js后端-SAE容器部署指南.md](./05-Node.js后端-SAE容器部署指南.md) - Node.js后端技术详解 - [06-前端Nginx-SAE容器部署指南.md](./06-前端Nginx-SAE容器部署指南.md) - 前端Nginx技术详解 ### 分析报告 - [PostgreSQL部署策略-摸底报告.md](./PostgreSQL部署策略-摸底报告.md) - 数据库结构分析 --- ## 🔄 八、更新日志 ### 2025-12-24 - ✅ PostgreSQL数据库部署完成 - ✅ 前端Nginx Docker镜像构建并推送至ACR - ✅ Python微服务Docker镜像构建并推送至ACR - ✅ 创建部署进度总览文档 - ✅ 创建Python微服务SAE部署操作手册(轻量版SAE配置) - ✅ Python微服务成功部署到SAE(内网地址:172.17.173.66:8000) - ✅ 解决ACR镜像拉取权限问题(配置镜像仓库认证) - ✅ Node.js后端Prisma反向同步完成(32个模型,手动补全30+关系字段) - ✅ Node.js后端TypeScript编译修复完成(修复200+错误→0错误) - ✅ Node.js后端Docker镜像构建成功(838MB,改进版方案B) - ✅ Node.js后端镜像推送至ACR(v1.0 + latest) - ✅ 创建Node.js后端Docker镜像构建手册 --- ## 📞 九、联系与支持 **技术支持**: - 开发团队内部文档 - 阿里云工单:https://workorder.console.aliyun.com/ **紧急联系**: - 数据库问题:先检查 [08-PostgreSQL数据库部署操作手册.md] - SAE部署问题:先检查 [01-快速部署SOP-零基础版.md] - 镜像构建问题:查看本文档"快速命令参考"章节 --- > **提示**:本文档会随着部署进度持续更新,请定期查看最新版本! > **最后更新**:2025-12-24