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:
2026-03-01 15:27:05 +08:00
parent c3f7d54fdf
commit 0b29fe88b5
61 changed files with 6877 additions and 524 deletions

View File

@@ -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
```
**前端Nginxfrontend-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
**部署状态**
- ✅ 已成功部署到SAE2026-01-01
- ✅ 服务运行正常内网地址http://172.17.173.80:80
- ✅ 已成功部署到SAE2026-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
**部署状态**
- ✅ 已成功部署到SAE2025-12-25 18:55
- ✅ 服务运行正常内网地址http://172.17.173.73:3001
- ✅ 已成功部署到SAE2026-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**scipyT检验、卡方检验逆向计算
**部署状态**
- ✅ 已部署到SAE2025-12-24
- ✅ 应用运行正常2个worker进程
- ✅ 内网访问地址:`http://172.17.173.66:8000`
- ✅ 已部署到SAE2026-02-27
- ✅ 应用运行正常2个worker进程2核4GB
- ✅ 内网访问地址:`http://172.17.173.102:8000`
- ✅ 健康检查通过
**Git文件结构**
@@ -353,6 +366,37 @@ AIclinicalresearch/extraction_service/
## 🔄 四、部署历史记录
### 2026-02-280228部署 - 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-270227部署 - 数据库迁移 + 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

View File

@@ -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 负载均衡器无需手动更新(阿里云自动处理)
```
---

View 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
> **维护人员**:开发团队

View File

@@ -16,6 +16,7 @@
| # | 变更内容 | 迁移文件 | 优先级 | 备注 |
|---|---------|---------|--------|------|
| DB-1 | ssa_workflows 类型精度对齐 + 清理重复 FK | `20260227_align_schema_with_db_types` | 低 | 幂等 SQLRDS 上执行无副作用 |
| 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)