Files
AIclinicalresearch/docs/05-部署文档/00-阿里云SAE最新真实状态记录.md
HaHafeng 6124c7abc6 docs(platform): Add database documentation system and restructure deployment docs
Completed:
- Add 6 core database documents (docs/01-平台基础层/07-数据库/)
  Architecture overview, migration history, environment comparison,
  tech debt tracking, seed data management, PostgreSQL extensions
- Restructure deployment docs: archive 20 legacy files to _archive-2025/
- Create unified daily operations manual (01-日常更新操作手册.md)
- Add pending deployment change tracker (03-待部署变更清单.md)
- Update database development standard to v3.0 (three iron rules)
- Fix Prisma schema type drift: align @db.* annotations with actual DB
  IIT: UUID/Timestamptz(6), SSA: Timestamp(6)/VarChar(20/50/100)
- Add migration: 20260227_align_schema_with_db_types (idempotent ALTER)
- Add Cursor Rule for auto-reminding deployment change documentation
- Update system status guide v6.4 with deployment and DB doc references
- Add architecture consultation docs (Prisma guide, SAE deployment guide)

Technical details:
- Manual migration due to shadow DB limitation (TD-001 in tech debt)
- Deployment docs reduced from 20+ scattered files to 3 core documents
- Cursor Rule triggers on schema.prisma, package.json, Dockerfile changes

Made-with: Cursor
2026-02-27 14:35:25 +08:00

20 KiB
Raw Blame History

🚀 AI临床研究平台 - 阿里云SAE最新真实状态记录

文档用途记录阿里云SAE服务器最新真实状态 + 每次部署记录
最后更新2026-02-27
维护人员:开发团队
说明本文档准确记录SAE上所有应用的当前状态包括内网地址、镜像版本、用户名密码等关键资源信息


📊 一、当前部署状态一览

服务名称 部署状态 镜像版本 部署位置 最后更新时间
PostgreSQL数据库 运行中 PostgreSQL 15 + 插件 RDS 2026-02-27
前端Nginx服务 运行中 v1.8 SAE 2026-02-27
Python微服务 运行中 v1.2 SAE 2026-02-27
Node.js后端 运行中 v2.1 SAE 2026-02-27
R统计引擎 运行中 v1.0.1 SAE 2026-02-27
Dify AI服务 ⚠️ 已废弃 - - 使用pgvector替代

🔑 二、阿里云资源信息

2.1 ACR容器镜像仓库

基本信息

  • 命名空间ai-clinical
  • Registry地址公网crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
  • Registry地址VPCcrpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com
  • 用户名gofeng117@163.com
  • 密码fengzhibo117

镜像仓库列表

仓库名称 最新版本 镜像大小 VPC地址
python-extraction v1.2 ~1.1GB crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.2
ssa-r-statistics v1.0.1 ~1.8GB crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ssa-r-statistics:v1.0.1
ai-clinical_frontend-nginx v1.3 ~50MB crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.3
backend-service v1.7 ~838MB crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.7

2.2 VPC网络与NAT网关

VPC信息

  • VPC IDvpc-2ze055cptkew9c38w4r06
  • VPC名称ai-clinical-vpc
  • 网段172.17.0.0/16
  • 地域华北2北京
  • 交换机1vsw-2zevacop039bxrmj6yc0c可用区F
  • 交换机2vsw-2zehoeyw9ldncymcyvfwq可用区A
  • 安全组IDsg-2zedk6fi8sgmmcwdu7tu

NAT网关信息

  • NAT网关名称NAT_airesearch
  • NAT网关IDngw-2zeec9ulzgw7ywvx1pst6
  • 公网IPEIP182.92.176.14
  • SNAT表IDstb-2zesszmzx1qpwf1cb2bry

2.3 RDS PostgreSQL数据库

实例信息

  • 实例IDpgm-2zex1m2y3r23hdn5
  • 规格2核4GBpg.n2.2c.1m
  • 存储空间100GBSSD云盘
  • PostgreSQL版本15.0
  • 内网地址pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432
  • 外网地址pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com⚠️ 已关闭)
  • 最大连接数400
  • 时区Asia/Shanghai
  • 白名单172.17.0.0/16VPC网段

