docs(deploy): Complete 0302 deployment documentation for IIT V3.1 QC engine upgrade
Summary: - Create 0302 deployment summary (6 DB migrations + backend v2.4 + frontend v2.0) - Update SAE status record with new IPs (172.17.197.32), versions, and history - Update daily operations manual with incremented version numbers (backend v2.5, frontend v2.1) - Clear pending deployment checklist and archive to history section - Fix stale schema table counts (iit_schema 5->22, ssa_schema 0->11) Deployment details: - Database: 6 Prisma migrations applied (84->86 tables, 442 columns verified identical) - Backend: v2.3->v2.4 (27 changes, IIT V3.1 QC engine + GCP report APIs) - Frontend: v1.9->v2.0 (17 changes, GCP 5-tab reports + V3.1 dashboard) - Both services deployed to SAE at 172.17.197.32 Made-with: Cursor
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 🚀 AI临床研究平台 - 阿里云SAE最新真实状态记录
|
||||
|
||||
> **文档用途**:记录阿里云SAE服务器最新真实状态 + 每次部署记录
|
||||
> **最后更新**:2026-02-28
|
||||
> **最后更新**:2026-03-02
|
||||
> **维护人员**:开发团队
|
||||
> **说明**:本文档准确记录SAE上所有应用的当前状态,包括内网地址、镜像版本、用户名密码等关键资源信息
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
|
||||
| 服务名称 | 部署状态 | 镜像版本 | 部署位置 | 最后更新时间 |
|
||||
|---------|---------|---------|---------|-------------|
|
||||
| **PostgreSQL数据库** | ✅ 运行中 | PostgreSQL 15 + 插件 | RDS | 2026-02-27 |
|
||||
| **前端Nginx服务** | ✅ 运行中 | **v1.9** | SAE | 2026-02-28 |
|
||||
| **PostgreSQL数据库** | ✅ 运行中 | PostgreSQL 15 + 插件 | RDS | 2026-03-02 |
|
||||
| **前端Nginx服务** | ✅ 运行中 | **v2.0** | SAE | 2026-03-02 |
|
||||
| **Python微服务** | ✅ 运行中 | **v1.2** | SAE | 2026-02-27 |
|
||||
| **Node.js后端** | ✅ 运行中 | **v2.3** | SAE | 2026-02-28 |
|
||||
| **Node.js后端** | ✅ 运行中 | **v2.4** | SAE | 2026-03-02 |
|
||||
| **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.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` |
|
||||
| **ai-clinical_frontend-nginx** | **v2.0** | ~50MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v2.0` |
|
||||
| **backend-service** | **v2.4** | ~838MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.4` |
|
||||
|
||||
---
|
||||
|
||||
@@ -91,7 +91,7 @@ postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyun
|
||||
|
||||
| 数据库 | 环境 | Schema数量 | 表数量 | 插件 | 用途 |
|
||||
|--------|------|-----------|-------|------|------|
|
||||
| `ai_clinical_research_test` | 测试环境(当前) | 16 | **84** | pg_bigm, pgvector | SAE测试环境 |
|
||||
| `ai_clinical_research_test` | 测试环境(当前) | 16 | **86** | pg_bigm, pgvector | SAE测试环境 |
|
||||
| `ai_clinical_research` | 生产环境(备用) | 11 | ~34 | pg_bigm, pgvector | 未来正式上线 |
|
||||
|
||||
**Schema架构**(16个业务Schema - 测试数据库):
|
||||
@@ -103,14 +103,14 @@ postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyun
|
||||
| `asl_schema` | 系统文献筛查 | 7 | 项目、文献、筛查记录 |
|
||||
| `pkb_schema` | 个人知识库 | 5 | 知识库、文档、批处理 |
|
||||
| `dc_schema` | 数据清洗 | 6 | 工具A/B/C数据处理 |
|
||||
| `iit_schema` | IIT Manager Agent | 5 | IIT项目、审计日志 |
|
||||
| `iit_schema` | IIT Manager Agent | 22 | IIT项目管理、QC质控引擎、审计日志 |
|
||||
| `agent_schema` | Agent框架 | 6 | Agent定义、会话、追踪 |
|
||||
| `ekb_schema` | 企业知识库 | 3 | 知识库、文档、向量 |
|
||||
| `capability_schema` | 通用能力 | 2 | Prompt模板、版本 |
|
||||
| `protocol_schema` | 方案设计 | 2 | 研究方案生成 |
|
||||
| `admin_schema` | 系统管理 | 2 | 操作日志 |
|
||||
| `rvw_schema` | 文献回顾 | 1 | 审查任务 |
|
||||
| `ssa_schema` | 智能统计分析 | 0 | 预留 |
|
||||
| `ssa_schema` | 智能统计分析 | 11 | 工作流、分析结果、报告生成 |
|
||||
| `st_schema` | 统计工具 | 0 | 预留 |
|
||||
| `common_schema` | 公共模块 | 0 | 预留 |
|
||||
| `public` | 兼容旧数据 | 2 | 旧表兼容 |
|
||||
@@ -129,8 +129,8 @@ postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyun
|
||||
|---------|------|------|-------|------|---------|---------|
|
||||
| **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** |
|
||||
| **nodejs-backend-test** | ✅ 运行中 | **2核4GB** | 1 | 3001 | `http://172.17.197.32:3001` | **v2.4** |
|
||||
| **frontend-nginx-service** | ✅ 运行中 | 0.5核1GB | 1 | 80 | `http://172.17.197.32:80` | **v2.0** |
|
||||
|
||||
**环境变量配置**:
|
||||
|
||||
@@ -191,7 +191,7 @@ LEGACY_MYSQL_DATABASE=xzyx_online
|
||||
|
||||
**前端Nginx(frontend-nginx-service)**:
|
||||
```bash
|
||||
BACKEND_SERVICE_HOST=172.17.197.30
|
||||
BACKEND_SERVICE_HOST=172.17.197.32
|
||||
BACKEND_SERVICE_PORT=3001
|
||||
```
|
||||
|
||||
@@ -259,26 +259,27 @@ TEMP_DIR=/tmp/extraction_service
|
||||
|
||||
### 3.2 前端Nginx服务
|
||||
|
||||
**当前部署版本**:v1.9
|
||||
**当前部署版本**:v2.0
|
||||
|
||||
**镜像信息**:
|
||||
- **仓库名称**:`ai-clinical_frontend-nginx`
|
||||
- **镜像版本**:`v1.9` ✅(当前部署版本)
|
||||
- **镜像版本**:`v2.0` ✅(当前部署版本)
|
||||
- **镜像大小**:约50MB
|
||||
- **基础镜像**:`nginx:alpine`
|
||||
- **构建时间**:2026-02-28
|
||||
- **镜像摘要**:sha256:ff3c19152f5f5944d4be187d7bc5af986fd00b69501effbd0d53a6f8b064228a
|
||||
- **构建时间**:2026-03-02
|
||||
- **镜像摘要**:sha256:ad24ccde2c1cdf59c07af16a429ce6298ac42d28cd9df73276ab8b653e018d38
|
||||
|
||||
**部署状态**:
|
||||
- ✅ 已成功部署到SAE(2026-02-28)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.197.31:80)
|
||||
- ✅ 已成功部署到SAE(2026-03-02)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.197.32:80)
|
||||
- ✅ 企业微信域名验证文件已部署(WW_verify_YnhsQBwI0ARnNoG0.txt)
|
||||
|
||||
**v1.9版本更新内容**:
|
||||
- ✅ 新增旧系统集成前端模块(Legacy iframe嵌入)
|
||||
- ✅ 新增 ASL 图表生成器 / Meta分析引擎
|
||||
- ✅ 新增 IIT AI对话页
|
||||
- ⚠️ 部署后内网地址变更:172.17.197.29 → 172.17.197.31
|
||||
**v2.0版本更新内容**:
|
||||
- ✅ IIT V3.1 Dashboard 健康度评分 + D1-D7 维度条 + 热力图
|
||||
- ✅ GCP 报表重构为 5 Tab(执行摘要 + D1/D2/D3D4/D6 四张报表)
|
||||
- ✅ 新增 GCP 组件:EligibilityTable / CompletenessTable / EqueryLogTable / DeviationLogTable
|
||||
- ✅ 管理端 QcDetailDrawer / RiskHeatmap / 方案偏离弹窗升级
|
||||
- ⚠️ 部署后内网地址变更:172.17.197.31 → 172.17.197.32
|
||||
|
||||
**Git文件结构**:
|
||||
```
|
||||
@@ -295,16 +296,16 @@ AIclinicalresearch/frontend-v2/
|
||||
|
||||
### 3.3 Node.js后端服务
|
||||
|
||||
**当前部署版本**:v2.3
|
||||
**当前部署版本**:v2.4
|
||||
|
||||
**镜像信息**:
|
||||
- **仓库名称**:`backend-service`
|
||||
- **镜像版本**:`v2.3` ✅(已部署)
|
||||
- **镜像版本**:`v2.4` ✅(已部署)
|
||||
- **镜像大小**:~838MB
|
||||
- **基础镜像**:`node:alpine`
|
||||
- **构建时间**:2026-02-28
|
||||
- **构建时间**:2026-03-02
|
||||
- **构建策略**:改进版方案B(本地编译+Docker打包)
|
||||
- **镜像摘要**:sha256:6e25d13cc7e1b228638a30eda35bd4aa70e0f7d52283cf66a2ffb21bee4ea288
|
||||
- **镜像摘要**:sha256:7848b1b590c138a629fcf9036204e8a2663fc653d2347f22b2928df2874a4233
|
||||
|
||||
**技术架构**:
|
||||
- **Node.js版本**:22.x
|
||||
@@ -315,8 +316,8 @@ AIclinicalresearch/frontend-v2/
|
||||
- **缓存系统**:PostgreSQL(替代Redis)
|
||||
|
||||
**部署状态**:
|
||||
- ✅ 已成功部署到SAE(2026-02-28)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.197.30:3001)
|
||||
- ✅ 已成功部署到SAE(2026-03-02)
|
||||
- ✅ 服务运行正常(内网地址:http://172.17.197.32:3001)
|
||||
- ✅ 健康检查通过
|
||||
|
||||
**Git文件结构**:
|
||||
@@ -366,6 +367,51 @@ AIclinicalresearch/extraction_service/
|
||||
|
||||
## 🔄 四、部署历史记录
|
||||
|
||||
### 2026-03-02(0302部署 - 数据库迁移6个 + IIT V3.1 QC引擎全面升级)
|
||||
|
||||
#### 部署概览
|
||||
- **部署时间**:2026-03-02
|
||||
- **部署范围**:数据库迁移(6个) + Node.js后端 + 前端Nginx 全量更新
|
||||
- **主要变更**:IIT V3.1 QC引擎架构全面升级、GCP报表、D1-D7七维分类体系
|
||||
|
||||
#### 数据库迁移(6个)
|
||||
- ✅ SSA 表类型精度对齐 + 清理重复 FK
|
||||
- ✅ Phase 2: user_mappings/projects RBAC + UserRole 加 IIT_OPERATOR
|
||||
- ✅ IIT projects 加 is_demo 标记
|
||||
- ✅ **新建 qc_field_status 五级坐标表** + qc_logs/equery 加 instance_id
|
||||
- ✅ **新建 qc_event_status 事件聚合表** + record_summary 加 13 列
|
||||
- ✅ qc_project_stats 加健康度评分 9 列
|
||||
- ✅ RDS 表数量:84 → **86**(新增 qc_field_status、qc_event_status)
|
||||
- ✅ 本地 vs RDS 模式对比:iit_schema + ssa_schema **442 列完全一致**
|
||||
|
||||
#### Node.js后端更新(v2.3 → v2.4)
|
||||
- ✅ IIT V3.1 QC 引擎:QcExecutor / QcAggregator / CompletenessEngine / ProtocolDeviationEngine / HealthScoreEngine
|
||||
- ✅ D1-D7 七维分类体系 + 五级坐标标准化
|
||||
- ✅ GCP 报表 API:D1 筛选入选 / D2 完整性 / D3D4 eQuery 生命周期 / D6 方案偏离
|
||||
- ✅ 项目级 cronExpression 调度器重构
|
||||
- ✅ 镜像构建推送:`backend-service:v2.4`(digest: sha256:7848b1b5...)
|
||||
- ✅ SAE部署成功,内网地址变更:`172.17.197.30` → `172.17.197.32`
|
||||
|
||||
#### 前端Nginx更新(v1.9 → v2.0)
|
||||
- ✅ Dashboard 健康度评分 + D1-D7 维度条 + 热力图 record×event 矩阵
|
||||
- ✅ GCP 报表重构为 5 Tab(执行摘要 + D1/D2/D3D4/D6)
|
||||
- ✅ 新增 GCP 组件:EligibilityTable / CompletenessTable / EqueryLogTable / DeviationLogTable
|
||||
- ✅ 管理端 QcDetailDrawer / RiskHeatmap / 方案偏离弹窗升级
|
||||
- ✅ 镜像构建推送:`ai-clinical_frontend-nginx:v2.0`(digest: sha256:ad24ccde...)
|
||||
- ✅ SAE部署成功,内网地址变更:`172.17.197.31` → `172.17.197.32`
|
||||
|
||||
#### 环境变量同步
|
||||
- ✅ `frontend-nginx-service` 的 `BACKEND_SERVICE_HOST` 更新为 `172.17.197.32`
|
||||
- ℹ️ CLB 由阿里云自动更新,无需手动操作
|
||||
|
||||
#### 文档产出
|
||||
- ✅ `0302部署/01-部署完成总结.md`
|
||||
- ✅ `00-阿里云SAE最新真实状态记录.md`(更新)
|
||||
- ✅ `01-日常更新操作手册.md`(更新)
|
||||
- ✅ `03-待部署变更清单.md`(清零移入历史)
|
||||
|
||||
---
|
||||
|
||||
### 2026-02-28(0228部署 - Node.js后端 + 前端更新 - 旧系统集成上线)
|
||||
|
||||
#### 部署概览
|
||||
@@ -591,5 +637,5 @@ AIclinicalresearch/extraction_service/
|
||||
---
|
||||
|
||||
> **提示**:本文档记录SAE服务器的最新真实状态,每次部署后必须更新!
|
||||
> **最后更新**:2026-02-28
|
||||
> **当前版本**:前端v1.9 | 后端v2.3 | Python v1.2 | R统计v1.0.1 | PostgreSQL 15
|
||||
> **最后更新**:2026-03-02
|
||||
> **当前版本**:前端v2.0 | 后端v2.4 | Python v1.2 | R统计v1.0.1 | PostgreSQL 15
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 日常更新操作手册
|
||||
|
||||
> 版本: v2.1(补充 0228 部署经验)
|
||||
> 更新日期: 2026-02-28
|
||||
> 版本: v2.2(补充 0302 部署经验)
|
||||
> 更新日期: 2026-03-02
|
||||
> 适用: 日常代码更新、功能迭代、配置变更
|
||||
|
||||
---
|
||||
@@ -27,7 +27,7 @@ docker login --username=gofeng117@163.com --password=fengzhibo117 crpi-cd5ij4pjt
|
||||
|
||||
## 2. Node.js 后端更新(~25 分钟)
|
||||
|
||||
**当前版本**: v2.3 → 下个版本: v2.4
|
||||
**当前版本**: v2.4 → 下个版本: v2.5
|
||||
|
||||
### 2.1 构建
|
||||
|
||||
@@ -39,7 +39,7 @@ npm run build
|
||||
# 或: npx tsc --noCheck
|
||||
|
||||
# 构建 Docker 镜像
|
||||
docker build -t backend-service:v2.4 .
|
||||
docker build -t backend-service:v2.5 .
|
||||
```
|
||||
|
||||
> **0227 经验**: `tsc` 不会拷贝 `.json` 配置文件,Dockerfile 中已有 `COPY src/modules/ssa/config/*.json` 等补丁步骤。如新模块有 JSON 配置文件需要确认 Dockerfile 覆盖到。
|
||||
@@ -47,9 +47,9 @@ docker build -t backend-service:v2.4 .
|
||||
### 2.2 推送
|
||||
|
||||
```powershell
|
||||
docker tag backend-service:v2.4 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.4
|
||||
docker tag backend-service:v2.5 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.5
|
||||
|
||||
docker push 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.5
|
||||
```
|
||||
|
||||
推送约 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.4`(与上方构建版本一致)
|
||||
2. 选择镜像 `backend-service:v2.5`(与上方构建版本一致)
|
||||
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.9 → 下个版本: v2.0
|
||||
**当前版本**: v2.0 → 下个版本: v2.1
|
||||
|
||||
### 3.1 构建
|
||||
|
||||
```powershell
|
||||
cd D:\MyCursor\AIclinicalresearch\frontend-v2
|
||||
|
||||
docker build -t ai-clinical_frontend-nginx:v2.0 .
|
||||
docker build -t ai-clinical_frontend-nginx:v2.1 .
|
||||
```
|
||||
|
||||
构建约 5 分钟(含 React 编译)。
|
||||
@@ -90,9 +90,9 @@ docker build -t ai-clinical_frontend-nginx:v2.0 .
|
||||
### 3.2 推送
|
||||
|
||||
```powershell
|
||||
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 tag ai-clinical_frontend-nginx:v2.1 crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v2.1
|
||||
|
||||
docker push 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:v2.1
|
||||
```
|
||||
|
||||
推送约 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. 选择镜像版本 `v2.0`(与上方构建版本一致)
|
||||
2. 选择镜像版本 `v2.1`(与上方构建版本一致)
|
||||
3. **检查环境变量**: `BACKEND_SERVICE_HOST` 指向最新后端 IP
|
||||
|
||||
### 3.4 验证
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
> **用途**: 开发过程中实时记录所有待部署的变更,下次部署时按此清单逐项执行
|
||||
> **维护规则**: 每次修改 Schema / 新增依赖 / 改配置时,**立即**在此文档追加记录
|
||||
> **Cursor Rule**: `.cursor/rules/deployment-change-tracking.mdc` 会自动提醒
|
||||
> **最后清零**: 2026-02-27(0227 部署完成后清零)
|
||||
> **最后清零**: 2026-03-02(0302 部署完成后清零)
|
||||
|
||||
---
|
||||
|
||||
@@ -15,66 +15,19 @@
|
||||
|
||||
| # | 变更内容 | 迁移文件 | 优先级 | 备注 |
|
||||
|---|---------|---------|--------|------|
|
||||
| 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 列,不破坏现有数据 |
|
||||
| DB-3 | IIT projects 加 is_demo 标记 | `20260228_add_iit_project_is_demo` | 低 | nullable boolean DEFAULT false,无破坏 |
|
||||
| DB-4 | V3.1 QC 引擎架构升级:新建 qc_field_status 五级坐标表 + qc_logs/equery 加 instance_id + field_mapping 加 semantic_label/form_name/rule_category | `20260301_add_v31_qc_field_status_and_instance_columns` | 高 | 全部 ADD COLUMN / CREATE TABLE,向后兼容,零停机 |
|
||||
| DB-5 | V3.1 Batch B:新建 qc_event_status 事件级聚合表 + record_summary 加 events/fields/d1-d7 聚合列 + top_issues | `20260301_add_v31_qc_event_status_and_record_summary_aggregation` | 高 | 全部 ADD COLUMN / CREATE TABLE,IF NOT EXISTS,零停机 |
|
||||
| DB-6 | V3.1 Batch C:qc_project_stats 加 d1-d7 pass_rate + health_score + health_grade + dimension_detail | `20260301_add_v31_project_stats_health_score` | 中 | 全部 ADD COLUMN,DEFAULT 值,零停机 |
|
||||
| — | *暂无* | | | |
|
||||
|
||||
### 后端变更 (Node.js)
|
||||
|
||||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||||
|---|---------|---------|---------|------|
|
||||
| BE-1 | V3.1 RedcapAdapter: normalizeInstances() + exportRecordsNormalized() 五级坐标标准化 | `adapters/RedcapAdapter.ts` | 重新构建镜像 | 新增公共方法,不破坏现有调用 |
|
||||
| BE-2 | V3.1 QC 分类体系升级:D1-D7 七维分类 + toDimensionCode() 转换函数 | `engines/HardRuleEngine.ts`, `engines/SoftRuleEngine.ts` | 重新构建镜像 | 扩展联合类型,旧值 → D-code 自动映射 |
|
||||
| BE-3 | V3.1 QcExecutor 统一质控执行入口:executeSingle/executeBatch + qc_field_status upsert | `engines/QcExecutor.ts` (新文件) | 重新构建镜像 | 包装 SkillRunner,新增字段级状态写入 |
|
||||
| BE-4 | V3.1 SyncManager: syncSemanticLabels() 语义标签自动同步 | `services/SyncManager.ts` | 重新构建镜像 | 从 REDCap 元数据填充 field_mapping.semantic_label |
|
||||
| BE-5 | 种子规则 D-code 迁移(inclusion→D1, exclusion→D1, lab_values→D3) | `prisma/seed-iit-qc-rules.ts` | 重新执行种子脚本 | 下次重新初始化项目时生效 |
|
||||
| BE-6 | V3.1 QcAggregator: aggregateDeferred() + aggregateForRecord() 异步防抖聚合 | `engines/QcAggregator.ts` (新文件) | 重新构建镜像 | 纯 SQL INSERT...ON CONFLICT 聚合,field→event→record 三级冒泡 |
|
||||
| BE-7 | V3.1 QcExecutor 集成聚合 + State Transition Hook(FAIL→PASS 自动关闭 eQuery) | `engines/QcExecutor.ts` | 重新构建镜像 | executeSingle 推 pg-boss 防抖;executeBatch 直接聚合;PASS-flip 覆盖旧 FAIL |
|
||||
| BE-8 | V3.1 pg-boss Worker: iit_qc_aggregate 受试者粒度防抖聚合 | `modules/iit-manager/index.ts` | 重新构建镜像 | singletonKey 防抖 10s,多 CRC 并发录入互不干扰 |
|
||||
| BE-9 | V3.1 D2 CompletenessEngine: 绝对必填字段缺失率 + 双重过滤(字段+时序) | `engines/CompletenessEngine.ts` (新文件) | 重新构建镜像 | 排除 branching_logic/calc/descriptive 字段 + 排除未来访视 |
|
||||
| BE-10 | V3.1 D6 ProtocolDeviationEngine: 访视超窗检测 | `engines/ProtocolDeviationEngine.ts` (新文件) | 重新构建镜像 | 基于项目 cachedRules.visitWindows 配置,支持早到/迟到检测 |
|
||||
| BE-11 | V3.1 C4 HealthScoreEngine: D1-D7 加权综合健康度评分 | `engines/HealthScoreEngine.ts` (新文件) | 重新构建镜像 | 0-100 评分 + A-F 等级,持久化到 qc_project_stats |
|
||||
| BE-12 | V3.1 Webhook Worker 接入 QcExecutor.executeSingle() | `modules/iit-manager/index.ts` | 重新构建镜像 | 替换 HardRuleEngine 旧路径 |
|
||||
| BE-13 | V3.1 batchQualityCheck 接入 QcExecutor.executeBatch() | `admin/iitBatchController.ts` | 重新构建镜像 | 替换 SkillRunner 直接调用 |
|
||||
| BE-14 | V3.1 QcExecutor 集成 D2/D6 维度引擎 | `engines/QcExecutor.ts` | 重新构建镜像 | 自动运行 CompletenessEngine + ProtocolDeviationEngine |
|
||||
| BE-15 | V3.1 QcAggregator 集成 HealthScoreEngine | `engines/QcAggregator.ts` | 重新构建镜像 | aggregateDeferred 末尾自动刷新健康度 |
|
||||
| BE-16 | V3.1 QcReportService 数据源升级 | `services/QcReportService.ts` | 重新构建镜像 | qc_field_status + event_overview + dimension_summary |
|
||||
| BE-17 | V3.1 iitQcCockpitService 升级 | `admin/iitQcCockpitService.ts` | 重新构建镜像 | 热力图 record×event + healthScore/维度 |
|
||||
| BE-18 | V3.1 新增 API: dimensions / completeness / field-status | `admin/iitQcCockpitRoutes.ts` + Controller | 重新构建镜像 | 3 个新 GET 端点 |
|
||||
| BE-19 | V3.1 ToolsService check_quality → QcExecutor | `services/ToolsService.ts` | 重新构建镜像 | + read_report dimension_summary/event_overview |
|
||||
| BE-20 | B4: 项目级 cronExpression 持久化 + 调度器重构 | `iitProjectService.ts`, `iit-manager/index.ts` | 重新构建镜像 | 旧全局 cron → dispatcher 每分钟轮询 + per-project 匹配 |
|
||||
| BE-21 | B4: iit_scheduled_qc Worker V3.1 升级 | `iit-manager/index.ts` | 重新构建镜像 | 替换 HardRuleEngine → QcExecutor.executeBatch |
|
||||
| BE-22 | P0-A: SkillRunner evidence 传播 category + subType | `engines/SkillRunner.ts` | 重新构建镜像 | D1 规则不再被错误存为 D3;需重跑全量 QC |
|
||||
| BE-23 | P0-A: QcExecutor dimCode 回退逻辑增强 | `engines/QcExecutor.ts` | 重新构建镜像 | 优先取 evidence.category |
|
||||
| BE-24 | P0-B: ProtocolDeviationEngine 输出结构化 JSON actual_value | `engines/ProtocolDeviationEngine.ts` | 重新构建镜像 | D6 API 零正则零脆断 |
|
||||
| BE-25 | GCP D1 筛选入选表 API + D2 完整性总览/字段懒加载 API | `iitQcCockpitService/Controller/Routes` | 重新构建镜像 | 5 层数据 + L4/L5 按需加载 |
|
||||
| BE-26 | GCP D3/D4 eQuery 全生命周期跟踪 API | `iitQcCockpitService/Controller/Routes` | 重新构建镜像 | 统计+分组+全量明细+时间线 |
|
||||
| BE-27 | GCP D6 方案偏离报表增强 API | `iitQcCockpitService/Controller/Routes` | 重新构建镜像 | JSON.parse(actual_value) 结构化超窗数据 |
|
||||
| — | *暂无* | | | |
|
||||
|
||||
### 前端变更
|
||||
|
||||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||||
|---|---------|---------|---------|------|
|
||||
| FE-1 | V3.1 DashboardPage: 后端 healthScore + D1-D7 维度条 | `DashboardPage.tsx` | 重新构建前端 | 替换客户端健康度计算 |
|
||||
| FE-2 | V3.1 热力图 record×event 矩阵 | `DashboardPage.tsx` | 重新构建前端 | cells 用 eventId |
|
||||
| FE-3 | V3.1 ReportsPage: 维度分析 + 事件概览 tab | `ReportsPage.tsx` | 重新构建前端 | 2 新 Tab + 五级坐标列 |
|
||||
| FE-4 | V3.1 API 客户端 + 类型定义 | `iitProjectApi.ts`, `qcCockpit.ts` | 重新构建前端 | 3 个新 API + V3.1 类型 |
|
||||
| FE-5 | B4: 管理端项目配置页 cron UI 增强 | `IitProjectDetailPage.tsx`, `iitProject.ts` | 重新构建前端 | 更多预设选项 + 自定义 cron 输入框 |
|
||||
| FE-6 | V3.1 管理端类型 V3.1 升级 | `qcCockpit.ts` | 重新构建前端 | HeatmapCell.eventId + DimensionBreakdown + DeviationItem + RecordDetail 五级坐标 |
|
||||
| FE-7 | V3.1 管理端 API 客户端升级 | `iitProjectApi.ts` | 重新构建前端 | getQcRecordDetail(eventId) + getDeviations + getDimensions + getCompleteness + getFieldStatus |
|
||||
| FE-8 | V3.1 QcDetailDrawer 事件级详情 + 维度标签 | `QcDetailDrawer.tsx` | 重新构建前端 | eventId 传参 + 语义标签 + D-code Tag |
|
||||
| FE-9 | V3.1 RiskHeatmap 列头中文化 | `RiskHeatmap.tsx` | 重新构建前端 | 使用后端 columnLabels 映射 + Tooltip 显示原始 eventId |
|
||||
| FE-10 | V3.1 IitQcCockpitPage 方案偏离弹窗升级 | `IitQcCockpitPage.tsx` | 重新构建前端 | 调用 D6 deviations API + 五级坐标定位表格 |
|
||||
| FE-11 | V3.1 QcReportDrawer 维度分析 + 事件概览 Tab | `QcReportDrawer.tsx` | 重新构建前端 | 新增维度分析(D1-D7)和事件概览(按受试者缺失率)Tab |
|
||||
| FE-12 | GCP 业务端 API 类型定义 | `iit/api/iitProjectApi.ts` | 重新构建前端 | 5 个报表接口 + 完整 TS 类型 |
|
||||
| FE-13 | GCP ReportsPage 重构为 5 Tab | `iit/pages/ReportsPage.tsx` | 重新构建前端 | 执行摘要 + D1/D2/D3D4/D6 四张 GCP 报表 |
|
||||
| FE-14 | GCP D1 EligibilityTable 组件 | `iit/components/reports/EligibilityTable.tsx` | 重新构建前端 | 纳入/排除逐条判定 + 受试者展开 |
|
||||
| FE-15 | GCP D2 CompletenessTable 组件 | `iit/components/reports/CompletenessTable.tsx` | 重新构建前端 | L2/L3 统计 + L4/L5 懒加载展开 |
|
||||
| FE-16 | GCP D3/D4 EqueryLogTable 组件 | `iit/components/reports/EqueryLogTable.tsx` | 重新构建前端 | eQuery 生命周期时间线 + 筛选 |
|
||||
| FE-17 | GCP D6 DeviationLogTable 组件 | `iit/components/reports/DeviationLogTable.tsx` | 重新构建前端 | 结构化超窗数据 + 影响评估/CAPA 预留 |
|
||||
| — | *暂无* | | | |
|
||||
|
||||
### Python 微服务变更
|
||||
|
||||
@@ -130,6 +83,16 @@
|
||||
|
||||
## 历史(已部署,仅供追溯)
|
||||
|
||||
### 0302 部署已清零项
|
||||
|
||||
| # | 变更内容 | 部署日期 | 结果 |
|
||||
|---|---------|---------|------|
|
||||
| DB | 6 个 Prisma 迁移(SSA 类型对齐 + IIT RBAC + is_demo + V3.1 QC 三批) | 2026-03-02 | ✅ |
|
||||
| DB | 新建 qc_field_status、qc_event_status 2 张表(84 → 86) | 2026-03-02 | ✅ |
|
||||
| BE | Node.js v2.3 → v2.4(IIT V3.1 QC引擎全面升级,27 项变更) | 2026-03-02 | ✅ |
|
||||
| FE | 前端 v1.9 → v2.0(GCP 报表 + V3.1 前端,17 项变更) | 2026-03-02 | ✅ |
|
||||
| ENV | frontend-nginx-service: BACKEND_SERVICE_HOST → 172.17.197.32 | 2026-03-02 | ✅ |
|
||||
|
||||
### 0227 部署已清零项
|
||||
|
||||
| # | 变更内容 | 部署日期 | 结果 |
|
||||
|
||||
157
docs/05-部署文档/0302部署/01-部署完成总结.md
Normal file
157
docs/05-部署文档/0302部署/01-部署完成总结.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# 2026年3月2日部署完成总结
|
||||
|
||||
> **部署日期**:2026-03-02
|
||||
> **部署范围**:数据库迁移(6个) + Node.js后端 + 前端Nginx 全量更新
|
||||
> **部署状态**:✅ 全部完成
|
||||
> **文档日期**:2026-03-02
|
||||
|
||||
---
|
||||
|
||||
## 部署成果一览
|
||||
|
||||
### 服务版本对比
|
||||
|
||||
| 服务 | 部署前 | 部署后 | 变更类型 |
|
||||
|------|--------|--------|---------|
|
||||
| PostgreSQL(RDS) | 16 Schema / 84 表 | 16 Schema / **86 表** | Schema迁移(6个) |
|
||||
| Node.js后端 | v2.3 | **v2.4** | IIT V3.1 QC引擎全面升级 |
|
||||
| 前端Nginx | v1.9 | **v2.0** | IIT GCP报表 + V3.1前端 |
|
||||
|
||||
### 内网地址变更
|
||||
|
||||
| 服务 | 部署前地址 | 部署后地址 | 状态 |
|
||||
|------|-----------|-----------|------|
|
||||
| Node.js后端 | `172.17.197.30:3001` | `172.17.197.32:3001` | ✅ 已变更 |
|
||||
| 前端Nginx | `172.17.197.31:80` | `172.17.197.32:80` | ✅ 已变更 |
|
||||
|
||||
---
|
||||
|
||||
## 一、数据库迁移
|
||||
|
||||
### 1.1 迁移概览
|
||||
|
||||
部署前通过 Docker pg_dump 备份 RDS 测试数据库(37.71 MB),备份文件:`backup_before_0301_deploy.dump`。
|
||||
|
||||
通过 `prisma migrate deploy` 连接 RDS 外网地址,一次性应用 6 个迁移,全部成功。
|
||||
|
||||
迁移后使用 Python 脚本对比本地开发数据库与 RDS,确认 iit_schema + ssa_schema **442 列完全一致,零漂移**。
|
||||
|
||||
### 1.2 应用的迁移文件
|
||||
|
||||
| # | 迁移文件 | 内容 | 变更类型 |
|
||||
|---|---------|------|---------|
|
||||
| 1 | `20260227_align_schema_with_db_types` | SSA 表类型精度对齐 + 清理重复 FK | ALTER COLUMN + DROP CONSTRAINT |
|
||||
| 2 | `20260228_add_iit_phase2_user_project_rbac` | user_mappings 加 user_id FK + projects 加 tenant_id FK + UserRole 加 IIT_OPERATOR | ADD COLUMN + ADD CONSTRAINT + ALTER TYPE |
|
||||
| 3 | `20260228_add_iit_project_is_demo` | projects 加 is_demo 标记 | ADD COLUMN |
|
||||
| 4 | `20260301_add_v31_qc_field_status_and_instance_columns` | **新建 qc_field_status 五级坐标表** + qc_logs/equery 加 instance_id + field_mapping 加 3 列 | CREATE TABLE + ADD COLUMN |
|
||||
| 5 | `20260301_add_v31_qc_event_status_and_record_summary_aggregation` | **新建 qc_event_status 事件聚合表** + record_summary 加 13 列 | CREATE TABLE + ADD COLUMN |
|
||||
| 6 | `20260301_add_v31_project_stats_health_score` | qc_project_stats 加健康度评分 9 列 | ADD COLUMN |
|
||||
|
||||
### 1.3 迁移结果
|
||||
|
||||
| 验证项 | 结果 |
|
||||
|-------|------|
|
||||
| Prisma 迁移记录 | 19 条(含 6 条新增) ✅ |
|
||||
| iit_schema 表数量 | 20 → **22**(新增 qc_field_status、qc_event_status) ✅ |
|
||||
| 本地 vs RDS 列对比 | **442 列完全一致** ✅ |
|
||||
| 已有数据完整性 | 全部向后兼容,零数据丢失 ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 二、Node.js后端更新(v2.3 → v2.4)
|
||||
|
||||
### 2.1 主要变更(27 项)
|
||||
|
||||
**IIT V3.1 QC 引擎架构全面升级**:
|
||||
|
||||
| 类别 | 变更内容 |
|
||||
|------|---------|
|
||||
| 五级坐标 | RedcapAdapter normalizeInstances()、qc_field_status 五级坐标 upsert |
|
||||
| D1-D7 分类 | 七维分类体系(D1 入排、D2 完整性、D3 逻辑一致性、D5 时效性、D6 方案偏离、D7 安全性) |
|
||||
| 统一执行器 | QcExecutor executeSingle/executeBatch 统一入口 |
|
||||
| 聚合引擎 | QcAggregator field→event→record 三级冒泡 + pg-boss 防抖 |
|
||||
| D2 引擎 | CompletenessEngine 绝对必填字段缺失率 |
|
||||
| D6 引擎 | ProtocolDeviationEngine 访视超窗检测 |
|
||||
| 健康度评分 | HealthScoreEngine D1-D7 加权评分 (0-100 + A-F 等级) |
|
||||
| GCP 报表 API | D1 筛选入选表 / D2 完整性总览 / D3D4 eQuery 生命周期 / D6 方案偏离 |
|
||||
| 调度器 | 项目级 cronExpression 持久化 + dispatcher 重构 |
|
||||
|
||||
### 2.2 镜像信息
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|---|
|
||||
| ACR 仓库 | `backend-service` |
|
||||
| 镜像版本 | v2.3 → **v2.4** |
|
||||
| Digest | `sha256:7848b1b590c138a629fcf9036204e8a2663fc653d2347f22b2928df2874a4233` |
|
||||
| 内网地址 | `http://172.17.197.32:3001` |
|
||||
|
||||
---
|
||||
|
||||
## 三、前端Nginx更新(v1.9 → v2.0)
|
||||
|
||||
### 3.1 主要变更(17 项)
|
||||
|
||||
**IIT V3.1 前端全面升级 + GCP 报表**:
|
||||
|
||||
| 类别 | 变更内容 |
|
||||
|------|---------|
|
||||
| Dashboard | 后端 healthScore + D1-D7 维度条 + 热力图 record×event 矩阵 |
|
||||
| GCP 报表 | ReportsPage 重构为 5 Tab(执行摘要 + D1/D2/D3D4/D6) |
|
||||
| GCP 组件 | EligibilityTable / CompletenessTable / EqueryLogTable / DeviationLogTable |
|
||||
| 管理端 | QcDetailDrawer 事件级详情 + RiskHeatmap 列头中文化 + 方案偏离弹窗 |
|
||||
| API 客户端 | 5 个新报表接口 + V3.1 完整 TS 类型定义 |
|
||||
| 旧系统集成 | "正在加载..." 替代 "正在连接旧系统..."(去除双系统感知) |
|
||||
|
||||
### 3.2 镜像信息
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|---|
|
||||
| ACR 仓库 | `ai-clinical_frontend-nginx` |
|
||||
| 镜像版本 | v1.9 → **v2.0** |
|
||||
| Digest | `sha256:ad24ccde2c1cdf59c07af16a429ce6298ac42d28cd9df73276ab8b653e018d38` |
|
||||
| 内网地址 | `http://172.17.197.32:80` |
|
||||
|
||||
---
|
||||
|
||||
## 四、环境变量联动更新
|
||||
|
||||
| 服务 | 环境变量 | 旧值 | 新值 |
|
||||
|------|---------|------|------|
|
||||
| frontend-nginx-service | `BACKEND_SERVICE_HOST` | `172.17.197.30` | `172.17.197.32` |
|
||||
|
||||
> CLB 负载均衡器由阿里云自动更新,无需手动操作。
|
||||
|
||||
---
|
||||
|
||||
## 五、当前系统配置速查
|
||||
|
||||
### 服务内网地址
|
||||
|
||||
```
|
||||
R统计引擎: http://172.17.173.101:8080 (不变)
|
||||
Python: http://172.17.173.102:8000 (不变)
|
||||
后端: http://172.17.197.32:3001 (更新)
|
||||
前端: http://172.17.197.32:80 (更新)
|
||||
```
|
||||
|
||||
### ACR 镜像版本
|
||||
|
||||
| 仓库 | 版本 |
|
||||
|------|-----|
|
||||
| `ssa-r-statistics` | v1.0.1 |
|
||||
| `python-extraction` | v1.2 |
|
||||
| `backend-service` | **v2.4** |
|
||||
| `ai-clinical_frontend-nginx` | **v2.0** |
|
||||
|
||||
### 公网访问
|
||||
|
||||
```
|
||||
CLB: http://8.140.53.236/
|
||||
域名: https://iit.xunzhengyixue.com/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> **文档版本**:v1.0
|
||||
> **最后更新**:2026-03-02
|
||||
> **维护人员**:开发团队
|
||||
@@ -965,9 +965,7 @@
|
||||
margin: 16px 0 8px 0;
|
||||
font-weight: 700;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.message-bubble .markdown-content h1:first-child,
|
||||
}.message-bubble .markdown-content h1:first-child,
|
||||
.message-bubble .markdown-content h2:first-child,
|
||||
.message-bubble .markdown-content h3:first-child {
|
||||
margin-top: 0;
|
||||
@@ -1006,4 +1004,4 @@
|
||||
border-radius: 4px;
|
||||
font-family: 'Monaco', 'Consolas', 'Courier New', monospace;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user