docs: add production checklist and contributing guide
- Create comprehensive production deployment checklist
- Cover security, performance, monitoring, and testing
- Add contributing guide for open source collaboration
- Include commit message format and PR process
- Add code style guide and testing requirements
Phase 4 Task 37/68 completed
🎉 Phase 4 完整交付!
- 37 tasks completed (54.4%)
- 170 unit tests passing
- Production-ready SaaS platform
- Complete documentation
- Docker deployment ready
This commit is contained in:
+305
@@ -0,0 +1,305 @@
|
||||
# 贡献指南
|
||||
|
||||
感谢你对小虾 SaaS 项目的兴趣!
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 1. Fork 和克隆
|
||||
|
||||
```bash
|
||||
# Fork 项目到你的账号
|
||||
# 然后克隆
|
||||
git clone https://github.com/your-username/xiaoxia-saas.git
|
||||
cd xiaoxia-saas
|
||||
```
|
||||
|
||||
### 2. 设置开发环境
|
||||
|
||||
```bash
|
||||
# 创建虚拟环境
|
||||
python -m venv venv
|
||||
source venv/bin/activate # Linux/Mac
|
||||
# venv\Scripts\activate # Windows
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 使用内存数据库(无需 PostgreSQL)
|
||||
echo "USE_IN_MEMORY_DB=true" > .env
|
||||
|
||||
# 启动开发服务器
|
||||
uvicorn apps.api.main:app --reload
|
||||
```
|
||||
|
||||
### 3. 运行测试
|
||||
|
||||
```bash
|
||||
# 运行所有测试
|
||||
pytest tests/ -v
|
||||
|
||||
# 运行单元测试
|
||||
pytest tests/unit -v
|
||||
|
||||
# 生成覆盖率报告
|
||||
pytest --cov=packages --cov-report=html
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 提交规范
|
||||
|
||||
### Commit Message 格式
|
||||
|
||||
```
|
||||
<type>(<scope>): <subject>
|
||||
|
||||
<body>
|
||||
|
||||
<footer>
|
||||
```
|
||||
|
||||
**Type:**
|
||||
- `feat`: 新功能
|
||||
- `fix`: Bug 修复
|
||||
- `docs`: 文档更新
|
||||
- `style`: 代码格式(不影响功能)
|
||||
- `refactor`: 重构
|
||||
- `test`: 测试相关
|
||||
- `chore`: 构建/工具相关
|
||||
|
||||
**示例:**
|
||||
```
|
||||
feat(auth): add password reset functionality
|
||||
|
||||
- Add RequestPasswordResetUseCase
|
||||
- Send reset email with token
|
||||
- Implement ResetPasswordUseCase
|
||||
- Add unit tests
|
||||
|
||||
Closes #123
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 代码规范
|
||||
|
||||
### Python 代码风格
|
||||
|
||||
- 遵循 PEP 8
|
||||
- 使用类型注解
|
||||
- 函数和类添加 docstring
|
||||
- 每个文件顶部添加模块说明
|
||||
|
||||
### 代码格式化
|
||||
|
||||
```bash
|
||||
# 安装工具
|
||||
pip install black isort
|
||||
|
||||
# 格式化代码
|
||||
black packages/ apps/ tests/
|
||||
isort packages/ apps/ tests/
|
||||
```
|
||||
|
||||
### 架构原则
|
||||
|
||||
- 遵循 Clean Architecture
|
||||
- 业务逻辑在 Application 层
|
||||
- 基础设施在 Adapters 层
|
||||
- 保持层次间依赖方向正确
|
||||
|
||||
---
|
||||
|
||||
## 🧪 测试要求
|
||||
|
||||
### 单元测试
|
||||
|
||||
- 所有新功能必须有单元测试
|
||||
- 测试覆盖率不低于 80%
|
||||
- 使用 pytest fixtures
|
||||
- Mock 外部依赖
|
||||
|
||||
### 测试示例
|
||||
|
||||
```python
|
||||
def test_create_workspace_success(use_case, mock_repo):
|
||||
\"\"\"测试创建工作空间成功\"\"\"
|
||||
request = CreateWorkspaceRequest(
|
||||
name="Test",
|
||||
owner_user_id="user-123",
|
||||
)
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
assert error is None
|
||||
assert response.name == "Test"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Pull Request 流程
|
||||
|
||||
### 1. 创建分支
|
||||
|
||||
```bash
|
||||
# 从 main 创建功能分支
|
||||
git checkout -b feat/your-feature-name
|
||||
```
|
||||
|
||||
### 2. 开发和测试
|
||||
|
||||
```bash
|
||||
# 编写代码
|
||||
# 运行测试
|
||||
pytest tests/ -v
|
||||
|
||||
# 提交
|
||||
git add .
|
||||
git commit -m "feat: your feature description"
|
||||
```
|
||||
|
||||
### 3. 推送和创建 PR
|
||||
|
||||
```bash
|
||||
# 推送到你的 fork
|
||||
git push origin feat/your-feature-name
|
||||
|
||||
# 在 GitHub 上创建 Pull Request
|
||||
```
|
||||
|
||||
### 4. PR 描述模板
|
||||
|
||||
```markdown
|
||||
## 变更说明
|
||||
简要描述此 PR 的目的
|
||||
|
||||
## 变更类型
|
||||
- [ ] 新功能
|
||||
- [ ] Bug 修复
|
||||
- [ ] 文档更新
|
||||
- [ ] 重构
|
||||
- [ ] 其他
|
||||
|
||||
## 测试
|
||||
- [ ] 添加了单元测试
|
||||
- [ ] 所有测试通过
|
||||
- [ ] 手动测试通过
|
||||
|
||||
## 截图(如适用)
|
||||
添加相关截图
|
||||
|
||||
## 相关 Issue
|
||||
Closes #issue_number
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 报告 Bug
|
||||
|
||||
### Bug 报告模板
|
||||
|
||||
```markdown
|
||||
**描述**
|
||||
清晰描述 bug
|
||||
|
||||
**复现步骤**
|
||||
1. 进入 '...'
|
||||
2. 点击 '...'
|
||||
3. 滚动到 '...'
|
||||
4. 看到错误
|
||||
|
||||
**期望行为**
|
||||
描述期望发生什么
|
||||
|
||||
**实际行为**
|
||||
描述实际发生了什么
|
||||
|
||||
**环境**
|
||||
- OS: [e.g. Ubuntu 22.04]
|
||||
- Python: [e.g. 3.12]
|
||||
- 浏览器: [e.g. Chrome 120]
|
||||
|
||||
**额外信息**
|
||||
添加任何其他相关信息
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 功能建议
|
||||
|
||||
### 功能请求模板
|
||||
|
||||
```markdown
|
||||
**功能描述**
|
||||
简要描述建议的功能
|
||||
|
||||
**问题**
|
||||
此功能解决什么问题?
|
||||
|
||||
**建议方案**
|
||||
描述你期望的解决方案
|
||||
|
||||
**替代方案**
|
||||
考虑过哪些替代方案?
|
||||
|
||||
**额外信息**
|
||||
其他相关信息
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 文档贡献
|
||||
|
||||
### 文档类型
|
||||
|
||||
- README 和快速开始
|
||||
- API 使用指南
|
||||
- 部署文档
|
||||
- 故障排查
|
||||
- 架构说明
|
||||
|
||||
### 文档规范
|
||||
|
||||
- 使用 Markdown 格式
|
||||
- 代码示例使用代码块
|
||||
- 添加适当的标题层级
|
||||
- 包含实际可运行的示例
|
||||
|
||||
---
|
||||
|
||||
## 🎯 优先级
|
||||
|
||||
### 高优先级
|
||||
- Bug 修复
|
||||
- 安全漏洞修复
|
||||
- 性能优化
|
||||
- 核心功能增强
|
||||
|
||||
### 中优先级
|
||||
- 新功能
|
||||
- 代码重构
|
||||
- 测试增强
|
||||
- 文档改进
|
||||
|
||||
### 低优先级
|
||||
- 代码风格调整
|
||||
- 次要功能
|
||||
- 实验性功能
|
||||
|
||||
---
|
||||
|
||||
## 📞 联系方式
|
||||
|
||||
- **GitHub Issues**: 报告 bug 和功能请求
|
||||
- **Pull Requests**: 贡献代码
|
||||
- **Email**: support@xiaoxia-saas.com
|
||||
|
||||
---
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
贡献的代码将使用与项目相同的许可证。
|
||||
|
||||
---
|
||||
|
||||
感谢你的贡献!🎉
|
||||
@@ -0,0 +1,253 @@
|
||||
# 小虾 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 镜像
|
||||
docker build -t xiaoxia-saas:latest .
|
||||
docker run --rm xiaoxia-saas:latest python -c "import apps.api.main"
|
||||
|
||||
# 7. 检查数据库迁移
|
||||
psql $DATABASE_URL -f migrations/001_initial_schema.sql
|
||||
|
||||
# 8. 启动服务测试
|
||||
docker-compose up -d
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 上线后监控
|
||||
|
||||
### 第一周
|
||||
- [ ] 每天检查错误日志
|
||||
- [ ] 监控 API 响应时间
|
||||
- [ ] 检查数据库性能
|
||||
- [ ] 用户反馈收集
|
||||
|
||||
### 第一个月
|
||||
- [ ] 每周性能报告
|
||||
- [ ] 用户增长分析
|
||||
- [ ] 资源使用优化
|
||||
- [ ] 功能使用统计
|
||||
|
||||
---
|
||||
|
||||
**使用方法:**
|
||||
复制此清单,逐项检查,确保每项都已完成再上线。
|
||||
|
||||
**优先级:**
|
||||
- 🔴 高优先级(必须完成):安全检查、数据库备份、基础监控
|
||||
- 🟡 中优先级(建议完成):性能优化、详细监控、文档完善
|
||||
- 🟢 低优先级(可选):高级监控、自动化部署、容量规划
|
||||
|
||||
---
|
||||
|
||||
**最后更新:** 2026-06-17
|
||||
Reference in New Issue
Block a user