数据库配置

  • 数据库名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

数据库环境2026-01-27更新

数据库 环境 Schema数量 表数量 插件 用途
ai_clinical_research_test 测试环境(当前) 16 84 pg_bigm, pgvector SAE测试环境
ai_clinical_research 生产环境(备用) 11 ~34 pg_bigm, pgvector 未来正式上线

Schema架构16个业务Schema - 测试数据库):

Schema名称 功能模块 表数量 说明
platform_schema 平台核心 19 用户、权限、任务队列pg-boss
aia_schema AI智能问答 3 AI项目、对话、消息
asl_schema 系统文献筛查 7 项目、文献、筛查记录
pkb_schema 个人知识库 5 知识库、文档、批处理
dc_schema 数据清洗 6 工具A/B/C数据处理
iit_schema IIT Manager Agent 5 IIT项目、审计日志
agent_schema Agent框架 6 Agent定义、会话、追踪
ekb_schema 企业知识库 3 知识库、文档、向量
capability_schema 通用能力 2 Prompt模板、版本
protocol_schema 方案设计 2 研究方案生成
admin_schema 系统管理 2 操作日志
rvw_schema 文献回顾 1 审查任务
ssa_schema 智能统计分析 0 预留
st_schema 统计工具 0 预留
common_schema 公共模块 0 预留
public 兼容旧数据 2 旧表兼容

2.4 SAE Serverless应用

命名空间

  • 命名空间IDcn-beijing:test-airesearch
  • 地域华北2北京

已部署应用列表

应用名称 状态 规格 实例数 端口 内网地址 镜像版本
r-statistics-test 运行中 1核2GB 1 8080 http://172.17.173.101:8080 v1.0.1
python-extraction-test 运行中 2核4GB 1 8000 http://172.17.173.102:8000 v1.2
nodejs-backend-test 运行中 2核4GB 1 3001 http://172.17.197.28:3001 v2.2
frontend-nginx-service 运行中 0.5核1GB 1 80 http://172.17.197.29:80 v1.8

环境变量配置

Node.js后端nodejs-backend-test

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

前端Nginxfrontend-nginx-service

BACKEND_SERVICE_HOST=172.17.173.73
BACKEND_SERVICE_PORT=3001

Python微服务python-extraction-test

LOG_LEVEL=INFO
TEMP_DIR=/tmp/extraction_service

2.5 OSS对象存储

Bucket信息

  • Bucket名称ai-clinical-research
  • 地域华北2北京
  • 存储类型:标准存储
  • 访问控制:私有
  • 存储冗余类型:同城冗余存储
  • 内网Endpointoss-cn-beijing-internal.aliyuncs.com
  • 公网Endpointoss-cn-beijing.aliyuncs.com
  • Bucket域名内网ai-clinical-research.oss-cn-beijing-internal.aliyuncs.com
  • 创建时间2025-12-16 20:22

RAM用户访问凭证

  • RAM用户名oss-bucket-put-object@1991407246109125.onaliyun.com
  • AccessKeyIdLTAI5tB2Dt3NdvBL3G7nYGv7
  • AccessKeySecret1iSN9k39RkApP93QjUhC1DcPIeMG4V
  • UID203256565888301026
  • 创建时间2025-12-16 20:31:41

⚠️ 安全警告AccessKey是敏感信息请勿提交到公开Git仓库

存储用途

  • /uploads/pdfs/ - PDF文件上传
  • /uploads/docx/ - Word文档上传
  • /uploads/txt/ - 文本文件上传
  • /exports/ - 导出文件临时存储

2.6 CLB负载均衡器

公网访问地址

  • 公网IP8.140.53.236
  • 访问地址http://8.140.53.236/
  • 域名绑定https://iit.xunzhengyixue.com/(已备案)
  • 后端服务器172.17.173.80:80前端Nginx
  • 监听端口80HTTP

📦 三、已部署服务详情

