feat(iit): QC deep fix + V3.1 architecture plan + project member management
QC System Deep Fix: - HardRuleEngine: add null tolerance + field availability pre-check (skipped status) - SkillRunner: baseline data merge for follow-up events + field availability check - QcReportService: record-level pass rate calculation + accurate LLM XML report - iitBatchController: legacy log cleanup (eventId=null) + upsert RecordSummary - seed-iit-qc-rules: null/empty string tolerance + applicableEvents config V3.1 Architecture Design (docs only, no code changes): - QC engine V3.1 plan: 5-level data structure (CDISC ODM) + D1-D7 dimensions - Three-batch implementation strategy (A: foundation, B: bubbling, C: new engines) - Architecture team review: 4 whitepapers reviewed + feedback doc + 4 critical suggestions - CRA Agent strategy roadmap + CRA 4-tool explanation doc for clinical experts Project Member Management: - Cross-tenant member search and assignment (remove tenant restriction) - IIT project detail page enhancement with tabbed layout (KB + members) - IitProjectContext for business-side project selection - System-KB route access control adjustment for project operators Frontend: - AdminLayout sidebar menu restructure - IitLayout with project context provider - IitMemberManagePage new component - Business-side pages adapt to project context Prisma: - 2 new migrations (user-project RBAC + is_demo flag) - Schema updates for project member management Made-with: Cursor
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 🚀 AI临床研究平台 - 阿里云SAE最新真实状态记录
|
||||
|
||||
> **文档用途**:记录阿里云SAE服务器最新真实状态 + 每次部署记录
|
||||
> **最后更新**:2026-02-27
|
||||
> **最后更新**:2026-02-28
|
||||
> **维护人员**:开发团队
|
||||
> **说明**:本文档准确记录SAE上所有应用的当前状态,包括内网地址、镜像版本、用户名密码等关键资源信息
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
| 服务名称 | 部署状态 | 镜像版本 | 部署位置 | 最后更新时间 |
|
||||
|---------|---------|---------|---------|-------------|
|
||||
| **PostgreSQL数据库** | ✅ 运行中 | PostgreSQL 15 + 插件 | RDS | 2026-02-27 |
|
||||
| **前端Nginx服务** | ✅ 运行中 | **v1.8** | SAE | 2026-02-27 |
|
||||
| **前端Nginx服务** | ✅ 运行中 | **v1.9** | SAE | 2026-02-28 |
|
||||
| **Python微服务** | ✅ 运行中 | **v1.2** | SAE | 2026-02-27 |
|
||||
| **Node.js后端** | ✅ 运行中 | **v2.1** | SAE | 2026-02-27 |
|
||||
| **Node.js后端** | ✅ 运行中 | **v2.3** | SAE | 2026-02-28 |
|
||||
| **R统计引擎** | ✅ 运行中 | **v1.0.1** | SAE | 2026-02-27 |
|
||||
| **Dify AI服务** | ⚠️ 已废弃 | - | - | 使用pgvector替代 |
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
|---------|---------|---------|---------|
|
||||
| **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` |
|
||||
| **ai-clinical_frontend-nginx** | **v1.9** | ~50MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.3` |
|
||||
| **backend-service** | **v2.3** | ~838MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.7` |
|
||||
|
||||
---
|
||||
|
||||
@@ -138,10 +138,13 @@ postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyun
|
||||
```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
|
||||
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research_test?connection_limit=18&pool_timeout=10
|
||||
|
||||
# Python微服务地址
|
||||
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
|
||||
EXTRACTION_SERVICE_URL=http://172.17.173.102:8000
|
||||
|
||||
# R统计引擎地址
|
||||
R_SERVICE_URL=http://172.17.173.101:8080
|
||||
|
||||
# OSS配置
|
||||
OSS_ACCESS_KEY_ID=LTAI5tB2Dt3NdvBL3G7nYGv7
|
||||
@@ -149,6 +152,7 @@ OSS_ACCESS_KEY_SECRET=1iSN9k39RkApP93QjUhC1DcPIeMG4V
|
||||
OSS_BUCKET=ai-clinical-research
|
||||
OSS_ENDPOINT=oss-cn-beijing-internal.aliyuncs.com
|
||||
OSS_REGION=cn-beijing
|
||||
STORAGE_TYPE=oss
|
||||
|
||||
# JWT密钥
|
||||
JWT_SECRET=8a3f9e7c2d1b5a4e6f8c9d0a3b5e7f1c2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4
|
||||
@@ -163,9 +167,11 @@ 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
|
||||
# Deep Research
|
||||
UNIFUNCS_API_KEY=sk-2fNwqUH7...
|
||||
|
||||
# MinerU PDF提取
|
||||
MINERU_API_BASE=https://mineru.net/api/v4
|
||||
|
||||
# Postgres-Only架构
|
||||
QUEUE_TYPE=pgboss
|
||||
@@ -175,11 +181,17 @@ CACHE_TYPE=postgres
|
||||
WECHAT_CORP_ID=ww6ab493470ab4f377
|
||||
WECHAT_AGENT_ID=1000002
|
||||
WECHAT_CORP_SECRET=AZIVxMtoLb0rEszXS81e4dBRl-I9kgTjygIS0cFfENU
|
||||
|
||||
# 旧系统 MySQL 连接(Legacy Bridge)
|
||||
LEGACY_MYSQL_HOST=8.154.22.149
|
||||
LEGACY_MYSQL_PORT=3306
|
||||
LEGACY_MYSQL_USER=root
|
||||
LEGACY_MYSQL_DATABASE=xzyx_online
|
||||
```
|
||||
|
||||
**前端Nginx(frontend-nginx-service)**:
|
||||
```bash
|
||||
BACKEND_SERVICE_HOST=172.17.173.73
|
||||
BACKEND_SERVICE_HOST=172.17.197.30
|
||||
BACKEND_SERVICE_PORT=3001
|
||||
```
|
||||
|
||||
@@ -247,25 +259,26 @@ TEMP_DIR=/tmp/extraction_service
|
||||
|
||||
### 3.2 前端Nginx服务
|
||||
|
||||
**当前部署版本**:v1.2
|
||||
**当前部署版本**:v1.9
|
||||
|
||||
**镜像信息**:
|
||||
- **仓库名称**:`ai-clinical_frontend-nginx`
|
||||
- **镜像版本**:`v1.2` ✅(当前部署版本)
|
||||
- **镜像版本**:`v1.9` ✅(当前部署版本)
|
||||
- **镜像大小**:约50MB
|
||||
- **基础镜像**:`nginx:alpine`
|
||||
- **构建时间**:2026-01-01
|
||||
- **镜像摘要**:sha256:1b444d3d04e0e0e62a50009f165991b7d0192d7e21804aa9a3b3558e5aec7961
|
||||
- **构建时间**:2026-02-28
|
||||
- **镜像摘要**:sha256:ff3c19152f5f5944d4be187d7bc5af986fd00b69501effbd0d53a6f8b064228a
|
||||
|
||||
**部署状态**:
|
||||
- ✅ 已成功部署到SAE(2026-01-01)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.173.80:80)
|
||||
- ✅ 已成功部署到SAE(2026-02-28)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.197.31:80)
|
||||
- ✅ 企业微信域名验证文件已部署(WW_verify_YnhsQBwI0ARnNoG0.txt)
|
||||
|
||||
**v1.2版本更新内容**:
|
||||
- ✅ 修复Windows换行符问题(docker-entrypoint.sh CRLF→LF)
|
||||
- ✅ 添加企业微信域名验证文件
|
||||
- ⚠️ 部署后内网地址已变更:172.17.173.72 → 172.17.173.80
|
||||
**v1.9版本更新内容**:
|
||||
- ✅ 新增旧系统集成前端模块(Legacy iframe嵌入)
|
||||
- ✅ 新增 ASL 图表生成器 / Meta分析引擎
|
||||
- ✅ 新增 IIT AI对话页
|
||||
- ⚠️ 部署后内网地址变更:172.17.197.29 → 172.17.197.31
|
||||
|
||||
**Git文件结构**:
|
||||
```
|
||||
@@ -282,16 +295,16 @@ AIclinicalresearch/frontend-v2/
|
||||
|
||||
### 3.3 Node.js后端服务
|
||||
|
||||
**当前部署版本**:v1.3
|
||||
**当前部署版本**:v2.3
|
||||
|
||||
**镜像信息**:
|
||||
- **仓库名称**:`backend-service`
|
||||
- **镜像版本**:`v1.3` ✅(已部署)
|
||||
- **镜像大小**:838MB (压缩后 ~186MB)
|
||||
- **基础镜像**:`node:22-alpine`
|
||||
- **构建时间**:2025-12-25 18:43
|
||||
- **镜像版本**:`v2.3` ✅(已部署)
|
||||
- **镜像大小**:~838MB
|
||||
- **基础镜像**:`node:alpine`
|
||||
- **构建时间**:2026-02-28
|
||||
- **构建策略**:改进版方案B(本地编译+Docker打包)
|
||||
- **镜像摘要**:sha256:a4ffb61c15af1cd1ed9de187b4464a1aab773918e5b41b4df5b8ad96514f9941
|
||||
- **镜像摘要**:sha256:6e25d13cc7e1b228638a30eda35bd4aa70e0f7d52283cf66a2ffb21bee4ea288
|
||||
|
||||
**技术架构**:
|
||||
- **Node.js版本**:22.x
|
||||
@@ -302,8 +315,8 @@ AIclinicalresearch/frontend-v2/
|
||||
- **缓存系统**:PostgreSQL(替代Redis)
|
||||
|
||||
**部署状态**:
|
||||
- ✅ 已成功部署到SAE(2025-12-25 18:55)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.173.73:3001)
|
||||
- ✅ 已成功部署到SAE(2026-02-28)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.197.30:3001)
|
||||
- ✅ 健康检查通过
|
||||
|
||||
**Git文件结构**:
|
||||
@@ -319,26 +332,26 @@ AIclinicalresearch/backend/
|
||||
|
||||
### 3.4 Python微服务
|
||||
|
||||
**当前部署版本**:v1.0
|
||||
**当前部署版本**:v1.2
|
||||
|
||||
**镜像信息**:
|
||||
- **仓库名称**:`python-extraction`
|
||||
- **镜像版本**:`v1.0`
|
||||
- **镜像大小**:1.12GB
|
||||
- **镜像版本**:`v1.2` ✅(已部署)
|
||||
- **镜像大小**:~1.1GB
|
||||
- **基础镜像**:`python:3-slim`
|
||||
- **构建时间**:2025-12-24
|
||||
- **构建时间**:2026-02-27
|
||||
|
||||
**功能模块**:
|
||||
- ✅ **PDF文本提取**:PyMuPDF 1.26.7
|
||||
- ✅ **PDF文本提取**:PyMuPDF
|
||||
- ✅ **Docx文档提取**:Mammoth + python-docx
|
||||
- ✅ **数据清洗(DC工具)**:pandas 2.0+ / numpy 1.24+ / polars 0.19+
|
||||
- ✅ **数据清洗(DC工具)**:pandas / numpy / polars
|
||||
- ✅ **语言检测**:langdetect
|
||||
- ❌ **Nougat OCR**:已移除(减小镜像1.5GB)
|
||||
- ✅ **数据取证(RVW V2.0)**:scipy(T检验、卡方检验逆向计算)
|
||||
|
||||
**部署状态**:
|
||||
- ✅ 已部署到SAE(2025-12-24)
|
||||
- ✅ 应用运行正常(2个worker进程)
|
||||
- ✅ 内网访问地址:`http://172.17.173.66:8000`
|
||||
- ✅ 已部署到SAE(2026-02-27)
|
||||
- ✅ 应用运行正常(2个worker进程,2核4GB)
|
||||
- ✅ 内网访问地址:`http://172.17.173.102:8000`
|
||||
- ✅ 健康检查通过
|
||||
|
||||
**Git文件结构**:
|
||||
@@ -353,6 +366,37 @@ AIclinicalresearch/extraction_service/
|
||||
|
||||
## 🔄 四、部署历史记录
|
||||
|
||||
### 2026-02-28(0228部署 - Node.js后端 + 前端更新 - 旧系统集成上线)
|
||||
|
||||
#### 部署概览
|
||||
- **部署时间**:2026-02-28
|
||||
- **部署范围**:Node.js后端 + 前端Nginx 更新
|
||||
- **主要变更**:旧系统集成(Wrapper Bridge)上线、ASL图表/Meta分析、IIT AI对话页等
|
||||
|
||||
#### Node.js后端更新(v2.2 → v2.3)
|
||||
- ✅ 新增模块:Legacy Bridge(旧系统集成认证服务)
|
||||
- ✅ 新增依赖:`mysql2`(连接旧系统MySQL)
|
||||
- ✅ 新增环境变量:`LEGACY_MYSQL_HOST`、`LEGACY_MYSQL_PORT`、`LEGACY_MYSQL_USER`、`LEGACY_MYSQL_DATABASE`
|
||||
- ✅ 新增 API:`POST /api/v1/legacy/auth`(旧系统Token注入)
|
||||
- ✅ 镜像构建推送:`backend-service:v2.3`(digest: sha256:6e25d13c...)
|
||||
- ✅ SAE部署成功,内网地址变更:`172.17.197.28` → `172.17.197.30`
|
||||
|
||||
#### 前端Nginx更新(v1.8 → v1.9)
|
||||
- ✅ 新增模块:Legacy System iframe嵌入(研究管理 + 统计工具)
|
||||
- ✅ 新增组件:`LegacySystemPage`、`ResearchManagement`、`StatisticalTools`
|
||||
- ✅ 镜像构建推送:`ai-clinical_frontend-nginx:v1.9`(digest: sha256:ff3c1915...)
|
||||
- ✅ SAE部署成功,内网地址变更:`172.17.197.29` → `172.17.197.31`
|
||||
|
||||
#### 环境变量同步
|
||||
- ✅ `frontend-nginx-service` 的 `BACKEND_SERVICE_HOST` 更新为 `172.17.197.30`
|
||||
- ℹ️ CLB 由阿里云自动更新,无需手动操作
|
||||
|
||||
#### 文档产出
|
||||
- ✅ `0228部署/01-部署完成总结.md`
|
||||
- ✅ `00-阿里云SAE最新真实状态记录.md`(更新)
|
||||
|
||||
---
|
||||
|
||||
### 2026-02-27(0227部署 - 数据库迁移 + R统计引擎 + Python更新)
|
||||
|
||||
#### 部署概览
|
||||
@@ -472,7 +516,7 @@ AIclinicalresearch/extraction_service/
|
||||
|
||||
5. **SAE部署成功**:
|
||||
- ✅ 部署镜像版本:v1.2
|
||||
- ✅ 环境变量配置:`BACKEND_SERVICE_HOST=172.17.173.73`, `BACKEND_SERVICE_PORT=3001`
|
||||
- ✅ 环境变量配置:`BACKEND_SERVICE_HOST=172.17.197.30`, `BACKEND_SERVICE_PORT=3001`
|
||||
- ✅ 容器启动正常,健康检查通过
|
||||
- ✅ 新内网地址:`http://172.17.173.80:80`
|
||||
- ⚠️ IP地址变化:172.17.173.72 → 172.17.173.80
|
||||
@@ -524,7 +568,7 @@ AIclinicalresearch/extraction_service/
|
||||
- 错误配置:`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
|
||||
- ✅ 更新前端Nginx环境变量:BACKEND_SERVICE_HOST=172.17.197.30
|
||||
- ✅ 配置CLB负载均衡器,获得公网访问地址:http://8.140.53.236/
|
||||
- ✅ 工具C的7大功能全部测试通过
|
||||
- ✅ 文献筛查模块测试通过
|
||||
@@ -547,5 +591,5 @@ AIclinicalresearch/extraction_service/
|
||||
---
|
||||
|
||||
> **提示**:本文档记录SAE服务器的最新真实状态,每次部署后必须更新!
|
||||
> **最后更新**:2026-02-27
|
||||
> **当前版本**:前端v1.8 | 后端v2.1 | Python v1.2 | R统计v1.0.1 | PostgreSQL 15
|
||||
> **最后更新**:2026-02-28
|
||||
> **当前版本**:前端v1.9 | 后端v2.3 | Python v1.2 | R统计v1.0.1 | PostgreSQL 15
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 日常更新操作手册
|
||||
|
||||
> 版本: v2.0(合并自旧版 19-日常更新快速操作手册 + 0227 部署实战经验)
|
||||
> 更新日期: 2026-02-27
|
||||
> 版本: v2.1(补充 0228 部署经验)
|
||||
> 更新日期: 2026-02-28
|
||||
> 适用: 日常代码更新、功能迭代、配置变更
|
||||
|
||||
---
|
||||
@@ -27,7 +27,7 @@ docker login --username=gofeng117@163.com --password=fengzhibo117 crpi-cd5ij4pjt
|
||||
|
||||
## 2. Node.js 后端更新(~25 分钟)
|
||||
|
||||
**当前版本**: v2.2 → 下个版本: v2.3
|
||||
**当前版本**: v2.3 → 下个版本: v2.4
|
||||
|
||||
### 2.1 构建
|
||||
|
||||
@@ -39,7 +39,7 @@ npm run build
|
||||
# 或: npx tsc --noCheck
|
||||
|
||||
# 构建 Docker 镜像
|
||||
docker build -t backend-service:v2.3 .
|
||||
docker build -t backend-service:v2.4 .
|
||||
```
|
||||
|
||||
> **0227 经验**: `tsc` 不会拷贝 `.json` 配置文件,Dockerfile 中已有 `COPY src/modules/ssa/config/*.json` 等补丁步骤。如新模块有 JSON 配置文件需要确认 Dockerfile 覆盖到。
|
||||
@@ -47,9 +47,9 @@ docker build -t backend-service:v2.3 .
|
||||
### 2.2 推送
|
||||
|
||||
```powershell
|
||||
docker tag backend-service:v2.3 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.3
|
||||
docker tag backend-service:v2.4 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.4
|
||||
|
||||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.3
|
||||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.4
|
||||
```
|
||||
|
||||
推送约 10 分钟(~840MB),看到 `digest: sha256:...` 表示成功。
|
||||
@@ -57,7 +57,7 @@ docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinica
|
||||
### 2.3 SAE 部署
|
||||
|
||||
1. SAE 控制台 → `nodejs-backend-test` → 部署应用
|
||||
2. 选择镜像 `backend-service:v2.3`
|
||||
2. 选择镜像 `backend-service:v2.4`(与上方构建版本一致)
|
||||
3. 确认部署,等待 5-8 分钟
|
||||
|
||||
### 2.4 验证
|
||||
@@ -75,14 +75,14 @@ docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinica
|
||||
|
||||
## 3. 前端 Nginx 更新(~15 分钟)
|
||||
|
||||
**当前版本**: v1.8 → 下个版本: v1.9
|
||||
**当前版本**: v1.9 → 下个版本: v2.0
|
||||
|
||||
### 3.1 构建
|
||||
|
||||
```powershell
|
||||
cd D:\MyCursor\AIclinicalresearch\frontend-v2
|
||||
|
||||
docker build -t ai-clinical_frontend-nginx:v1.9 .
|
||||
docker build -t ai-clinical_frontend-nginx:v2.0 .
|
||||
```
|
||||
|
||||
构建约 5 分钟(含 React 编译)。
|
||||
@@ -90,9 +90,9 @@ docker build -t ai-clinical_frontend-nginx:v1.9 .
|
||||
### 3.2 推送
|
||||
|
||||
```powershell
|
||||
docker tag ai-clinical_frontend-nginx:v1.9 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.9
|
||||
docker tag ai-clinical_frontend-nginx:v2.0 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v2.0
|
||||
|
||||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.9
|
||||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v2.0
|
||||
```
|
||||
|
||||
推送约 2 分钟(~50MB)。
|
||||
@@ -100,7 +100,7 @@ docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinica
|
||||
### 3.3 SAE 部署
|
||||
|
||||
1. SAE 控制台 → `frontend-nginx-service` → 部署应用
|
||||
2. 选择镜像版本 `v1.9`
|
||||
2. 选择镜像版本 `v2.0`(与上方构建版本一致)
|
||||
3. **检查环境变量**: `BACKEND_SERVICE_HOST` 指向最新后端 IP
|
||||
|
||||
### 3.4 验证
|
||||
@@ -235,6 +235,7 @@ npx prisma migrate resolve --applied <migration_name>
|
||||
□ 清零 03-待部署变更清单.md(已部署项移到历史区域)
|
||||
□ 如果是大版本部署,创建 MMDD部署/ 文件夹记录过程
|
||||
□ 如有服务 IP 变更,检查相互依赖的环境变量是否已更新
|
||||
□ CLB 负载均衡器无需手动更新(阿里云自动处理)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
166
docs/05-部署文档/0228部署/01-部署完成总结.md
Normal file
166
docs/05-部署文档/0228部署/01-部署完成总结.md
Normal file
@@ -0,0 +1,166 @@
|
||||
# 2026年2月28日部署完成总结
|
||||
|
||||
> **部署日期**:2026-02-28
|
||||
> **部署范围**:Node.js后端 + 前端Nginx 更新(旧系统集成上线)
|
||||
> **部署状态**:✅ 全部完成
|
||||
> **文档日期**:2026-02-28
|
||||
|
||||
---
|
||||
|
||||
## 部署成果一览
|
||||
|
||||
### 服务版本对比
|
||||
|
||||
| 服务 | 部署前 | 部署后 | 变更类型 |
|
||||
|------|--------|--------|---------|
|
||||
| Node.js后端 | v2.2 | **v2.3** | 新增旧系统集成模块 |
|
||||
| 前端Nginx | v1.8 | **v1.9** | 新增旧系统嵌入前端 |
|
||||
|
||||
### 内网地址变更
|
||||
|
||||
| 服务 | 部署前地址 | 部署后地址 | 状态 |
|
||||
|------|-----------|-----------|------|
|
||||
| Node.js后端 | `172.17.197.28:3001` | `172.17.197.30:3001` | ✅ 已变更 |
|
||||
| 前端Nginx | `172.17.197.29:80` | `172.17.197.31:80` | ✅ 已变更 |
|
||||
|
||||
---
|
||||
|
||||
## 一、Node.js后端更新(v2.2 → v2.3)
|
||||
|
||||
### 1.1 主要变更
|
||||
|
||||
| 类别 | 变更内容 |
|
||||
|------|---------|
|
||||
| 新增模块 | Legacy Bridge(旧系统集成认证服务) |
|
||||
| 新增依赖 | `mysql2`(连接旧系统 ECS MySQL) |
|
||||
| 新增 API | `POST /api/v1/legacy/auth`(旧系统Token注入) |
|
||||
| 新增服务 | `legacy-auth.service.ts`(MySQL用户查找/创建 + MD5 Token生成) |
|
||||
|
||||
### 1.2 Legacy Bridge 工作原理
|
||||
|
||||
1. 新系统前端调用 `POST /api/v1/legacy/auth`
|
||||
2. 后端从 JWT 中提取用户手机号
|
||||
3. 后端连接旧系统 MySQL(`xzyx_online`),通过手机号查找/创建用户
|
||||
4. 后端为该用户生成 MD5 Token,注入到 `u_user_token` 表
|
||||
5. 返回 Token + 用户信息给前端
|
||||
6. 前端构建 `token-bridge.html` URL 并在 iframe 中加载
|
||||
|
||||
### 1.3 镜像信息
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|---|
|
||||
| ACR 仓库 | `backend-service` |
|
||||
| 镜像版本 | v2.2 → **v2.3** |
|
||||
| 镜像地址 | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.3` |
|
||||
| Digest | `sha256:6e25d13cc7e1b228638a30eda35bd4aa70e0f7d52283cf66a2ffb21bee4ea288` |
|
||||
| 构建方式 | `tsc --noCheck` + Docker 多阶段构建 |
|
||||
|
||||
### 1.4 新增环境变量
|
||||
|
||||
| 环境变量 | 值 | 说明 |
|
||||
|---------|---|------|
|
||||
| `LEGACY_MYSQL_HOST` | `8.154.22.149` | 旧系统 ECS 服务器(公网IP) |
|
||||
| `LEGACY_MYSQL_PORT` | `3306` | MySQL 端口 |
|
||||
| `LEGACY_MYSQL_USER` | `root` | MySQL 用户名 |
|
||||
| `LEGACY_MYSQL_DATABASE` | `xzyx_online` | 旧系统数据库名 |
|
||||
|
||||
### 1.5 SAE 应用配置
|
||||
|
||||
| 配置项 | 0227 部署 | 0228 部署 |
|
||||
|-------|----------|----------|
|
||||
| 应用名称 | `nodejs-backend-test` | `nodejs-backend-test` |
|
||||
| 实例规格 | 2核4GB | 2核4GB |
|
||||
| 容器端口 | 3001 | 3001 |
|
||||
| 内网地址 | `172.17.197.28` | **`172.17.197.30`** |
|
||||
| 镜像版本 | v2.2 | **v2.3** |
|
||||
|
||||
---
|
||||
|
||||
## 二、前端Nginx更新(v1.8 → v1.9)
|
||||
|
||||
### 2.1 主要变更
|
||||
|
||||
| 类别 | 变更内容 |
|
||||
|------|---------|
|
||||
| 新增模块 | Legacy System iframe 嵌入(研究管理 + 统计工具) |
|
||||
| 新增组件 | `LegacySystemPage.tsx`、`ResearchManagement.tsx`、`StatisticalTools.tsx` |
|
||||
| 路由更新 | `App.tsx` 注册 `/legacy/*` 路由 |
|
||||
| 模块注册 | `moduleRegistry.ts` 更新研究管理/统计分析为 iframe embed 模式 |
|
||||
|
||||
### 2.2 旧系统嵌入架构
|
||||
|
||||
```
|
||||
新系统前端 (React)
|
||||
└─ <iframe src="token-bridge.html?token=xxx&redirect=/index.html">
|
||||
└─ token-bridge.html (ECS 上,同源于 xunzhengyixue.com)
|
||||
├─ 设置认证 Cookie (SameSite=None; Secure)
|
||||
├─ 注入 CSS 隐藏导航栏/页脚
|
||||
└─ <iframe src="/index.html"> (旧系统真实页面)
|
||||
```
|
||||
|
||||
### 2.3 镜像信息
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|---|
|
||||
| ACR 仓库 | `ai-clinical_frontend-nginx` |
|
||||
| 镜像版本 | v1.8 → **v1.9** |
|
||||
| 镜像地址 | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.9` |
|
||||
| Digest | `sha256:ff3c19152f5f5944d4be187d7bc5af986fd00b69501effbd0d53a6f8b064228a` |
|
||||
|
||||
### 2.4 SAE 应用配置
|
||||
|
||||
| 配置项 | 0227 部署 | 0228 部署 |
|
||||
|-------|----------|----------|
|
||||
| 应用名称 | `frontend-nginx-service` | `frontend-nginx-service` |
|
||||
| 实例规格 | 0.5核1GB | 0.5核1GB |
|
||||
| 容器端口 | 80 | 80 |
|
||||
| 内网地址 | `172.17.197.29` | **`172.17.197.31`** |
|
||||
| 镜像版本 | v1.8 | **v1.9** |
|
||||
| BACKEND_SERVICE_HOST | `172.17.197.28` | **`172.17.197.30`** |
|
||||
|
||||
---
|
||||
|
||||
## 三、环境变量联动更新
|
||||
|
||||
由于后端 IP 变更,前端环境变量需同步更新:
|
||||
|
||||
| 服务 | 环境变量 | 旧值 | 新值 |
|
||||
|------|---------|------|------|
|
||||
| frontend-nginx-service | `BACKEND_SERVICE_HOST` | `172.17.197.28` | `172.17.197.30` |
|
||||
|
||||
> **注意**:CLB 负载均衡器由阿里云自动更新,无需手动操作。
|
||||
|
||||
---
|
||||
|
||||
## 四、当前系统配置速查
|
||||
|
||||
### 服务内网地址
|
||||
|
||||
```
|
||||
R统计引擎: http://172.17.173.101:8080 (不变)
|
||||
Python: http://172.17.173.102:8000 (不变)
|
||||
后端: http://172.17.197.30:3001 (更新)
|
||||
前端: http://172.17.197.31:80 (更新)
|
||||
```
|
||||
|
||||
### ACR 镜像版本
|
||||
|
||||
| 仓库 | 版本 |
|
||||
|------|-----|
|
||||
| `ssa-r-statistics` | v1.0.1 |
|
||||
| `python-extraction` | v1.2 |
|
||||
| `backend-service` | **v2.3** |
|
||||
| `ai-clinical_frontend-nginx` | **v1.9** |
|
||||
|
||||
### 公网访问
|
||||
|
||||
```
|
||||
CLB: http://8.140.53.236/
|
||||
域名: https://iit.xunzhengyixue.com/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> **文档版本**:v1.0
|
||||
> **最后更新**:2026-02-28
|
||||
> **维护人员**:开发团队
|
||||
@@ -16,6 +16,7 @@
|
||||
| # | 变更内容 | 迁移文件 | 优先级 | 备注 |
|
||||
|---|---------|---------|--------|------|
|
||||
| DB-1 | ssa_workflows 类型精度对齐 + 清理重复 FK | `20260227_align_schema_with_db_types` | 低 | 幂等 SQL,RDS 上执行无副作用 |
|
||||
| DB-2 | Phase 2: user_mappings 加 user_id FK + projects 加 tenant_id FK + UserRole 加 IIT_OPERATOR | `20260228_add_iit_phase2_user_project_rbac` | 高 | nullable 列,不破坏现有数据 |
|
||||
|
||||
### 后端变更 (Node.js)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user