# 贡献指南 感谢您对 HtmlToPdf Service 的关注!我们欢迎任何形式的贡献。 ## 如何贡献 ### 报告 Bug 如果你发现了 Bug,请通过 [GitHub Issues](https://github.com/your-username/html-to-pdf/issues) 报告。创建 Issue 时请包含: - 问题的详细描述 - 复现步骤 - 预期行为 vs 实际行为 - 运行环境(操作系统、.NET 版本、Docker 版本等) - 相关的日志或错误信息 ### 功能建议 有新功能想法?请创建一个 Feature Request Issue,描述: - 功能的详细说明 - 使用场景 - 可能的实现方案(可选) ### 提交代码 1. **Fork 仓库** 2. **克隆你的 Fork** ```bash git clone https://github.com/your-username/html-to-pdf.git cd html-to-pdf ``` 3. **创建功能分支** ```bash git checkout -b feature/your-feature-name ``` 4. **进行开发** - 遵循现有的代码风格 - 添加必要的测试 - 确保所有测试通过 5. **提交更改** ```bash git add . git commit -m "feat: 添加某某功能" ``` 6. **推送到你的 Fork** ```bash git push origin feature/your-feature-name ``` 7. **创建 Pull Request** - 描述你的更改 - 关联相关的 Issue(如果有) ## 开发环境设置 ### 前置要求 - .NET 9.0 SDK - Docker & Docker Compose - Node.js 18+(用于管理后台开发) - Redis(或使用 Docker) ### 本地开发 ```bash # 启动 Redis docker run -d --name redis -p 6379:6379 redis:7-alpine # 进入源码目录 cd src # 还原依赖 dotnet restore # 运行测试 dotnet test # 启动服务 dotnet run --project HtmlToPdfService.Api ``` ### 管理后台开发 ```bash cd src/HtmlToPdfService.Admin npm install npm run dev ``` ## 代码规范 ### C# 代码规范 - 使用 4 空格缩进 - 类名使用 PascalCase - 私有字段使用 `_camelCase` 前缀 - 方法名使用 PascalCase - 异步方法以 `Async` 结尾 - 添加 XML 文档注释 ### 提交信息规范 使用 [Conventional Commits](https://www.conventionalcommits.org/) 格式: ``` (): [optional body] [optional footer] ``` **Type 类型:** - `feat`: 新功能 - `fix`: Bug 修复 - `docs`: 文档更新 - `style`: 代码格式(不影响功能) - `refactor`: 重构 - `test`: 测试相关 - `chore`: 构建/工具相关 **示例:** ``` feat(api): 添加批量任务提交接口 fix(pool): 修复浏览器池内存泄漏问题 docs: 更新 API 文档 ``` ## 测试 ### 运行测试 ```bash cd src dotnet test ``` ### 测试覆盖率 ```bash dotnet test --collect:"XPlat Code Coverage" ``` ## Pull Request 检查清单 提交 PR 前请确保: - [ ] 代码可以正常编译 - [ ] 所有测试通过 - [ ] 添加了新功能的测试(如适用) - [ ] 更新了相关文档 - [ ] 提交信息符合规范 - [ ] 代码已格式化 ## 行为准则 参与本项目,请遵守以下准则: - 尊重所有贡献者 - 保持友善和专业的交流 - 接受建设性的批评 - 关注项目和社区的最佳利益 ## 问题? 如有任何问题,欢迎通过以下方式联系: - [GitHub Discussions](https://github.com/your-username/html-to-pdf/discussions) - [GitHub Issues](https://github.com/your-username/html-to-pdf/issues) 再次感谢您的贡献!🎉