flnxi-Wu/docs/deployment/pre-deployment-checklist.md
WuYongJie 63ec6b7dfb fix: 修复排行榜按钮消失、tag排序和输入框浅色模式问题
1. 排行榜悬浮窗关闭后小按钮消失问题
   - 修复面板居中模式关闭时按钮位置错误
   - 保存并恢复按钮的居中状态

2. 首页tag按钮按素材数量排序
   - 添加按素材数量降序排序逻辑

3. 上传弹窗输入框浅色模式文字不可见
   - 添加 text-slate-900 确保浅色模式下文字可见
   - 添加 placeholder 样式确保占位符正确显示
2025-12-14 21:41:29 +08:00

346 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 模板系统优化 - 部署前检查清单
## 概述
本文档提供了部署模板系统优化到测试和生产环境的完整检查清单。
## 部署前准备
### 1. 代码检查
- [ ] 所有代码已提交到Git仓库
- [ ] 所有单元测试通过(118个测试用例)
- [ ] 代码已通过TypeScript类型检查
- [ ] 代码已通过ESLint检查
- [ ] 核心功能代码覆盖率达标(>80%)
```bash
# 运行检查
npm run check
npm test
```
### 2. 数据库准备
- [ ] 已创建数据库备份
- [ ] 已检查数据库迁移文件
- [ ] 已在本地测试数据库迁移
- [ ] 已准备回滚脚本
```bash
# 检查迁移文件
ls prisma/migrations
# 验证schema
npm run prisma:validate
```
### 3. 数据迁移准备
- [ ] 已准备数据迁移脚本(migrate-template-data.ts)
- [ ] 已准备数据验证脚本(verify-template-data.ts)
- [ ] 已在测试数据上验证迁移脚本
- [ ] 已准备迁移失败的回滚方案
```bash
# 测试迁移脚本(在测试环境)
npm run migrate:template-data
# 验证数据完整性
npm run verify:template-data
```
### 4. 文档检查
- [ ] API文档已更新(docs/api/template-system-api.md)
- [ ] 用户手册已更新(docs/user-guide/template-system-guide.md)
- [ ] 部署文档已准备
- [ ] 回滚文档已准备
## 测试环境部署
### 步骤 1: 备份数据库
```bash
# PostgreSQL备份示例
pg_dump -h <host> -U <user> -d <database> -F c -b -v -f backup_$(date +%Y%m%d_%H%M%S).dump
# 或使用Prisma Studio导出关键数据
npm run prisma:studio
```
### 步骤 2: 运行数据库迁移
```bash
# 生成Prisma客户端
npm run prisma:generate
# 应用数据库迁移
npx prisma migrate deploy
# 验证迁移结果
npm run verify:template-data
```
### 步骤 3: 运行数据迁移脚本
```bash
# 迁移旧数据
npm run migrate:template-data
# 再次验证数据完整性
npm run verify:template-data
```
### 步骤 4: 部署新代码
```bash
# 构建应用
npm run build
# 启动应用
npm start
# 或使用Docker
docker-compose up -d
```
### 步骤 5: 执行冒烟测试
#### 5.1 模板管理测试
- [ ] 访问模板管理页面(/admin/templates)
- [ ] 创建新模板
- [ ] 编辑模板字段
- [ ] 测试字段拖拽排序
- [ ] 测试select字段选项管理
- [ ] 删除测试模板
#### 5.2 素材上传测试
- [ ] 访问素材上传页面
- [ ] 选择模板
- [ ] 填写自定义字段
- [ ] 上传素材文件
- [ ] 验证素材详情页显示
#### 5.3 字段池同步测试
- [ ] 创建带有select字段的模板
- [ ] 验证字段池自动同步
- [ ] 访问分类管理页面
- [ ] 验证字段和选项显示正确
#### 5.4 首页筛选测试
- [ ] 访问首页
- [ ] 验证Tag按钮显示
- [ ] 测试单选筛选
- [ ] 测试多选筛选
- [ ] 验证筛选结果正确
#### 5.5 性能测试
- [ ] 模板列表加载时间 < 500ms
- [ ] 素材上传验证时间 < 100ms
- [ ] 字段池同步时间 < 1s
- [ ] 首页Tag按钮响应时间 < 100ms
### 步骤 6: 监控和日志
```bash
# 查看应用日志
docker logs -f <container_name>
# 或使用PM2
pm2 logs
# 监控数据库性能
# 检查慢查询日志
```
## 生产环境部署
### 部署前最终检查
- [ ] 测试环境已稳定运行至少24小时
- [ ] 所有冒烟测试通过
- [ ] 没有发现严重bug
- [ ] 性能指标达标
- [ ] 已通知相关人员部署计划
- [ ] 已准备回滚方案
### 部署窗口
- **推荐时间**: 非业务高峰期(如凌晨2-6点)
- **预计时长**: 30-60分钟
- **回滚时间**: 15分钟
### 部署步骤
与测试环境部署步骤相同,但需要额外注意:
1. **数据库备份**: 必须创建完整备份
2. **灰度发布**: 如果可能,先部署到部分服务器
3. **监控**: 密切监控系统指标和错误日志
4. **用户通知**: 如需停机,提前通知用户
### 部署后验证
- [ ] 所有冒烟测试通过
- [ ] 数据完整性验证通过
- [ ] 性能指标正常
- [ ] 错误日志无异常
- [ ] 用户反馈正常
## 回滚方案
### 何时回滚
- 发现严重bug影响核心功能
- 性能严重下降
- 数据完整性问题
- 用户无法正常使用
### 回滚步骤
1. **停止应用**
```bash
docker-compose down
# 或
pm2 stop all
```
2. **恢复数据库**
```bash
# PostgreSQL恢复示例
pg_restore -h <host> -U <user> -d <database> -v backup_YYYYMMDD_HHMMSS.dump
```
3. **部署旧版本代码**
```bash
git checkout <previous_version>
npm run build
npm start
```
4. **验证回滚**
- 检查应用是否正常运行
- 验证数据完整性
- 执行基本功能测试
## 监控指标
### 应用指标
- 响应时间
- 错误率
- 请求量
- CPU使用率
- 内存使用率
### 数据库指标
- 查询响应时间
- 连接数
- 慢查询数量
- 锁等待时间
### 业务指标
- 模板创建数量
- 素材上传数量
- 字段池同步次数
- 用户活跃度
## 常见问题处理
### 问题 1: 数据迁移失败
**症状**: migrate-template-data.ts 执行失败
**解决方案**:
1. 检查错误日志
2. 验证数据库连接
3. 检查数据完整性
4. 手动修复问题数据
5. 重新运行迁移脚本
### 问题 2: 字段池同步失败
**症状**: 分类管理页面显示不正确
**解决方案**:
1. 检查字段池同步日志
2. 手动触发同步:调用 `/api/admin/sync-field-pool`
3. 验证字段定义和选项
### 问题 3: 性能下降
**症状**: 页面加载缓慢
**解决方案**:
1. 检查数据库索引是否正确创建
2. 检查慢查询日志
3. 优化查询语句
4. 增加缓存
### 问题 4: 版本冲突
**症状**: 模板更新时出现409错误
**解决方案**:
1. 这是正常的并发控制机制
2. 提示用户刷新页面重新编辑
3. 检查是否有多人同时编辑
## 联系人
- **技术负责人**: [姓名] - [联系方式]
- **运维负责人**: [姓名] - [联系方式]
- **产品负责人**: [姓名] - [联系方式]
## 附录
### A. 数据库迁移文件列表
```
prisma/migrations/
├── 20251201133500_add_material_kind_to_templates/
├── 20251202000000_add_material_kind_to_materials/
├── 20251202091500_add_material_ownership_fields/
└── 20251213073100_add_template_system_indexes/
```
### B. 关键API端点
- `GET /api/admin/upload-templates` - 获取模板列表
- `POST /api/admin/upload-templates` - 创建模板
- `GET /api/admin/upload-templates/[id]` - 获取模板详情
- `PUT /api/admin/upload-templates/[id]` - 更新模板
- `DELETE /api/admin/upload-templates/[id]` - 删除模板
- `POST /api/admin/sync-field-pool` - 同步字段池
### C. 环境变量检查
```bash
# 必需的环境变量
DATABASE_URL=postgresql://...
NEXTAUTH_SECRET=...
NEXTAUTH_URL=...
S3_ENDPOINT=...
S3_ACCESS_KEY_ID=...
S3_SECRET_ACCESS_KEY=...
S3_BUCKET_NAME=...
```
### D. 性能基准
| 操作 | 目标时间 | 可接受时间 |
|------|---------|-----------|
| 模板列表加载 | < 300ms | < 500ms |
| 模板详情加载 | < 200ms | < 400ms |
| 素材上传验证 | < 50ms | < 100ms |
| 字段池同步 | < 500ms | < 1s |
| 首页Tag响应 | < 50ms | < 100ms |