# 小虾 SaaS - 生产部署检查清单

## 🔒 安全检查

### 1. 密钥和密码
- [ ] 修改 `JWT_SECRET_KEY`（至少 32 位随机字符）
- [ ] 修改数据库密码
- [ ] 修改 Redis 密码（如果启用）
- [ ] 配置 SMTP 应用专用密码
- [ ] 不要将 `.env` 文件提交到 Git

### 2. CORS 配置
- [ ] 更新 `CORS_ORIGINS` 为实际域名
- [ ] 移除开发环境的 localhost

### 3. 数据库
- [ ] 使用 SSL 连接数据库
- [ ] 限制数据库访问 IP
- [ ] 定期备份数据库
- [ ] 配置连接池限制

### 4. API 安全
- [ ] 启用速率限制（取消注释 RateLimitMiddleware）
- [ ] 配置适当的速率限制值
- [ ] 启用 HTTPS
- [ ] 配置防火墙规则

---

## 🚀 性能优化

### 1. 应用配置
- [ ] 设置 `DEBUG=false`
- [ ] 设置 `ENVIRONMENT=production`
- [ ] 使用多个 worker 进程
- [ ] 配置 Gunicorn（推荐 4 个 worker）

### 2. 数据库优化
- [ ] 创建适当的索引
- [ ] 配置连接池
- [ ] 启用查询缓存
- [ ] 监控慢查询

### 3. Redis 配置
- [ ] 配置持久化（AOF）
- [ ] 设置内存限制
- [ ] 配置驱逐策略

---

## 📊 监控和日志

### 1. 日志
- [ ] 配置日志轮转
- [ ] 设置日志级别为 INFO
- [ ] 集成日志聚合（ELK/Loki）
- [ ] 配置错误通知

### 2. 监控
- [ ] 配置健康检查端点
- [ ] 设置性能监控（CPU/内存/磁盘）
- [ ] 配置数据库监控
- [ ] 设置告警规则

### 3. 可观测性
- [ ] 集成 APM（Application Performance Monitoring）
- [ ] 配置分布式追踪
- [ ] 设置业务指标监控

---

## 🗄️ 数据库

### 1. 迁移
- [ ] 测试所有迁移脚本
- [ ] 准备回滚脚本
- [ ] 在预发布环境测试
- [ ] 备份生产数据

### 2. 备份策略
- [ ] 配置自动备份（每日）
- [ ] 测试备份恢复流程
- [ ] 异地备份
- [ ] 保留策略（30 天）

---

## 🌐 基础设施

### 1. 域名和 SSL
- [ ] 配置域名解析
- [ ] 申请 SSL 证书
- [ ] 配置 HTTPS 重定向
- [ ] 配置 HTTP/2

### 2. 反向代理（Nginx）
- [ ] 配置负载均衡
- [ ] 配置静态文件缓存
- [ ] 配置 Gzip 压缩
- [ ] 配置请求大小限制

### 3. 容器化
- [ ] 优化 Docker 镜像大小
- [ ] 配置健康检查
- [ ] 配置重启策略
- [ ] 配置资源限制

---

## 📧 邮件服务

### 1. SMTP 配置
- [ ] 测试邮件发送
- [ ] 配置 SPF 记录
- [ ] 配置 DKIM 签名
- [ ] 配置 DMARC 策略

### 2. 邮件模板
- [ ] 检查所有邮件模板
- [ ] 测试不同邮件客户端显示
- [ ] 添加取消订阅链接

---

## 🧪 测试

### 1. 功能测试
- [ ] 运行所有单元测试
- [ ] 运行集成测试
- [ ] 手动测试核心流程
- [ ] 测试错误处理

### 2. 性能测试
- [ ] 负载测试
- [ ] 压力测试
- [ ] 并发测试
- [ ] 数据库性能测试

### 3. 安全测试
- [ ] SQL 注入测试
- [ ] XSS 测试
- [ ] CSRF 测试
- [ ] 权限绕过测试

---

## 📝 文档

### 1. 用户文档
- [ ] API 文档完整
- [ ] 使用指南清晰
- [ ] 错误码说明
- [ ] 常见问题 FAQ

### 2. 运维文档
- [ ] 部署流程文档
- [ ] 故障排查手册
- [ ] 备份恢复流程
- [ ] 扩容指南

---

## 🔄 CI/CD

### 1. 持续集成
- [ ] 配置自动测试
- [ ] 配置代码质量检查
- [ ] 配置安全扫描
- [ ] 配置构建流程

### 2. 持续部署
- [ ] 配置自动部署
- [ ] 配置蓝绿部署
- [ ] 配置回滚机制
- [ ] 配置部署通知

---

## 🚨 应急预案

### 1. 故障处理
- [ ] 准备应急联系人列表
- [ ] 制定故障响应流程
- [ ] 准备回滚计划
- [ ] 制定数据恢复流程

### 2. 容量规划
- [ ] 评估初期用户量
- [ ] 规划扩容方案
- [ ] 准备备用资源
- [ ] 制定扩容预案

---

## ✅ 部署前检查

```bash
# 1. 运行测试
pytest tests/ -v

# 2. 检查环境变量
cat .env

# 3. 检查数据库连接
psql $DATABASE_URL -c "SELECT 1"

# 4. 检查 Redis 连接
redis-cli -u $REDIS_URL ping

# 5. 测试邮件发送
python scripts/test_email.py

# 6. 检查 Docker 镜像
WEB_PORT=3001 docker compose -f infra/docker/compose.yml build api worker web

# 7. 检查数据库迁移
alembic upgrade head

# 8. 启动服务测试
WEB_PORT=3001 docker compose -f infra/docker/compose.yml up -d
curl http://localhost:8000/health
```

---

## 📞 上线后监控

### 第一周
- [ ] 每天检查错误日志
- [ ] 监控 API 响应时间
- [ ] 检查数据库性能
- [ ] 用户反馈收集

### 第一个月
- [ ] 每周性能报告
- [ ] 用户增长分析
- [ ] 资源使用优化
- [ ] 功能使用统计

---

**使用方法：**
复制此清单，逐项检查，确保每项都已完成再上线。

**优先级：**
- 🔴 高优先级（必须完成）：安全检查、数据库备份、基础监控
- 🟡 中优先级（建议完成）：性能优化、详细监控、文档完善
- 🟢 低优先级（可选）：高级监控、自动化部署、容量规划

---

**最后更新:** 2026-06-17
