# 贡献指南

感谢你对 RandBG API 项目的关注！我们欢迎任何形式的贡献，包括但不限于提交 Issue、修复 Bug、改进文档、新增功能等。

## 如何贡献

### 提交 Issue

如果你发现了 Bug 或有新功能建议，请通过 [GitHub Issues](https://github.com/shumengya/randbg-api/issues) 提交。

提交 Issue 时，请尽可能包含以下信息：

- **问题描述**：清晰描述你遇到的问题或建议
- **复现步骤**：如果是 Bug，请提供详细的复现步骤
- **环境信息**：操作系统、Node.js 版本、Python 版本等
- **预期结果**与**实际结果**
- **截图或日志**（如有）

### 提交 Pull Request

1. **Fork 本仓库** 并克隆到本地
2. **创建分支**：从 `main` 分支创建一个新的功能分支
   ```bash
   git checkout -b feature/your-feature-name
   ```
3. **进行修改**：确保代码风格与现有项目保持一致
4. **测试**：在本地运行 `npm run dev` 确保修改不会破坏现有功能
5. **提交**：使用清晰的提交信息
   ```bash
   git commit -m "feat: 添加 xxx 功能"
   ```
6. **推送并创建 PR**：推送到你的 Fork 仓库，然后向本仓库提交 Pull Request

## 代码规范

- **JavaScript**：使用 ES Module，保持简洁，添加必要的 JSDoc 注释
- **Python**：遵循 PEP 8 规范，使用类型注解（如有）
- **Git 提交信息**：参考 [Conventional Commits](https://www.conventionalcommits.org/)
  - `feat:` 新功能
  - `fix:` 修复 Bug
  - `docs:` 文档更新
  - `refactor:` 代码重构
  - `chore:` 构建/工具链更新

## 项目结构说明

- `src/`：Worker 运行时代码（API 逻辑）
- `public/`：静态资源（会被部署到 Cloudflare Assets）
  - `index.html`：演示页面
  - `manifest.json`：图片清单（由 `build.py` 自动生成）
  - `mobile-image/` / `desketop-image/`：构建后的 WebP 图片
- `mobile-image/` / `desketop-image/`（根目录）：**原始图片存放目录，不要提交到 Git**
- `build.py`：构建脚本，将原图转换为 WebP 并生成清单

## 注意事项

- **不要提交原始图片**：根目录下的 `mobile-image/` 和 `desketop-image/` 仅用于本地构建，已配置 `.gitignore` 忽略非编号文件。
- **不要提交敏感信息**：`wrangler.toml` 中不应包含 `account_id` 或 API Token。
- **保持 API 兼容性**：如果修改 API 接口，请确保向后兼容，或在文档中明确标注 Breaking Changes。

## 行为准则

- 尊重他人，保持友善和建设性的沟通
- 接受不同的观点和经验
- 关注对社区最有利的事情

再次感谢你的贡献！