3.1 PostgreSQL数据库

  • 部署时间2025-12-24
  • 部署方式pg_dump 全量导出 → RDS导入
  • 数据迁移时长约12秒90MB SQL文件
  • 验证状态 Schema完整、数据一致、关系正确
  • 备份文件AIclinicalresearch/rds_init_20251224_154529.sql90MB
  • RDS自动备份每日凌晨2点保留7天

3.2 前端Nginx服务

当前部署版本v1.2

镜像信息

  • 仓库名称ai-clinical_frontend-nginx
  • 镜像版本v1.2 (当前部署版本)
  • 镜像大小约50MB
  • 基础镜像nginx:alpine
  • 构建时间2026-01-01
  • 镜像摘要sha256:1b444d3d04e0e0e62a50009f165991b7d0192d7e21804aa9a3b3558e5aec7961

部署状态

  • 已成功部署到SAE2026-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             ✅ 已提交GitNginx配置
├── docker-entrypoint.sh   ✅ 已提交Git启动脚本Unix换行符
└── public/
    └── WW_verify_YnhsQBwI0ARnNoG0.txt  ✅ 企业微信域名验证文件

3.3 Node.js后端服务

当前部署版本v1.3

镜像信息

  • 仓库名称backend-service
  • 镜像版本v1.3 (已部署)
  • 镜像大小838MB (压缩后 ~186MB)
  • 基础镜像node:22-alpine
  • 构建时间2025-12-25 18:43
  • 构建策略改进版方案B本地编译+Docker打包
  • 镜像摘要sha256:a4ffb61c15af1cd1ed9de187b4464a1aab773918e5b41b4df5b8ad96514f9941

技术架构

  • Node.js版本22.x
  • Prisma版本6.17.0
  • ORMPrisma支持多Schema
  • Web框架Fastify
  • 队列系统pg-bossPostgres-Only架构
  • 缓存系统PostgreSQL替代Redis

部署状态

  • 已成功部署到SAE2025-12-25 18:55
  • 服务运行正常(内网地址:http://172.17.173.73:3001
  • 健康检查通过

Git文件结构

AIclinicalresearch/backend/
├── Dockerfile             ✅ 已提交Git改进版方案B本地编译+Docker打包
├── .dockerignore         ✅ 已提交Git优化构建上下文
├── prisma/schema.prisma  ✅ 已同步RDS32个模型+30+关系字段)
└── tsconfig.json         ✅ 已优化(排除测试文件)

3.4 Python微服务

当前部署版本v1.0

镜像信息

  • 仓库名称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

部署状态

  • 已部署到SAE2025-12-24
  • 应用运行正常2个worker进程
  • 内网访问地址:http://172.17.173.66:8000
  • 健康检查通过

Git文件结构

AIclinicalresearch/extraction_service/
├── Dockerfile              ✅ 已提交Git多阶段构建 + 阿里云源)
├── .dockerignore          ✅ 已提交Git优化构建上下文
└── requirements-prod.txt  ✅ 已提交Git精简依赖列表

🔄 四、部署历史记录

2026-02-270227部署 - 数据库迁移 + R统计引擎 + Python更新

部署概览

  • 部署时间2026-02-27
  • 部署范围数据库Schema迁移、R统计引擎全新部署、Python微服务更新
  • 主要变更6个Prisma迁移含1个drift补丁、新增R Docker服务、Python新增scipy

数据库迁移

  • 应用 5 个业务迁移 + 1 个drift补丁迁移
  • RDS 表数量从 63 增至 84新增 21 张表)
  • 同步 Seed 数据SSA工具库 13条 + IIT技能库 8条
  • 已有数据完整性验证通过Prompt模板、用户数据零丢失

R统计引擎全新部署

  • 镜像构建并推送:ssa-r-statistics:v1.0.1~1.8GB
  • SAE应用创建r-statistics-test1核2GB
  • 内网地址:http://172.17.173.101:8080
  • 内置 13 个统计工具描述统计、T检验、卡方检验、回归、Meta分析等
  • 健康检查配置完成HTTP /health

