Files
AIclinicalresearch/docs/05-部署文档/0227部署/02-部署完成总结.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

12 KiB
Raw Permalink Blame History

2026年2月27日部署完成总结

部署日期2026-02-27
部署范围:数据库迁移 + R统计引擎新增 + Python微服务 + Node.js后端 + 前端Nginx 全量更新
部署状态 全部完成,所有功能测试通过
文档日期2026-02-27


部署成果一览

服务版本对比

服务 部署前 部署后 变更类型
PostgreSQLRDS 16 Schema / 63 表 16 Schema / 84 表 Schema迁移
R统计引擎 v1.0.1 全新部署
Python微服务 v1.1 v1.2 依赖+代码更新
Node.js后端 v1.7 v2.2 大版本更新5万行新增
前端Nginx v1.3 v1.8 大版本更新3.2万行新增)

内网地址总览

服务 内网地址 端口 状态
R统计引擎 172.17.173.101 8080 新增
Python微服务 172.17.173.102 8000 地址变更
Node.js后端 172.17.197.28 3001 地址变更
前端Nginx 172.17.197.29 80 地址变更

一、数据库迁移

1.1 迁移背景

自 0126 部署以来本地开发环境新增了大量功能模块IIT Agent、SSA统计分析、ASL提取工作台等导致本地数据库与RDS之间存在显著差异。部分变更通过 prisma db push 直接推送,未生成迁移文件,造成 Schema Drift。

1.2 迁移内容

应用的 Prisma 迁移文件5个

迁移文件 内容 新增表数
20260207_add_iit_manager_agent_tables IIT Agent 8张表 8
20260208_add_cra_qc_engine_support CRA智能质控 1
20260219_add_ssa_module SSA统计分析模块 9张表 9
20260223_add_deep_research_v2_fields Deep Research V2.0 字段 0列变更
20260225_add_extraction_template_engine 全文智能提取工作台 4张表 4

Drift 补丁迁移1个

迁移文件 内容
20260227_patch_db_push_drift 修复 prisma db push 造成的 driftfield_metadataqc_logsrecord_summaryqc_project_statsssa_workflowsssa_workflow_steps 等表 + knowledge_base_id

Seed 数据同步

数据 条目数 目标表
SSA 工具库 13条 ssa_schema.ssa_tools_library
IIT 技能库 8条 iit_schema.iit_skills

1.3 迁移结果

验证项 结果
Schema 数量 16
表总数 84
Prisma 迁移记录 11条含6条新增
SSA 工具库数据 13条
IIT 技能库数据 8条
已有数据完整性 Prompt模板、用户数据零丢失

详细方案见 01-数据库迁移方案.md


二、R统计引擎部署全新服务

2.1 服务概述

R统计引擎是 SSA智能统计分析模块的核心计算后端采用 Brain-Hand 架构Node.js 后端作为 Brain 负责调度R Docker 作为 Hand 负责统计计算。

2.2 镜像信息

项目
ACR 仓库 ssa-r-statistics
镜像版本 v1.0.1
镜像地址 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ssa-r-statistics:v1.0.1
镜像大小 ~1.8GB
基础镜像 rocker/r-ver:4.3
R版本 4.3.3

2.3 内置工具13个

工具代码 功能
descriptive 描述性统计
t_test_ind 独立样本T检验
t_test_paired 配对T检验
mann_whitney Mann-Whitney U检验
wilcoxon Wilcoxon符号秩检验
chi_square 卡方检验
fisher Fisher精确检验
anova_one 单因素方差分析
correlation 相关性分析
linear_reg 线性回归
logistic_binary 二元Logistic回归
baseline_table 基线特征表
meta_analysis Meta分析

2.4 SAE 应用配置

配置项
应用名称 r-statistics-test
实例规格 1核2GB
实例数量 1
容器端口 8080
内网地址 http://172.17.173.101:8080
健康检查方式 HTTP 检查
健康检查路径 /health

2.5 部署过程中的问题与解决

