deploy: Complete 0126-27 deployment - database upgrade, services update, code recovery

Major Changes:
- Database: Install pg_bigm/pgvector plugins, create test database
- Python service: v1.0 -> v1.1, add pymupdf4llm/openpyxl/pypandoc
- Node.js backend: v1.3 -> v1.7, fix pino-pretty and ES Module imports
- Frontend: v1.2 -> v1.3, skip TypeScript check for deployment
- Code recovery: Restore empty files from local backup

Technical Fixes:
- Fix pino-pretty error in production (conditional loading)
- Fix ES Module import paths (add .js extensions)
- Fix OSSAdapter TypeScript errors
- Update Prisma Schema (63 models, 16 schemas)
- Update environment variables (DATABASE_URL, EXTRACTION_SERVICE_URL, OSS)
- Remove deprecated variables (REDIS_URL, DIFY_API_URL, DIFY_API_KEY)

Documentation:
- Create 0126 deployment folder with 8 documents
- Update database development standards v2.0
- Update SAE deployment status records

Deployment Status:
- PostgreSQL: ai_clinical_research_test with plugins
- Python: v1.1 @ 172.17.173.84:8000
- Backend: v1.7 @ 172.17.173.89:3001
- Frontend: v1.3 @ 172.17.173.90:80

Tested: All services running successfully on SAE
This commit is contained in:
2026-01-27 08:13:27 +08:00
parent 01a17f1e6f
commit 2481b786d8
318 changed files with 5290 additions and 3216 deletions

View File

