1. 排行榜悬浮窗关闭后小按钮消失问题 - 修复面板居中模式关闭时按钮位置错误 - 保存并恢复按钮的居中状态 2. 首页tag按钮按素材数量排序 - 添加按素材数量降序排序逻辑 3. 上传弹窗输入框浅色模式文字不可见 - 添加 text-slate-900 确保浅色模式下文字可见 - 添加 placeholder 样式确保占位符正确显示
439 lines
8.9 KiB
Markdown
439 lines
8.9 KiB
Markdown
# 模板系统优化 - 部署说明
|
||
|
||
## 概述
|
||
|
||
本文档说明如何将模板系统优化部署到生产环境。部署使用Harbor Registry和现有的 `deploy-new-fixed.ps1` 脚本。
|
||
|
||
## 部署架构
|
||
|
||
```
|
||
本地开发环境
|
||
↓ (构建镜像)
|
||
↓
|
||
Harbor Registry (harbor.flnxi.com)
|
||
↓ (拉取镜像)
|
||
↓
|
||
生产服务器 (45.249.208.118)
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 1. 本地部署(一键)
|
||
|
||
```powershell
|
||
# 在项目根目录执行
|
||
.\deploy-new-fixed.ps1 -Registry harbor
|
||
```
|
||
|
||
这个命令会自动:
|
||
- ✓ 运行代码检查
|
||
- ✓ 构建Docker镜像
|
||
- ✓ 推送到Harbor
|
||
- ✓ SSH到服务器部署
|
||
|
||
### 2. 服务器数据迁移
|
||
|
||
```bash
|
||
# SSH连接
|
||
ssh root@45.249.208.118
|
||
|
||
# 执行迁移
|
||
cd /root/deploy
|
||
docker exec flnxi-material npx prisma migrate deploy
|
||
docker exec flnxi-material npm run migrate:template-data
|
||
docker exec flnxi-material npm run verify:template-data
|
||
```
|
||
|
||
### 3. 验证
|
||
|
||
访问: http://45.249.208.118:4320/admin/templates
|
||
|
||
## 详细步骤
|
||
|
||
### 步骤 1: 部署前准备
|
||
|
||
#### 1.1 检查代码状态
|
||
|
||
```powershell
|
||
# 运行测试
|
||
npm test
|
||
|
||
# 代码检查
|
||
npm run check
|
||
|
||
# 查看Git状态
|
||
git status
|
||
```
|
||
|
||
确认:
|
||
- [ ] 所有测试通过(118个)
|
||
- [ ] 代码已提交
|
||
- [ ] 无未跟踪的重要文件
|
||
|
||
#### 1.2 备份数据库
|
||
|
||
```bash
|
||
# SSH到服务器
|
||
ssh root@45.249.208.118
|
||
|
||
# 创建备份目录
|
||
mkdir -p /backup
|
||
|
||
# 备份数据库
|
||
docker exec flnxi-postgres pg_dump -U postgres -d flnxi_material -F c -b -v -f /backup/backup_$(date +%Y%m%d_%H%M%S).dump
|
||
|
||
# 验证备份文件
|
||
ls -lh /backup/
|
||
```
|
||
|
||
### 步骤 2: 构建和推送
|
||
|
||
#### 2.1 使用部署脚本
|
||
|
||
```powershell
|
||
# 基本部署
|
||
.\deploy-new-fixed.ps1 -Registry harbor
|
||
|
||
# 使用SSH密钥
|
||
.\deploy-new-fixed.ps1 `
|
||
-Registry harbor `
|
||
-KeyPath "C:\Users\YourUsername\.ssh\youyidian_prod_ed25519"
|
||
|
||
# 跳过代码检查(快速部署)
|
||
.\deploy-new-fixed.ps1 -Registry harbor -SkipCheck
|
||
|
||
# 清理旧镜像
|
||
.\deploy-new-fixed.ps1 -Registry harbor -CleanImages -KeepImageCount 5
|
||
```
|
||
|
||
#### 2.2 脚本执行流程
|
||
|
||
1. **检查阶段** (可选)
|
||
- 运行 `npm run check`
|
||
- 验证代码质量
|
||
|
||
2. **构建阶段**
|
||
- 准备 `.env.production`
|
||
- 执行 `docker build`
|
||
- 验证镜像
|
||
|
||
3. **推送阶段**
|
||
- 登录Harbor
|
||
- 推送镜像到 `harbor.flnxi.com/flnxi/flnxi-material:local-deploy`
|
||
|
||
4. **部署阶段**
|
||
- SSH连接到服务器
|
||
- 拉取镜像
|
||
- 重启应用容器
|
||
|
||
### 步骤 3: 数据库迁移
|
||
|
||
#### 3.1 应用Prisma迁移
|
||
|
||
```bash
|
||
# 在服务器上执行
|
||
docker exec flnxi-material npx prisma migrate deploy
|
||
```
|
||
|
||
这会应用以下迁移:
|
||
- `20251201133500_add_material_kind_to_templates`
|
||
- `20251202000000_add_material_kind_to_materials`
|
||
- `20251202091500_add_material_ownership_fields`
|
||
- `20251213073100_add_template_system_indexes`
|
||
|
||
#### 3.2 运行数据迁移脚本
|
||
|
||
```bash
|
||
# 迁移旧数据
|
||
docker exec flnxi-material npm run migrate:template-data
|
||
```
|
||
|
||
脚本会:
|
||
1. 检查模板version字段
|
||
2. 为没有templateId的素材分配默认模板
|
||
3. 验证数据完整性
|
||
4. 生成迁移报告
|
||
|
||
#### 3.3 验证数据
|
||
|
||
```bash
|
||
# 验证数据完整性
|
||
docker exec flnxi-material npm run verify:template-data
|
||
```
|
||
|
||
验证内容:
|
||
- 模板数据完整性
|
||
- 素材templateId引用
|
||
- 字段数据完整性
|
||
- 字段池数据
|
||
- 孤立数据检查
|
||
|
||
### 步骤 4: 验证部署
|
||
|
||
#### 4.1 健康检查
|
||
|
||
```bash
|
||
# 检查应用状态
|
||
curl http://45.249.208.118:4320/api/health
|
||
|
||
# 查看容器状态
|
||
docker ps | grep flnxi-material
|
||
|
||
# 查看日志
|
||
docker logs -f flnxi-material --tail 100
|
||
```
|
||
|
||
#### 4.2 功能测试
|
||
|
||
访问以下页面进行测试:
|
||
|
||
1. **模板管理** (http://45.249.208.118:4320/admin/templates)
|
||
- [ ] 页面正常加载
|
||
- [ ] 可以查看模板列表
|
||
- [ ] 可以创建新模板
|
||
- [ ] 可以编辑模板字段
|
||
- [ ] 字段拖拽排序正常
|
||
|
||
2. **素材上传** (http://45.249.208.118:4320/upload)
|
||
- [ ] 可以选择模板
|
||
- [ ] 自定义字段显示正确
|
||
- [ ] 可以上传素材
|
||
- [ ] 素材详情页正常
|
||
|
||
3. **首页筛选** (http://45.249.208.118:4320)
|
||
- [ ] Tag按钮显示正常
|
||
- [ ] 筛选功能正常
|
||
- [ ] 筛选结果正确
|
||
|
||
#### 4.3 性能检查
|
||
|
||
```bash
|
||
# 查看资源使用
|
||
docker stats flnxi-material --no-stream
|
||
|
||
# 检查响应时间
|
||
time curl -s http://45.249.208.118:4320/api/admin/upload-templates > /dev/null
|
||
```
|
||
|
||
预期指标:
|
||
- 模板列表加载 < 500ms
|
||
- 素材上传验证 < 100ms
|
||
- 内存使用 < 1GB
|
||
- CPU使用 < 50%
|
||
|
||
### 步骤 5: 监控
|
||
|
||
#### 5.1 查看日志
|
||
|
||
```bash
|
||
# 实时日志
|
||
docker logs -f flnxi-material
|
||
|
||
# 最近100行
|
||
docker logs flnxi-material --tail 100
|
||
|
||
# 错误日志
|
||
docker logs flnxi-material 2>&1 | grep -i error
|
||
|
||
# 特定时间段
|
||
docker logs flnxi-material --since 30m
|
||
```
|
||
|
||
#### 5.2 监控指标
|
||
|
||
持续监控30分钟,关注:
|
||
- 错误日志数量
|
||
- 响应时间
|
||
- 内存使用趋势
|
||
- CPU使用率
|
||
- 用户反馈
|
||
|
||
## 回滚方案
|
||
|
||
如果部署出现严重问题,按以下步骤回滚:
|
||
|
||
### 1. 立即回滚
|
||
|
||
```bash
|
||
# SSH到服务器
|
||
ssh root@45.249.208.118
|
||
cd /root/deploy
|
||
|
||
# 停止当前版本
|
||
docker-compose stop app
|
||
|
||
# 恢复数据库
|
||
docker exec flnxi-postgres pg_restore -U postgres -d flnxi_material -c /backup/backup_YYYYMMDD_HHMMSS.dump
|
||
|
||
# 拉取旧版本镜像(假设之前的tag是 previous-tag)
|
||
docker pull harbor.flnxi.com/flnxi/flnxi-material:previous-tag
|
||
docker tag harbor.flnxi.com/flnxi/flnxi-material:previous-tag flnxi-material:local-deploy
|
||
|
||
# 重启应用
|
||
docker-compose up -d app
|
||
```
|
||
|
||
### 2. 验证回滚
|
||
|
||
```bash
|
||
# 检查应用状态
|
||
curl http://45.249.208.118:4320/api/health
|
||
|
||
# 查看日志
|
||
docker logs flnxi-material --tail 50
|
||
|
||
# 验证功能
|
||
# 访问关键页面确认正常
|
||
```
|
||
|
||
### 3. 通知相关人员
|
||
|
||
- 通知技术团队回滚完成
|
||
- 通知产品团队暂停新功能使用
|
||
- 记录回滚原因和问题
|
||
|
||
## 常见问题
|
||
|
||
### Q1: 部署脚本执行失败
|
||
|
||
**症状**: `deploy-new-fixed.ps1` 执行出错
|
||
|
||
**排查步骤**:
|
||
1. 检查Docker Desktop是否运行
|
||
2. 检查网络连接
|
||
3. 查看错误信息
|
||
4. 使用 `-Debug` 参数重新运行
|
||
|
||
**解决方案**:
|
||
```powershell
|
||
# 启动Docker Desktop
|
||
# 然后重新运行
|
||
.\deploy-new-fixed.ps1 -Registry harbor -Debug
|
||
```
|
||
|
||
### Q2: Harbor推送失败
|
||
|
||
**症状**: 推送镜像到Harbor时失败
|
||
|
||
**排查步骤**:
|
||
1. 检查Harbor服务是否正常
|
||
2. 验证Harbor凭据
|
||
3. 检查网络连接
|
||
|
||
**解决方案**:
|
||
```powershell
|
||
# 手动登录测试
|
||
docker login harbor.flnxi.com -u admin -p Harbor12345
|
||
|
||
# 手动推送
|
||
docker tag flnxi-material:local-deploy harbor.flnxi.com/flnxi/flnxi-material:local-deploy
|
||
docker push harbor.flnxi.com/flnxi/flnxi-material:local-deploy
|
||
```
|
||
|
||
### Q3: SSH连接失败
|
||
|
||
**症状**: 无法SSH到服务器
|
||
|
||
**排查步骤**:
|
||
1. 检查SSH密钥路径
|
||
2. 验证服务器地址
|
||
3. 检查防火墙设置
|
||
|
||
**解决方案**:
|
||
```powershell
|
||
# 使用SSH密钥
|
||
.\deploy-new-fixed.ps1 `
|
||
-Registry harbor `
|
||
-KeyPath "C:\Users\YourUsername\.ssh\youyidian_prod_ed25519"
|
||
|
||
# 或手动SSH测试
|
||
ssh -i "C:\Users\YourUsername\.ssh\youyidian_prod_ed25519" root@45.249.208.118
|
||
```
|
||
|
||
### Q4: 数据迁移失败
|
||
|
||
**症状**: `migrate-template-data.ts` 执行失败
|
||
|
||
**排查步骤**:
|
||
1. 查看错误日志
|
||
2. 检查数据库连接
|
||
3. 验证数据完整性
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# 检查数据库连接
|
||
docker exec flnxi-material npx prisma db pull
|
||
|
||
# 查看详细错误
|
||
docker exec flnxi-material npm run migrate:template-data 2>&1 | tee migration.log
|
||
|
||
# 手动修复数据后重新运行
|
||
docker exec flnxi-material npm run migrate:template-data
|
||
```
|
||
|
||
### Q5: 应用启动失败
|
||
|
||
**症状**: 容器启动后立即退出
|
||
|
||
**排查步骤**:
|
||
1. 查看容器日志
|
||
2. 检查环境变量
|
||
3. 验证数据库连接
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# 查看详细日志
|
||
docker logs flnxi-material
|
||
|
||
# 检查环境变量
|
||
docker exec flnxi-material env | grep DATABASE_URL
|
||
|
||
# 重启容器
|
||
docker-compose restart app
|
||
```
|
||
|
||
## 部署检查清单
|
||
|
||
### 部署前
|
||
|
||
- [ ] 代码已提交到Git
|
||
- [ ] 所有测试通过(118个)
|
||
- [ ] 代码检查通过
|
||
- [ ] 已创建数据库备份
|
||
- [ ] 已通知相关人员
|
||
- [ ] 已准备回滚方案
|
||
|
||
### 部署中
|
||
|
||
- [ ] 部署脚本执行成功
|
||
- [ ] 镜像推送到Harbor成功
|
||
- [ ] 服务器拉取镜像成功
|
||
- [ ] 应用容器启动成功
|
||
- [ ] 数据库迁移成功
|
||
- [ ] 数据验证通过
|
||
|
||
### 部署后
|
||
|
||
- [ ] 健康检查通过
|
||
- [ ] 功能测试通过
|
||
- [ ] 性能指标正常
|
||
- [ ] 无错误日志
|
||
- [ ] 用户反馈正常
|
||
- [ ] 监控30分钟无异常
|
||
|
||
## 相关文档
|
||
|
||
- [快速部署指南](./quick-deployment-guide.md) - 简化的部署步骤
|
||
- [部署前检查清单](./pre-deployment-checklist.md) - 详细的检查清单
|
||
- [项目总结](../template-system-optimization-summary.md) - 完整的项目总结
|
||
- [API文档](../api/template-system-api.md) - API接口文档
|
||
- [用户手册](../user-guide/template-system-guide.md) - 用户使用指南
|
||
- [脚本说明](../../scripts/README.md) - 数据迁移脚本说明
|
||
|
||
## 联系方式
|
||
|
||
如有问题,请联系:
|
||
- **技术负责人**: [姓名] - [联系方式]
|
||
- **运维负责人**: [姓名] - [联系方式]
|
||
- **产品负责人**: [姓名] - [联系方式]
|