问题SAE HTTP 健康检查返回 404

  • 现象Readiness probe 报 HTTP status code: 404, body: {"error":"404 - Resource Not Found"}
  • 验证:通过 SAE Webshell 执行 curl http://localhost:8080/health 返回 200 OK确认服务本身正常
  • 解决:最终 HTTP 健康检查配置调整后恢复正常

三、Python微服务更新

3.1 更新内容

依赖变更requirements-prod.txt

变更 包名 用途
新增 scipy>=1.11.0 RVW V2.0 数据侦探T检验、卡方检验逆向计算

代码变更

模块 变更
forensics/ 全新模块 - RVW V2.0 数据取证5个文件
main.py 注册 forensics API 路由
operations/data_profile.py 新增 scipy 统计验证

3.2 镜像信息

项目
ACR 仓库 python-extraction
镜像版本 v1.1 → v1.2
镜像地址 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.2
Digest sha256:be8612976255d706d652c5d16cb2e32c6e25b61a863d26c1ea7f63a9e0c95c86
基础镜像 python:3-slim

3.3 SAE 应用配置

配置项 0126 部署 0227 部署
应用名称 python-extraction-test python-extraction-test
实例规格 1核2GB 2核4GB
实例数量 1 1
容器端口 8000 8000
内网地址 172.17.173.84 172.17.173.102
镜像版本 v1.1 v1.2

规格从 1核2GB 升至 2核4GB因为新增的 scipy、pandas、numpy 等科学计算库在 2 个 worker 下内存占用较高。


四、Node.js后端更新

4.1 更新内容

271个文件变更50972行新增代码,主要包括:

类别 变更
新增依赖 adm-zipZIP处理json-logic-js(规则引擎)
新增模块 SSA 统计分析、ASL 图表/提取/Meta分析、RVW Skills、系统知识库
重大更新 IIT CRA Agent V3.0自主QC+Function Calling、Deep Research V2.0

4.2 镜像信息

项目
ACR 仓库 backend-service
镜像版本 v1.7 → v2.2
镜像地址 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.2
Digest sha256:5f5ede30c5ff107018176622c674b53c640816f288d49912434303d8a5253211
构建方式 tsc --noCheck + Docker 多阶段构建

4.3 SAE 应用配置

配置项 0126 部署 0227 部署
应用名称 nodejs-backend-test nodejs-backend-test
实例规格 1核2GB 2核4GB
实例数量 1 1
容器端口 3001 3001
内网地址 172.17.173.89 172.17.197.28
镜像版本 v1.7 v2.2

4.4 新增环境变量

环境变量 说明
EXTRACTION_SERVICE_URL http://172.17.173.102:8000 Python 新地址
R_SERVICE_URL http://172.17.173.101:8080 R统计引擎新增
UNIFUNCS_API_KEY sk-2fNwqUH7... Deep Research新增
MINERU_API_TOKEN 长token MinerU PDF提取新增
MINERU_API_BASE https://mineru.net/api/v4 MinerU地址新增
STORAGE_TYPE oss 存储类型(新增)

五、前端Nginx更新

5.1 更新内容

129个文件变更32365行新增代码,主要包括:

类别 变更
新增依赖 react-markdownremark-gfmMarkdown渲染
新增模块 SSA统计分析前端、ASL图表生成器/Meta分析引擎、IIT AI对话页
nginx.conf client_max_body_size 50M、新增 /wechat/ 代理路由

5.2 镜像信息

项目
ACR 仓库 ai-clinical_frontend-nginx
镜像版本 v1.3 → v1.8
Digest sha256:0a12b017ac6c85305fc5a716c5da245318c595fafd828c1222dd1a8ae79cfb26

5.3 SAE 应用配置

配置项 0126 部署 0227 部署
应用名称 frontend-nginx-service frontend-nginx-service
实例规格 0.5核1GB 0.5核1GB
容器端口 80 80
内网地址 172.17.173.90 172.17.197.29
镜像版本 v1.3 v1.8
BACKEND_SERVICE_HOST 172.17.173.89 172.17.197.28