@@ -0,0 +1,311 @@
# 🎨 前端Nginx服务部署方案
> **文档版本**v1.0
> **创建日期**2026-01-26
> **适用范围**frontend-v2 前端服务
> **变更类型**:代码更新 + 镜像重建
---
## 📋 一、变更概述
### 1.1 变更内容
| 变更项 | 描述 | 优先级 |
|--------|------|--------|
| **IIT Manager Agent前端** | AI对话、REDCap数据展示 | 🟡 中 |
| **ASL文献筛选UI** | 功能完善和优化 | 🟡 中 |
| **DC数据清洗UI** | 功能更新 | 🟡 中 |
| **其他UI优化** | 样式和交互改进 | 🟢 低 |
### 1.2 当前状态
```yaml
服务名称: frontend-nginx-service
当前版本: v1.2
镜像大小: ~50MB
内网地址: http://172.17.173.80:80
技术栈:
- React: 19
- TypeScript: 5
- Vite: 6
- Ant Design: 5
- TailwindCSS: 3
```
### 1.3 目标状态
```yaml
目标版本: v1.3
预计镜像大小: ~50MB
主要更新:
- IIT模块前端页面
- ASL模块UI优化
- DC模块功能完善
```
---
## 🚀 二、构建与部署步骤
### Step 1进入前端目录
```bash
cd D:\MyCursor\AIclinicalresearch\frontend-v2
```
### Step 2检查代码状态
```bash
# 查看Git状态
git status
# 确保代码最新
git pull origin main
```
### Step 3本地测试构建可选
```bash
# 安装依赖
npm install
# 本地构建测试
npm run build
# 本地预览
npm run preview
```
### Step 4构建Docker镜像
```powershell
docker build -t ai-clinical_frontend-nginx:v1.3 .
# 预计时间10分钟包含React构建
# 预计大小约50MB
```
### Step 5本地验证镜像可选
```powershell
# 运行容器测试
docker run --rm -p 80:80 `
-e BACKEND_SERVICE_HOST=172.17.173.73 `
-e BACKEND_SERVICE_PORT=3001 `
ai-clinical_frontend-nginx:v1.3
# 访问 http://localhost 验证
```
### Step 6登录ACR
```powershell
docker login --username=gofeng117@163.com `
--password=fengzhibo117 `
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
```
### Step 7打标签
```powershell
docker tag ai-clinical_frontend-nginx:v1.3 `
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.3
```
### Step 8推送到ACR
```powershell
docker push `
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.3
# 预计时间3分钟镜像约50MB
# 成功标志:看到 "digest: sha256:..."
```
### Step 9SAE部署
1. 登录SAEhttps://sae.console.aliyun.com/
2. 进入应用:`frontend-nginx-service`
3. 点击【部署应用】
4. 配置:
- **镜像地址**:选择 `ai-clinical_frontend-nginx`
- **镜像版本**:选择 `v1.3`
5. 点击【确认】
6. 等待部署完成约3-5分钟
### Step 10检查环境变量
确保环境变量正确:
```bash
BACKEND_SERVICE_HOST=172.17.173.73 # 后端内网IP
BACKEND_SERVICE_PORT=3001
```
**注意**如果后端部署后IP变化需要更新此变量
### Step 11验证部署
```bash
# 通过公网访问
curl http://8.140.53.236/
# 或访问域名
curl https://iit.xunzhengyixue.com/
# 检查静态资源加载
# 浏览器访问并打开开发者工具查看Network
```
---
## 📋 三、一键部署脚本
### PowerShell脚本
`frontend-v2/update-and-deploy.ps1`
```powershell
# 前端Nginx一键更新脚本
# 使用方法: .\update-and-deploy.ps1 v1.3
param(
[Parameter(Mandatory=$true)]
[string]$Version
)
$ErrorActionPreference = "Stop"
Write-Host "========================================" -ForegroundColor Green
Write-Host "开始更新前端Nginx到版本: $Version" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
# 1. 构建镜像包含React build
Write-Host "`n[1/3] 构建Docker镜像包含React构建..." -ForegroundColor Cyan
docker build -t ai-clinical_frontend-nginx:$Version .
if ($LASTEXITCODE -ne 0) {
Write-Host "❌ 构建失败!" -ForegroundColor Red
exit 1
}
Write-Host "✅ 镜像构建成功!" -ForegroundColor Green
# 2. 打标签
Write-Host "`n[2/3] 打标签..." -ForegroundColor Cyan
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:$Version"
docker tag ai-clinical_frontend-nginx:$Version $ImageUrl
Write-Host "✅ 标签已打!" -ForegroundColor Green
# 3. 推送到ACR
Write-Host "`n[3/3] 推送到ACR..." -ForegroundColor Cyan
Write-Host "推送地址: $ImageUrl" -ForegroundColor Yellow
docker push $ImageUrl
if ($LASTEXITCODE -ne 0) {
Write-Host "❌ 推送失败!" -ForegroundColor Red
exit 1
}
Write-Host "`n========================================" -ForegroundColor Green
Write-Host "✅ 前端镜像已推送成功!" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
Write-Host "`n下一步操作:" -ForegroundColor Yellow
Write-Host "1. 登录SAE控制台: https://sae.console.aliyun.com/" -ForegroundColor Yellow
Write-Host "2. 进入应用: frontend-nginx-service" -ForegroundColor Yellow
Write-Host "3. 检查环境变量如果后端IP有变化" -ForegroundColor Red
Write-Host " BACKEND_SERVICE_HOST=<后端新IP>" -ForegroundColor Red
Write-Host "4. 点击【部署应用】" -ForegroundColor Yellow
Write-Host "5. 选择镜像版本: $Version" -ForegroundColor Yellow
Write-Host "6. 确认部署" -ForegroundColor Yellow
Write-Host "`n镜像地址VPC:" -ForegroundColor Cyan
Write-Host "crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:$Version" -ForegroundColor Cyan
```
---
## ⚠️ 四、注意事项
### 4.1 Windows换行符问题
之前v1.1部署遇到过CRLF问题确保
1. `docker-entrypoint.sh` 使用Unix换行符LF
2. 检查方法:
```powershell
# 检查是否有CRLF
(Get-Content docker-entrypoint.sh -Raw) -match "`r`n"
# 如果返回True需要转换
```
3. 转换方法:
```powershell
(Get-Content docker-entrypoint.sh -Raw) -replace "`r`n", "`n" | Set-Content -NoNewline docker-entrypoint.sh
```
### 4.2 后端IP变更处理
如果后端部署后IP变化
1. 获取新的后端内网IP
2. 更新前端环境变量:
```
BACKEND_SERVICE_HOST=<新IP>
```
3. 使用【重启应用】不是部署IP不会变
### 4.3 缓存问题
前端更新后用户可能看到旧版本:
- 告知用户使用 Ctrl+F5 强制刷新
- 或清除浏览器缓存
---
## 🔄 五、回滚方案
如果v1.3出现问题回滚到v1.2
1. 登录SAE控制台
2. 进入应用:`frontend-nginx-service`
3. 点击【部署应用】
4. 选择镜像版本:`v1.2`
5. 确认部署
---
## ✅ 六、验证清单
### 部署前验证
- [ ] 本地 `npm run build` 成功
- [ ] Docker镜像构建成功
- [ ] ACR推送成功
### 部署后验证
- [ ] SAE部署成功
- [ ] 公网可访问
- [ ] 静态资源加载正常
- [ ] API代理正常前端→后端
- [ ] IIT模块页面可访问
- [ ] ASL模块功能正常
- [ ] DC模块功能正常
---
## 📊 七、时间估算
| 步骤 | 预计时间 |
|------|---------|
| 构建Docker镜像 | 10分钟 |
| 推送到ACR | 3分钟 |
| SAE部署 | 5分钟 |
| 验证测试 | 5分钟 |
| **总计** | **23分钟** |
---
> **最后更新**2026-01-26
> **维护人员**:开发团队