# 🚀 AI临床研究平台 - 阿里云SAE最新真实状态记? > **文档用?*:记录阿里云SAE服务器最新真实状?+ 每次部署记录 > **最后更?*?026-01-01 14:00 > **维护人员**:开发团? > **说明**:本文档准确记录SAE上所有应用的当前状态,包括内网地址、镜像版本、用户名密码等关键资源信? --- ## 📊 一、当前部署状态一? | 服务名称 | 部署状?| 镜像版本 | 部署位置 | 最后更新时?| |---------|---------|---------|---------|-------------| | **PostgreSQL数据?* | ?运行?| PostgreSQL 15 | RDS | 2025-12-24 | | **前端Nginx服务** | ?运行?| v1.2 | SAE | 2026-01-01 | | **Python微服?* | ?运行?| v1.0 | SAE | 2025-12-24 | | **Node.js后端** | ?运行?| v1.3 | SAE | 2025-12-25 | | **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-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` | | **ai-clinical_frontend-nginx** | v1.2 | ~50MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.2` | | **backend-service** | v1.3 | 838MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3` | --- ### 2.2 VPC网络与NAT网关 **VPC信息**?- **VPC ID**:`vpc-2ze055cptkew9c38w4r06` - **VPC名称**:`ai-clinical-vpc` - **网段**:`172.17.0.0/16` - **地域**:华?(北京) - **交换?**:`vsw-2zevacop039bxrmj6yc0c`(可用区F?- **交换?**:`vsw-2zehoeyw9ldncymcyvfwq`(可用区A?- **安全组ID**:`sg-2zedk6fi8sgmmcwdu7tu` **NAT网关信息**?- **NAT网关名称**:`NAT_airesearch` - **NAT网关ID**:`ngw-2zeec9ulzgw7ywvx1pst6` - **公网IP(EIP?*:`182.92.176.14` - **SNAT表ID**:`stb-2zesszmzx1qpwf1cb2bry` --- ### 2.3 RDS PostgreSQL数据? **实例信息**?- **实例ID**:`pgm-2zex1m2y3r23hdn5` - **规格**??GB(pg.n2.2c.1m?- **存储空间**?00GB(SSD云盘?- **PostgreSQL版本**?5.0 - **内网地址**:`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432` - **外网地址**:`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com`(⚠?已关闭) - **最大连接数**?00 - **时区**:Asia/Shanghai - **白名?*?72.17.0.0/16(VPC网段? **数据库配?*?- **数据库名**:`ai_clinical_research` - **用户?*:`airesearch` - **密码**:`Xibahe@fengzhibo117` - **字符?*:UTF8 - **排序规则**:en_US.utf8 **连接字符?*?``` postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research ``` ⚠️ 注意:密码中?`@` 需要URL编码?`%40` **Schema架构**?1个业务Schema): | Schema名称 | 功能模块 | 表数?| 说明 | |-----------|---------|-------|------| | `platform_schema` | 平台核心 | 8 | 用户、权限、任务队列(pg-boss?| | `asl_schema` | 系统文献筛查 | 6 | 项目、文献、筛查记?| | `aia_schema` | AI智能摘要 | 5 | AI项目、摘要任?| | `dc_schema` | 数据清洗 | 6 | 工具A/B/C数据处理 | | `pkb_schema` | 个人知识?| 5 | 文献管理、笔?| | `iit_schema` | IIT Manager Agent | 5 | IIT项目、待审核动作、任务运?| | `admin_schema` | 系统管理 | 0 | 预留 | | `rvw_schema` | 文献回顾 | 0 | 预留 | | `ssa_schema` | 智能统计分析 | 0 | 预留 | | `st_schema` | 统计工具 | 0 | 预留 | | `common_schema` | 公共模块 | 0 | 预留 | --- ### 2.4 SAE Serverless应用 **命名空间**?- **命名空间ID**:`cn-beijing:test-airesearch` - **地域**:华?(北京) **已部署应用列?*? | 应用名称 | 状?| 规格 | 实例?| 端口 | 内网地址 | 镜像版本 | |---------|------|------|-------|------|---------|---------| | **python-extraction-test** | ?运行?| 1?GB | 1 | 8000 | `http://172.17.173.66:8000` | v1.0 | | **nodejs-backend-test** | ?运行?| 1?GB | 1 | 3001 | `http://172.17.173.73:3001` | v1.3 | | **frontend-nginx-service** | ?运行?| 0.5?GB | 1 | 80 | `http://172.17.173.80:80` | v1.2 | **环境变量配置**? **Node.js后端(nodejs-backend-test?*?```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微服务地址 EXTRACTION_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 OSS_REGION=cn-beijing # JWT密钥 JWT_SECRET=8a3f9e7c2d1b5a4e6f8c9d0a3b5e7f1c2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4 JWT_EXPIRES_IN=7d # LLM API Keys DEEPSEEK_API_KEY=sk-7f8cc37a79fa4799860b38fc7ba2e150 DASHSCOPE_API_KEY=sk-75b4ff29a14a49e79667a331034f3298 # CloseAI配置 CLOSEAI_API_KEY=sk-cu0iepbXYGGx2jc7BqP6ogtSWmP6fk918qV3RUdtGC3Ed1po CLOSEAI_OPENAI_BASE_URL=https://api.openai-proxy.org/v1 CLOSEAI_CLAUDE_BASE_URL=https://api.openai-proxy.org/anthropic # Dify配置 DIFY_API_URL=http://localhost/v1 DIFY_API_KEY=dataset-mfvdiKvQ213NvxWm7RoYMN3c # Postgres-Only架构 QUEUE_TYPE=pgboss CACHE_TYPE=postgres # 企业微信配置 WECHAT_CORP_ID=ww6ab493470ab4f377 WECHAT_AGENT_ID=1000002 WECHAT_CORP_SECRET=AZIVxMtoLb0rEszXS81e4dBRl-I9kgTjygIS0cFfENU ``` **前端Nginx(frontend-nginx-service?*?```bash BACKEND_SERVICE_HOST=172.17.173.73 BACKEND_SERVICE_PORT=3001 ``` **Python微服务(python-extraction-test?*?```bash LOG_LEVEL=INFO TEMP_DIR=/tmp/extraction_service ``` --- ### 2.5 OSS对象存储 **Bucket信息**?- **Bucket名称**:`ai-clinical-research` - **地域**:华?(北京) - **存储类型**:标准存?- **访问控制**:私?- **存储冗余类型**:同城冗余存?- **内网Endpoint**:`oss-cn-beijing-internal.aliyuncs.com` - **公网Endpoint**:`oss-cn-beijing.aliyuncs.com` - **Bucket域名(内网)**:`ai-clinical-research.oss-cn-beijing-internal.aliyuncs.com` - **创建时间**?025-12-16 20:22 **RAM用户访问凭证**?- **RAM用户?*:`oss-bucket-put-object@1991407246109125.onaliyun.com` - **AccessKeyId**:`LTAI5tB2Dt3NdvBL3G7nYGv7` - **AccessKeySecret**:`1iSN9k39RkApP93QjUhC1DcPIeMG4V` - **UID**:`203256565888301026` - **创建时间**?025-12-16 20:31:41 ⚠️ **安全警告**:AccessKey是敏感信息,请勿提交到公开Git仓库? **存储用?*?- `/uploads/pdfs/` - PDF文件上传 - `/uploads/docx/` - Word文档上传 - `/uploads/txt/` - 文本文件上传 - `/exports/` - 导出文件临时存储 --- ### 2.6 CLB负载均衡? **公网访问地址**?- **公网IP**:`8.140.53.236` - **访问地址**:`http://8.140.53.236/` - **域名绑定**:`https://iit.xunzhengyixue.com/`(已备案?- **后端服务?*:`172.17.173.80:80`(前端Nginx?- **监听端口**?0(HTTP? --- ## 📦 三、已部署服务详情 ### 3.1 PostgreSQL数据? - **部署时间**?025-12-24 - **部署方式**:`pg_dump` 全量导出 ?RDS导入 - **数据迁移时长**:约12秒(90MB SQL文件?- **验证状?*:✅ Schema完整、数据一致、关系正?- **备份文件**:`AIclinicalresearch/rds_init_20251224_154529.sql`?0MB?- **RDS自动备份**:每日凌?点(保留7天) --- ### 3.2 前端Nginx服务 **当前部署版本**:v1.2 **镜像信息**?- **仓库名称**:`ai-clinical_frontend-nginx` - **镜像版本**:`v1.2` ✅(当前部署版本?- **镜像大小**:约50MB - **基础镜像**:`nginx:alpine` - **构建时间**?026-01-01 - **镜像摘要**:sha256:1b444d3d04e0e0e62a50009f165991b7d0192d7e21804aa9a3b3558e5aec7961 **部署状?*?- ?已成功部署到SAE?026-01-01?- ?服务运行正常(内网地址:http://172.17.173.80:80?- ?企业微信域名验证文件已部署(WW_verify_YnhsQBwI0ARnNoG0.txt? **v1.2版本更新内容**?- ?修复Windows换行符问题(docker-entrypoint.sh CRLF→LF?- ?添加企业微信域名验证文件 - ⚠️ 部署后内网地址已变更:172.17.173.72 ?172.17.173.80 **Git文件结构**?``` AIclinicalresearch/frontend-v2/ ├── Dockerfile ?已提交Git(多阶段构建?├── .dockerignore ?已提交Git(优化构建上下文?├── nginx.conf ?已提交Git(Nginx配置?├── docker-entrypoint.sh ?已提交Git(启动脚本,Unix换行符) └── public/ └── WW_verify_YnhsQBwI0ARnNoG0.txt ?企业微信域名验证文件 ``` --- ### 3.3 Node.js后端服务 **当前部署版本**:v1.3 **镜像信息**?- **仓库名称**:`backend-service` - **镜像版本**:`v1.3` ✅(已部署) - **镜像大小**?38MB (压缩?~186MB) - **基础镜像**:`node:22-alpine` - **构建时间**?025-12-25 18:43 - **构建策略**:改进版方案B(本地编?Docker打包?- **镜像摘要**:sha256:a4ffb61c15af1cd1ed9de187b4464a1aab773918e5b41b4df5b8ad96514f9941 **技术架?*?- **Node.js版本**?2.x - **Prisma版本**?.17.0 - **ORM**:Prisma(支持多Schema?- **Web框架**:Fastify - **队列系统**:pg-boss(Postgres-Only架构?- **缓存系统**:PostgreSQL(替代Redis? **部署状?*?- ?已成功部署到SAE?025-12-25 18:55?- ?服务运行正常(内网地址:http://172.17.173.73:3001?- ?健康检查通过 **Git文件结构**?``` AIclinicalresearch/backend/ ├── Dockerfile ?已提交Git(改进版方案B:本地编?Docker打包?├── .dockerignore ?已提交Git(优化构建上下文?├── prisma/schema.prisma ?已同步RDS?2个模?30+关系字段?└── tsconfig.json ?已优化(排除测试文件?``` --- ### 3.4 Python微服? **当前部署版本**:v1.0 **镜像信息**?- **仓库名称**:`python-extraction` - **镜像版本**:`v1.0` - **镜像大小**?.12GB - **基础镜像**:`python:3-slim` - **构建时间**?025-12-24 **功能模块**?- ?**PDF文本提取**:PyMuPDF 1.26.7 - ?**Docx文档提取**:Mammoth + python-docx - ?**数据清洗(DC工具?*:pandas 2.0+ / numpy 1.24+ / polars 0.19+ - ?**语言检?*:langdetect - ?**Nougat OCR**:已移除(减小镜?.5GB? **部署状?*?- ?已部署到SAE?025-12-24?- ?应用运行正常?个worker进程?- ?内网访问地址:`http://172.17.173.66:8000` - ?健康检查通过 **Git文件结构**?``` AIclinicalresearch/extraction_service/ ├── Dockerfile ?已提交Git(多阶段构建 + 阿里云源?├── .dockerignore ?已提交Git(优化构建上下文?└── requirements-prod.txt ?已提交Git(精简依赖列表?``` --- ## 🔄 四、部署历史记? ### 2026-01-01(前端v1.2部署 - 企业微信域名验证)✅ #### 部署背景 - **目的**:为企业微信接入配置可信域名,需要在前端根目录部署域名验证文?- **域名**:https://iit.xunzhengyixue.com/ - **验证文件**:WW_verify_YnhsQBwI0ARnNoG0.txt #### 部署过程与问题修?1. **问题发现**:前端v1.1部署失败,容器启动后立即退? - ?现象:SAE日志为空,容器状态显?崩溃或退? - ?错误:`exec /docker-entrypoint.sh: no such file or directory` 2. **根本原因分析**? - 🔍 `docker-entrypoint.sh` 使用了Windows换行符(CRLF `\r\n`? - 🔍 Linux容器的bash解释器无法识别CRLF格式的脚? - 🔍 这是一个典型的跨平台开发问? 3. **解决方案**? - ??`docker-entrypoint.sh` 转换为Unix换行符(LF `\n`? - ?使用PowerShell命令批量转换 - ?本地Docker测试验证通过 4. **镜像构建与推?*? - ?重新构建镜像标记为v1.2?3.7秒) - ?推送到ACR成功(digest: 1b444d3d...? - ?镜像包含企业微信验证文件 5. **SAE部署成功**? - ?部署镜像版本:v1.2 - ?环境变量配置:`BACKEND_SERVICE_HOST=172.17.173.73`, `BACKEND_SERVICE_PORT=3001` - ?容器启动正常,健康检查通过 - ?新内网地址:`http://172.17.173.80:80` - ⚠️ IP地址变化?72.17.173.72 ?172.17.173.80 #### 技术要点总结 1. **Windows换行符问?*? - 原因:Git在Windows上默认转换为CRLF - 解决:使?`.gitattributes` 或手动转? - 验证:`(Get-Content file -Raw) -match "\`r\`n"` 2. **容器调试技?*? - 本地测试:`docker run --rm -e KEY=VALUE image:tag` - 查看日志:`docker logs container_name` - 进入容器:`docker exec -it container sh` 3. **SAE部署最佳实?*? - 环境变量必须配置完整 - 本地先验证镜像可正常运行 - 部署后IP可能变化,需要更新依赖服务的配置 #### 部署结果 - ?前端服务v1.2部署成功 - ?企业微信验证文件可访?- ?系统整体运行正常 - ⚠️ 需要注意:内网地址已更新,依赖前端的服务需要调整配? --- ### 2025-12-25(完整部署成功日)? #### 上午:Node.js后端部署 - ?Node.js后端成功部署到SAE(v1.3?- ?修复Alpine Linux bash路径问题?bin/bash ?/bin/sh?- ?修复config目录缺失问题(Dockerfile补充COPY config?- ?修复pino-pretty生产环境问题(条件启用) - ?修复healthCheck ES Module兼容性(require ?import?- ?生成强JWT密钥?4位十六进制) #### 中午:前端Nginx部署 - ?前端Nginx成功部署到SAE(v1.0?- ?前端服务运行正常(内网地址:http://172.17.173.72:80?- ?前端到后端代理验证通过 - ?完整链路测试通过(前端→后端→数据库? #### 下午:环境变量修复与CLB配置 - ?发现工具C?大功能报错(connect ECONNREFUSED 127.0.0.1:8000?- ?排查并修复关键问题:环境变量名错? - 代码使用:`EXTRACTION_SERVICE_URL` - 错误配置:`PYTHON_SERVICE_URL` - 正确配置:`EXTRACTION_SERVICE_URL=http://172.17.173.66:8000` - ?Node.js后端重新部署,IP地址更新为:http://172.17.173.73:3001 - ?更新前端Nginx环境变量:BACKEND_SERVICE_HOST=172.17.173.73 - ?配置CLB负载均衡器,获得公网访问地址:http://8.140.53.236/ - ?工具C?大功能全部测试通过 - ?文献筛查模块测试通过 - ?完整系统部署成功验证 🎉 --- ### 2025-12-24(初始部署) - ?PostgreSQL数据库部署完?- ?前端Nginx Docker镜像构建并推送至ACR - ?Python微服务Docker镜像构建并推送至ACR - ?Python微服务成功部署到SAE(内网地址?72.17.173.66:8000?- ?解决ACR镜像拉取权限问题(配置镜像仓库认证) - ?Node.js后端Prisma反向同步完成?2个模型,手动补全30+关系字段?- ?Node.js后端TypeScript编译修复完成(修?00+错误?错误?- ?Node.js后端Docker镜像构建成功?38MB,改进版方案B?- ?Node.js后端镜像推送至ACR(v1.0? --- > **提示**:本文档记录SAE服务器的最新真实状态,每次部署后必须更新! > **最后更?*?026-01-01 14:00 > **当前版本**:前端v1.2 | 后端v1.3 | Python v1.0 | PostgreSQL 15