六、部署过程中的问题与解决

本次部署遇到 4 个问题,均已解决:

6.1 前端登录报错Unexpected token '<' is not valid JSON

项目 内容
现象 登录页报 Unexpected token '<', "<html> <h"... is not valid JSONapi/v1/auth/refresh 返回 504
原因 前端 frontend-nginx-service 环境变量 BACKEND_SERVICE_HOST 未更新为后端新地址Nginx 代理到旧 IP 超时,返回 HTML 错误页
解决 更新 BACKEND_SERVICE_HOST172.17.197.28,重新部署前端

6.2 SSA 上传数据报错column ssa_sessions.data_profile does not exist

项目 内容
现象 智能统计分析上传 CSV 后返回 500prisma.ssaSession.create() 失败
原因 data_profile 列是 Phase 2A 通过 prisma db push 新增的drift patch 迁移中遗漏了该列
解决 通过 SAE Webshell 执行 ALTER TABLE ssa_schema.ssa_sessions ADD COLUMN IF NOT EXISTS data_profile JSONB

6.3 SSA 分析方案不推送JSON 配置文件缺失

项目 内容
现象 上传数据成功并获得数据报告,但提交分析需求后无分析方案卡片,日志报 ENOENT: no such file or directory, open '/app/dist/modules/ssa/config/tools_registry.json'
原因 tsc 编译只处理 .ts 文件,不会复制 .json 配置文件到 dist/ 目录。SSA 模块依赖 5 个 JSON 配置文件(tools_registry.jsondecision_tables.jsonflow_templates.jsonintent_rules.jsontool_param_constraints.json
解决 修改 Dockerfile 增加 JSON 文件复制步骤,重新构建 v2.2 并部署
长期修复 Dockerfile 中增加 COPY src/modules/ssa/config/*.json ./dist/modules/ssa/config/

6.4 RVW 上传文件报错column review_tasks.context_data does not exist

项目 内容
现象 智能审稿上传 docx 文件后返回 500prisma.reviewTask.create() 失败
原因 review_tasks 表在 0126 部署后通过 prisma db push 新增了 8 个列(selected_agentseditorial_scoremethodology_scoremethodology_statuspico_extractcontext_datais_archivedarchived_atdrift patch 中全部遗漏
解决 通过 SAE Webshell 执行 8 条 ALTER TABLE ADD COLUMN IF NOT EXISTS 语句补齐

6.5 经验教训

教训 改进措施
prisma db push 造成大量 Schema Drift 开发环境也应使用 prisma migrate dev 生成迁移文件
tsc 不复制非 TS 文件 Dockerfile 中显式 COPY JSON/YAML 等资源文件
SAE 每次部署 IP 会变 部署后立即检查所有服务间的 IP 依赖并同步更新
drift patch 容易遗漏 部署前用脚本对比本地和 RDS 的完整列清单

七、CLB 负载均衡器更新

前端内网地址变更CLB 后端服务器需同步更新:

配置项 旧值 新值
CLB 后端服务器 172.17.173.90:80 172.17.197.29:80

如不更新,公网域名 https://iit.xunzhengyixue.com/ 将无法访问。


八、当前系统配置速查

数据库连接(测试环境)

postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research_test?connection_limit=18&pool_timeout=10

服务内网地址

R统计引擎: http://172.17.173.101:8080  (新增)
Python:    http://172.17.173.102:8000  (更新)
后端:      http://172.17.197.28:3001   (更新)
前端:      http://172.17.197.29:80    (更新)

ACR 镜像版本

仓库 版本
ssa-r-statistics v1.0.1
python-extraction v1.2
backend-service v2.2
ai-clinical_frontend-nginx v1.8

公网访问

CLB:  http://8.140.53.236/
域名: https://iit.xunzhengyixue.com/

文档版本v1.1
最后更新2026-02-27补充部署问题与解决记录
维护人员:开发团队