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
This commit is contained in:
2026-02-27 14:35:25 +08:00
parent 9b8490b4d0
commit 6124c7abc6
48 changed files with 3009 additions and 582 deletions

View File

@@ -0,0 +1,714 @@
# AI临床研究平台 - 日常更新快速操作手册
> **文档用途**:日常功能更新的快速操作指南
> **目标用户**开发团队、运维人员、AI助手
> **更新时间**2025-12-25
> **特点**:短小精悍、关键信息密集、可直接复制执行
---
## 🎯 使用说明
**本文档适用于**
- ✅ 日常功能更新(修改代码后更新部署)
- ✅ 快速迭代(每天/每周更新)
- ✅ 团队协作其他人或AI快速上手
**不适用于**
- ❌ 首次完整部署(请看 `17-完整部署实战手册-2025版.md`
- ❌ 环境变量修改请看本文档第5节
- ❌ 问题排查(请看 `15-Node.js后端-部署成功总结.md`
---
## 📦 一、前置信息必读5分钟
### 1.1 ACR镜像仓库信息
**登录凭证**
```bash
Registry: crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
用户名: gofeng117@163.com
密码: fengzhibo117
```
**镜像地址格式**
```bash
# 公网地址(本地推送用)
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<仓库名>:<版本号>
# VPC地址SAE拉取用
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<仓库名>:<版本号>
```
**3个镜像仓库**
- `python-extraction` - Python微服务
- `backend-service` - Node.js后端
- `ai-clinical_frontend-nginx` - 前端Nginx
---
### 1.2 SAE应用信息
| 应用名称 | 服务 | 当前版本 | 内网地址 |
|---------|------|---------|---------|
| `python-extraction-test` | Python微服务 | v1.0 | 172.17.173.66:8000 |
| `nodejs-backend-test` | Node.js后端 | v1.3 | 172.17.173.73:3001 |
| `frontend-nginx-service` | 前端Nginx | v1.0 | 172.17.173.72:80 |
**SAE控制台**https://sae.console.aliyun.com/
---
### 1.3 版本号规范
**语义化版本**`v主版本.次版本.修订号`
```bash
v1.0 → 首次部署
v1.1 → 功能更新
v1.2 → 功能更新
v1.3 → 功能更新
v2.0 → 重大更新
```
**建议**每次更新递增次版本号v1.3 → v1.4
---
## 🚀 二、更新Node.js后端最常用⭐⭐⭐⭐⭐
### 步骤1本地构建5分钟
```bash
# 进入后端目录
cd D:\MyCursor\AIclinicalresearch\backend
# 编译TypeScript
npm run build
# 验证编译结果
dir dist
# 应该看到index.js, common/, modules/ 等
# 构建Docker镜像版本号递增
docker build -t backend-service:v1.4 .
```
**预计时间**5分钟
---
### 步骤2推送镜像到ACR10分钟
```bash
# 1. 登录ACR首次需要
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
# 2. 打标签
docker tag backend-service:v1.4 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
# 3. 推送镜像
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
# 等待推送完成约10分钟镜像约838MB
# 看到 "digest: sha256:..." 表示成功
```
**预计时间**10分钟
---
### 步骤3在SAE更新应用3分钟
**方式1Web控制台推荐**
1. 登录SAEhttps://sae.console.aliyun.com/
2. 进入应用:`nodejs-backend-test`
3. 点击【部署应用】按钮
4. 配置参数:
```yaml
镜像地址: 选择 backend-service
镜像版本: 选择 v1.4
```
5. 点击【确认】
6. 等待部署完成约5-8分钟
**方式2命令行高级**
```bash
# 使用阿里云CLI
aliyun sae DeployApplication \
--AppId <应用ID> \
--ImageUrl crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
```
**预计时间**3分钟操作 + 5-8分钟等待部署
---
### 步骤4验证部署2分钟
```bash
# 1. 查看应用状态
# SAE控制台 → 实例部署 → 状态应为 "Running"
# 2. 查看日志(确认启动成功)
# SAE控制台 → 日志查询 → 应该看到:
# "🚀 AI临床研究平台 - 后端服务器启动成功!"
# 3. 健康检查
curl http://172.17.173.73:3001/health
# 或通过公网
curl http://8.140.53.236/api/v1/health
# 4. 功能测试
# 访问前端http://8.140.53.236/
# 测试更新的功能
```
**预计时间**2分钟
---
### 完整流程时间
| 步骤 | 操作 | 时间 |
|------|------|------|
| 1 | 本地构建 | 5分钟 |
| 2 | 推送镜像 | 10分钟 |
| 3 | SAE部署 | 3分钟操作 + 5-8分钟等待 |
| 4 | 验证 | 2分钟 |
| **总计** | - | **20-25分钟** |
---
## 🎨 三、更新前端Nginx次常用⭐⭐⭐⭐
### 步骤1本地构建10分钟
```bash
# 进入前端目录
cd D:\MyCursor\AIclinicalresearch\frontend-v2
# 构建Docker镜像版本号递增
docker build -t ai-clinical_frontend-nginx:v1.1 .
# 注意Dockerfile会自动执行 npm run build
```
**预计时间**10分钟包含React构建
---
### 步骤2推送镜像到ACR3分钟
```bash
# 1. 打标签
docker tag ai-clinical_frontend-nginx:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
# 2. 推送镜像
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
# 等待推送完成约3分钟镜像约50MB
```
**预计时间**3分钟
---
### 步骤3在SAE更新应用3分钟
1. 登录SAEhttps://sae.console.aliyun.com/
2. 进入应用:`frontend-nginx-service`
3. 点击【部署应用】
4. 选择镜像版本:`v1.1`
5. 确认部署
**预计时间**3分钟操作 + 3-5分钟等待
---
### 步骤4验证部署1分钟
```bash
# 访问前端
open http://8.140.53.236/
# 或
curl http://8.140.53.236/
```
**完整时间**约15-20分钟
---
## 🐍 四、更新Python微服务较少用⭐⭐⭐
### 步骤1本地构建15分钟
```bash
# 进入Python服务目录
cd D:\MyCursor\AIclinicalresearch\extraction_service
# 构建Docker镜像
docker build -t python-extraction:v1.1 .
```
**预计时间**15分钟镜像较大
---
### 步骤2推送镜像10分钟
```bash
# 打标签
docker tag python-extraction:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
# 推送
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
```
**预计时间**10分钟镜像约1.1GB
---
### 步骤3SAE部署3分钟
1. 进入应用:`python-extraction-test`
2. 部署新版本:`v1.1`
**完整时间**约30分钟
---
## ⚙️ 五、修改环境变量(高频操作)⭐⭐⭐⭐⭐
### 关键规则
**⚠️ 重要**:修改环境变量时,使用【重启应用】,不要用【部署应用】!
| 操作 | 用途 | IP是否变 |
|------|------|---------|
| **重启应用** ✅ | 修改配置 | ❌ 不会变 |
| **部署应用** ❌ | 更新镜像 | ✅ 会变更 |
---
### 操作步骤5分钟
1. 登录SAEhttps://sae.console.aliyun.com/
2. 进入对应应用(如 `nodejs-backend-test`
3. 点击【应用配置】→【环境变量】
4. 找到要修改的变量,点击【编辑】
5. 修改变量值
6. 点击【保存】
7. 点击【重启应用】(⚠️ 不是"部署应用"
8. 等待重启完成约2-3分钟
---
### 常用环境变量速查
**Node.js后端关键变量**
```bash
# Python服务地址 变量名必须精确!)
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
# 数据库连接
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research
# LLM API密钥
DEEPSEEK_API_KEY=sk-...
DASHSCOPE_API_KEY=sk-...
```
**前端Nginx关键变量**
```bash
# 后端服务地址
BACKEND_SERVICE_HOST=172.17.173.73
BACKEND_SERVICE_PORT=3001
```
**完整环境变量清单**
- 查看 `11-Node.js后端-SAE部署配置清单.md`
---
## 📋 六、查看日志(日常运维)⭐⭐⭐⭐
### SAE控制台查看
1. 登录SAEhttps://sae.console.aliyun.com/
2. 进入对应应用
3. 点击【日志查询】
4. 选择时间范围
5. 查看实时日志
---
### 常用日志关键字
**正常启动**
```bash
# Node.js后端
"🚀 AI临床研究平台 - 后端服务器启动成功!"
"Server listening at http://172.17.173.73:3001"
# Python服务
"Uvicorn running on http://0.0.0.0:8000"
"Application startup complete"
# 前端Nginx
"Starting Frontend Nginx Service"
"Backend Service: 172.17.173.73:3001"
```
**常见错误**
```bash
# 环境变量问题
"EXTRACTION_SERVICE_URL"
"connect ECONNREFUSED"
# 数据库连接问题
"Can't reach database server"
"Connection timeout"
# 镜像问题
"ENOENT: no such file or directory"
"Error: unable to determine transport target"
```
---
## 🔄 七、回滚操作(紧急情况)⭐⭐⭐
### 什么时候需要回滚?
- ❌ 新版本有严重Bug
- ❌ 功能不符合预期
- ❌ 性能下降明显
---
### 回滚步骤5分钟
1. 登录SAEhttps://sae.console.aliyun.com/
2. 进入对应应用
3. 点击【部署应用】
4. **选择旧版本号**(如 v1.3
5. 确认部署
6. 等待回滚完成约5分钟
---
### 验证回滚
```bash
# 查看日志,确认版本
# 或访问应用,测试功能
```
---
## 🎯 八、一键更新脚本(高级)
### 为Node.js后端创建更新脚本
**创建文件**`backend/update-and-deploy.ps1`
```powershell
# Node.js后端一键更新脚本
# 使用方法: .\update-and-deploy.ps1 v1.5
param(
[Parameter(Mandatory=$true)]
[string]$Version
)
Write-Host "========================================" -ForegroundColor Green
Write-Host "开始更新Node.js后端到版本: $Version" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
# 1. 编译TypeScript
Write-Host "`n[1/4] 编译TypeScript..." -ForegroundColor Cyan
npm run build
if ($LASTEXITCODE -ne 0) {
Write-Host "❌ 编译失败!" -ForegroundColor Red
exit 1
}
Write-Host "✅ 编译成功!" -ForegroundColor Green
# 2. 构建Docker镜像
Write-Host "`n[2/4] 构建Docker镜像..." -ForegroundColor Cyan
docker build -t backend-service:$Version .
if ($LASTEXITCODE -ne 0) {
Write-Host "❌ 构建失败!" -ForegroundColor Red
exit 1
}
Write-Host "✅ 镜像构建成功!" -ForegroundColor Green
# 3. 打标签
Write-Host "`n[3/4] 打标签..." -ForegroundColor Cyan
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:$Version"
docker tag backend-service:$Version $ImageUrl
Write-Host "✅ 标签已打!" -ForegroundColor Green
# 4. 推送到ACR
Write-Host "`n[4/4] 推送到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. 进入应用: nodejs-backend-test" -ForegroundColor Yellow
Write-Host "3. 点击【部署应用】" -ForegroundColor Yellow
Write-Host "4. 选择镜像版本: $Version" -ForegroundColor Yellow
Write-Host "5. 确认部署" -ForegroundColor Yellow
Write-Host "`n镜像地址VPC:" -ForegroundColor Cyan
Write-Host "crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:$Version" -ForegroundColor Cyan
```
**使用方法**
```powershell
cd D:\MyCursor\AIclinicalresearch\backend
.\update-and-deploy.ps1 v1.5
```
---
### 为前端创建更新脚本
**创建文件**`frontend-v2/update-and-deploy.ps1`
```powershell
# 前端Nginx一键更新脚本
param(
[Parameter(Mandatory=$true)]
[string]$Version
)
Write-Host "开始更新前端Nginx到版本: $Version" -ForegroundColor Green
# 1. 构建镜像
docker build -t ai-clinical_frontend-nginx:$Version .
# 2. 打标签并推送
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:$Version"
docker tag ai-clinical_frontend-nginx:$Version $ImageUrl
docker push $ImageUrl
Write-Host "✅ 完成请在SAE控制台部署版本: $Version" -ForegroundColor Green
```
---
## 📊 九、常用操作时间估算
| 操作 | 操作时间 | 等待时间 | 总计 |
|------|---------|---------|------|
| 更新Node.js后端 | 5分钟 | 15-20分钟 | 20-25分钟 |
| 更新前端Nginx | 3分钟 | 12-18分钟 | 15-20分钟 |
| 更新Python服务 | 3分钟 | 25-30分钟 | 30分钟 |
| 修改环境变量 | 2分钟 | 2-3分钟 | 5分钟 |
| 查看日志 | 1分钟 | 0 | 1分钟 |
| 回滚版本 | 2分钟 | 5分钟 | 7分钟 |
---
## ⚠️ 十、关键注意事项
### 1. 环境变量名必须精确
```bash
# ❌ 错误
PYTHON_SERVICE_URL=http://172.17.173.66:8000
# ✅ 正确
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
```
**教训**:环境变量名必须与代码完全一致!
---
### 2. 重启 vs 部署
```
修改配置 → 重启应用IP不变
更新代码 → 部署应用IP可能变
```
**建议**尽量使用服务发现代替硬编码IP
---
### 3. 使用VPC地址拉取镜像
```bash
# SAE部署时选择VPC地址免流量费
crpi-xxx-vpc.cn-beijing.personal.cr.aliyuncs.com/...
# 本地推送时使用公网地址
crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/...
```
---
### 4. 版本号管理
**建议规范**
```bash
v1.0 - 首次部署
v1.1 - 小功能更新
v1.2 - 小功能更新
v2.0 - 重大版本升级
```
**记录版本**:在 `00-部署进度总览.md` 中更新版本号
---
## 🆘 十一、常见问题
### Q1推送镜像失败
**现象**`denied: requested access to the resource is denied`
**解决**
```bash
# 重新登录ACR
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
```
---
### Q2SAE部署失败
**步骤**
1. 查看实例日志,找到具体错误
2. 参考 `15-Node.js后端-部署成功总结.md`
3. 检查环境变量配置
4. 验证镜像是否推送成功
---
### Q3功能更新后不生效
**可能原因**
- 浏览器缓存Ctrl+F5强制刷新
- SAE部署未完成
- 版本号选择错误
---
### Q4IP地址变更了怎么办
**步骤**
1. 记录新的IP地址
2. 更新依赖该IP的服务的环境变量
3. 重启相关服务
4. 更新文档 `00-部署进度总览.md`
---
## 📞 十二、需要帮助?
### 详细文档参考
- **完整部署**`17-完整部署实战手册-2025版.md`
- **资源查询**`00-部署进度总览.md`
- **问题排查**`15-Node.js后端-部署成功总结.md`
- **文档导航**`README.md``18-部署文档使用指南.md`
---
## 🎯 总结
### 日常最常用的3个操作
1. **更新Node.js后端**20-25分钟
2. **修改环境变量**5分钟
3. **查看日志**1分钟
### 记住3个关键点
1.**版本号递增**v1.3 → v1.4 → v1.5
2.**修改配置用重启,更新代码用部署**
3.**使用VPC地址拉取镜像省钱**
### 一句话总结
**编译 → 构建 → 推送 → 部署 → 验证20分钟搞定**
---
> **最后更新**2025-12-25
> **维护人员**:开发团队
> **使用反馈**:请及时更新本文档
**祝您更新顺利!** 🚀