Python微服务更新v1.1 → v1.2

  • 新增依赖scipyRVW V2.0 数据取证)
  • 新增代码forensics 数据取证模块
  • 实例规格升级1核2GB → 2核4GB
  • 内网地址变更:172.17.173.84172.17.173.102

文档产出

  • 0227部署/01-数据库迁移方案.md
  • 0227部署/02-部署完成总结.md
  • 00-阿里云SAE最新真实状态记录.md(更新)

2026-01-270126部署 - 数据库升级 + 全量服务更新)🎉

部署概览

  • 部署时间2026-01-26 ~ 2026-01-27跨2天
  • 部署范围数据库、Python、后端、前端全量更新
  • 主要变更数据库插件、环境分离、代码恢复、ES Module修复

数据库升级

  • 创建测试数据库 ai_clinical_research_test
  • 安装 pg_bigm 插件v1.2,中文全文检索)
  • 安装 pgvector 插件v0.8.0,向量存储)
  • 本地数据库迁移到RDS17.51MB63个表16个Schema
  • Prisma Schema同步63个模型
  • 两个数据库都安装插件

Python微服务更新v1.0 → v1.1

  • 新增依赖pymupdf4llm替代nougat、openpyxl、pypandoc、python-pptx
  • Dockerfile添加pandoc系统依赖
  • SAE部署成功新IP172.17.173.84

Node.js后端更新v1.3 → v1.7

  • 修复pino-pretty生产环境错误条件加载
  • 修复ES Module导入路径添加.js扩展名
  • 环境变量更新DATABASE_URL、EXTRACTION_SERVICE_URL、OSS配置
  • 移除废弃变量REDIS_URL、DIFY_API_URL、DIFY_API_KEY
  • SAE部署成功新IP172.17.173.89

前端Nginx更新v1.2 → v1.3

  • 修复Dockerfile构建跳过TypeScript类型检查
  • 代码恢复(从本地备份恢复空文件)
  • 环境变量更新BACKEND_SERVICE_HOST
  • SAE部署成功新IP172.17.173.90

解决的关键问题

  1. 大量空文件恢复(前端/后端)
  2. Prisma Schema与数据库不一致
  3. pino-pretty在生产环境失败
  4. ES Module导入路径缺少.js扩展名
  5. TypeScript类型检查阻塞构建

文档产出

  • 部署总体计划
  • 数据库升级方案
  • OSS环境配置方案
  • Python/后端/前端部署方案
  • IIT回调地址修复方案
  • 0126部署状态真实记录
  • 数据库开发规范v2.0

部署成果

  • 🎉 数据库成功分离测试/生产环境
  • 🎉 全量服务更新至最新代码
  • 🎉 所有关键Bug已修复
  • 🎉 完整部署文档体系建立

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.223.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地址变化172.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后端成功部署到SAEv1.3
  • 修复Alpine Linux bash路径问题/bin/bash → /bin/sh
  • 修复config目录缺失问题Dockerfile补充COPY config
  • 修复pino-pretty生产环境问题条件启用
  • 修复healthCheck ES Module兼容性require → import
  • 生成强JWT密钥64位十六进制

中午前端Nginx部署

  • 前端Nginx成功部署到SAEv1.0
  • 前端服务运行正常(内网地址:http://172.17.173.72:80
  • 前端到后端代理验证通过
  • 完整链路测试通过(前端→后端→数据库)

下午环境变量修复与CLB配置

  • 发现工具C的7大功能报错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的7大功能全部测试通过
  • 文献筛查模块测试通过
  • 完整系统部署成功验证 🎉

2025-12-24初始部署

  • PostgreSQL数据库部署完成
  • 前端Nginx Docker镜像构建并推送至ACR
  • Python微服务Docker镜像构建并推送至ACR
  • 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后端镜像推送至ACRv1.0

提示本文档记录SAE服务器的最新真实状态每次部署后必须更新
最后更新2026-02-27
当前版本前端v1.8 | 后端v2.1 | Python v1.2 | R统计v1.0.1 | PostgreSQL 15