贡献指南
欢迎为 Fire 项目贡献代码!请遵循以下流程和规范。
🚀 贡献流程
1. Fork 项目
# Fork 到你的 GitHub 账号
# Clone 到本地
git clone https://github.com/YOUR_USERNAME/fire.git
cd fire
# 添加上游仓库
git remote add upstream https://github.com/ORIGINAL_OWNER/fire.git
2. 创建分支
# 同步上游代码
git fetch upstream
git checkout main
git merge upstream/main
# 创建功能分支
git checkout -b feature/your-feature
# 或修复分支
git checkout -b fix/bug-description
3. 开发和测试
# 开发前先运行测试确保环境正常
./scripts/test.sh all
# 开发完成后运行测试
./scripts/test.sh unit
./scripts/test.sh integration
# 代码格式化
./scripts/lint-fix.sh
4. 提交代码
# 提交规范
git add .
git commit -m "type: description
- Detail 1
- Detail 2"
提交类型:
feat: 新功能fix: 修复 bugdocs: 文档更新style: 代码格式refactor: 重构test: 测试相关chore: 构建/工具
5. 创建 Pull Request
- 推送分支:
git push origin feature/your-feature - 访问 GitHub 创建 PR
- 填写 PR 模板
- 等待代码审查
📝 PR 模板
## 变更说明
简要描述此 PR 的目的
## 变更类型
- [ ] 新功能
- [ ] Bug 修复
- [ ] 文档更新
- [ ] 重构
- [ ] 其他
## 变更详情
- 具体改动点 1
- 具体改动点 2
## 测试
- [ ] 单元测试通过
- [ ] 集成测试通过
- [ ] 手动测试通过
## 文档
- [ ] 更新了相关文档
- [ ] 更新了 API 文档(如有变更)
## Breaking Changes
- [ ] 此 PR 包含破坏性变更
✅ 代码审查标准
必须满足
- ✅ 所有测试通过
- ✅ 代码符合规范
- ✅ 文档已更新
- ✅ 无安全问题
质量要求
- 代码清晰易懂
- 有适当的注释
- 无重复代码
- 错误处理完善
测试覆盖
- 整体覆盖率 ≥ 85%
- 策略模块 ≥ 90%
- 核心交易引擎 ≥ 85%
- API 端点 ≥ 70%
- 集成测试覆盖所有关键路径
📋 文档维护标准
文档更新核心原则
- 真实性原则: 文档必须反映当前代码的实际状态,不描述未实现的功能
- 直接更新原则: 直接修改文档内容,而非打补丁方式
- 职责明确原则: 每个文档有明确的职责范围,不越界
- 简洁务实原则: 不使用营销语言,不空谈特性和优势
- 链接有效原则: 所有文档内链接必须有效且可访问
文档职责范围
| 文档 | 职责 | 内容要求 |
|---|---|---|
| docs/api/ | API接口文档 | 自动生成,无需手动更新 |
| docs/architecture/ | 系统架构设计 | 包含具体的技术架构、模块设计、数据流、技术选型等 |
| docs/domain/ | 领域模型定义 | 数据模型、业务实体、领域概念、业务规则 |
| docs/strategies/ | 策略文档 | 策略算法说明、参数定义、使用示例、性能指标 |
| docs/cli.md | 命令行使用指南 | CLI命令、参数、示例、常见问题 |
| docs/development.md | 开发环境配置 | 环境搭建、依赖安装、配置说明、调试方法 |
| docs/index.md | 项目总览 | 项目简介、快速开始、目录结构、链接索引 |
| docs/contributing.md | 贡献指南 | 贡献流程、代码规范、提交规范、文档标准 |
何时必须更新文档
架构文档 (architecture/)
- ✅ 新增或删除模块
- ✅ 技术栈变更
- ✅ 系统交互方式改变
- ✅ 数据流程变更
领域文档 (domain/)
- ✅ 数据模型变更
- ✅ 业务规则调整
- ✅ 新增或删除实体
- ✅ 关系变更
策略文档 (strategies/)
- ✅ 新增策略
- ✅ 策略参数变更
- ✅ 算法逻辑调整
- ✅ 性能优化后的新指标
开发文档 (development.md)
- ✅ 环境依赖变更
- ✅ 配置项增删
- ✅ 开发工具变更
- ✅ 构建流程调整
CLI文档 (cli.md)
- ✅ 命令增删
- ✅ 参数变更
- ✅ 输出格式改变
- ✅ 新增使用场景
文档编写规范
1. 格式规范
# 一级标题(文档标题)
## 二级标题(主要章节)
### 三级标题(子章节)
**重要内容使用加粗**
`行内代码使用反引号`
```python
# 代码块必须指定语言
def example():
"""代码示例必须可运行"""
pass
```
| 列标题 | 说明 |
|--------|------|
| 数据 | 描述 |
2. 内容规范
架构文档示例
## 模块名称
### 职责
- 具体职责描述(非空谈)
### 接口
- 提供的接口列表
- 参数和返回值说明
### 依赖
- 依赖的其他模块
- 外部库依赖
### 实现
- 核心算法或流程(伪代码或流程图)
策略文档示例
## 策略名称
### 算法原理
- 数学公式或逻辑说明
### 参数定义
| 参数 | 类型 | 默认值 | 说明 |
|-----|------|--------|------|
| period | int | 14 | 计算周期 |
### 使用示例
```python
strategy = RSIStrategy(period=14)
```
### 性能指标
- 计算复杂度: O(n)
- 内存占用: O(1)
- 历史回测结果(如有)
3. 禁止事项
❌ 不要在架构文档中:
- 使用”高性能”、”可扩展”等空泛形容词
- 描述未实现的功能
- 包含营销性质的内容
❌ 不要在策略文档中:
- 承诺收益率
- 使用绝对化描述
- 省略风险说明
❌ 不要在任何文档中:
- 使用失效的链接
- 复制粘贴过时内容
- 混淆不同文档的职责
文档审查清单
提交前检查:
- 文档反映当前代码状态
- 所有链接都有效
- 代码示例可运行
- 没有营销语言
- 没有未实现功能的描述
- 符合各文档的职责范围
- 表格格式正确
- Markdown语法正确
🐛 报告问题
Bug 报告
创建 Issue 并提供:
- 问题描述
- 复现步骤
- 期望行为
- 实际行为
- 环境信息(OS、Python版本等)
- 相关日志
功能请求
创建 Issue 并说明:
- 功能描述
- 使用场景
- 预期收益
- 可能的实现方案
💬 沟通方式
- Issue: 技术讨论和问题报告
- PR: 代码审查和技术细节
- Email: 私密或紧急事项
🎯 开发原则
- 代码质量优于速度: 宁可慢一点,也要保证质量
- 测试驱动: 先写测试,再写代码
- 文档同步: 代码变更必须同步文档
- 向后兼容: 尽量避免破坏性变更
- 安全第一: 不引入安全漏洞
🚀 CI/CD 与持续集成
GitHub Actions 配置
Fire 项目使用 GitHub Actions 进行自动化测试、构建和文档部署。
初始配置步骤
1. 配置 GitHub Pages
- 打开 GitHub 仓库 → Settings → Pages
- Source 选择:GitHub Actions
- 自动保存
2. 配置工作流权限
- Settings → Actions → General
- 滚动到 Workflow permissions
- 选择:Read and write permissions
- 勾选:Allow GitHub Actions to create and approve pull requests
- 点击 Save
3. 触发构建 推送代码到 main 或 develop 分支即可自动触发,或手动触发:
- Actions 标签页
- 选择 CI/CD Pipeline
- 点击 Run workflow
- 选择分支并运行
4. 访问文档
等待构建完成(3-5 分钟),然后访问:https://用户名.github.io/仓库名/
工作流说明
CI/CD 工作流包含 5 个任务:
- Backend (2-3分钟) - 后端测试和覆盖率
- Frontend (1-2分钟) - 前端检查和构建
- Generate Docs (1分钟) - 生成文档和更新徽章
- Deploy Docs (2-3分钟) - 部署到 GitHub Pages
- Update Badges (30秒) - 提交徽章更新
总计: 约 5-10 分钟
验证清单
构建完成后验证:
- Actions 显示工作流运行成功
- README 的 CI/CD 徽章显示”passing”
- Coverage 徽章显示覆盖率百分比
- 文档站点可访问
- 语言切换器正常工作
- Mermaid 图表正确显示
常见问题
Q: 工作流失败?
- 检查 Workflow permissions 配置
- 查看失败任务的详细日志
- 确保依赖文件正确
Q: Pages 部署失败?
- 确认 Source 设置为 GitHub Actions
- 检查工作流权限
- 查看 Deploy Docs 日志
Q: 如何跳过 CI?
git commit -m "docs: 更新文档 [skip ci]"
CI/CD 最佳实践
- 保持测试覆盖率 ≥80%
- 使用语义化提交信息
feat: 添加新功能 fix: 修复问题 docs: 更新文档 - 本地先测试再推送
./scripts/test.sh unit ./scripts/lint-fix.sh