# 貢獻指南 感謝您對 ImageZoom 專案的關注!我們歡迎所有形式的貢獻。 ## 如何貢獻 ### 報告 Bug 如果您發現了 Bug,請: 1. 檢查 [Issues](https://github.com/your-username/imagezoom/issues) 是否已經有人報告過 2. 如果沒有,請建立新的 Issue,並包含: - 詳細的 Bug 描述 - 重現步驟 - 預期行為和實際行為 - 作業系統和瀏覽器版本 - 錯誤訊息或截圖 ### 功能請求 如果您有新的功能想法: 1. 檢查現有的 Issues 和 Pull Requests 2. 建立新的 Issue,描述: - 功能需求 - 使用場景 - 預期效果 ### 程式碼貢獻 #### 開發環境設定 1. **Fork 專案** ```bash git clone https://github.com/your-username/imagezoom.git cd imagezoom ``` 2. **建立虛擬環境** ```bash python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows ``` 3. **安裝依賴** ```bash pip install -r requirements.txt cd frontend && npm install ``` #### 開發流程 1. **建立功能分支** ```bash git checkout -b feature/your-feature-name ``` 2. **開發功能** - 遵循現有的程式碼風格 - 撰寫測試(如果適用) - 確保所有測試通過 3. **提交變更** ```bash git add . git commit -m "feat: 新增功能描述" ``` 4. **推送到分支** ```bash git push origin feature/your-feature-name ``` 5. **建立 Pull Request** - 前往 GitHub 建立 Pull Request - 填寫 PR 模板 - 等待審查 #### 提交訊息規範 我們使用 [Conventional Commits](https://www.conventionalcommits.org/) 規範: - `feat:` 新功能 - `fix:` Bug 修復 - `docs:` 文件更新 - `style:` 程式碼格式調整 - `refactor:` 重構 - `test:` 測試相關 - `chore:` 建置工具或輔助工具的變動 範例: ``` feat: 新增圖片縮放功能 fix: 修復上傳檔案大小限制問題 docs: 更新 API 文件 ``` #### 程式碼風格 **Python (後端)** - 遵循 PEP 8 規範 - 使用 4 個空格縮排 - 行長度限制在 79 字元內 - 使用有意義的變數和函數名稱 **JavaScript (前端)** - 使用 ESLint 和 Prettier - 遵循 React 最佳實踐 - 使用有意義的組件和函數名稱 #### 測試 **後端測試** ```bash # 執行測試 python -m pytest # 執行測試並顯示覆蓋率 python -m pytest --cov=app ``` **前端測試** ```bash cd frontend npm test ``` ## Pull Request 審查流程 1. **自動檢查** - CI/CD 流程會自動執行測試 - 程式碼風格檢查 - 安全性掃描 2. **人工審查** - 至少需要一位維護者審查 - 可能需要修改或改進 3. **合併** - 審查通過後會合併到主分支 - 會自動部署到測試環境 ## 行為準則 我們致力於建立一個友善和包容的社群環境: - 尊重所有貢獻者 - 使用友善和建設性的語言 - 接受建設性的批評 - 專注於問題本身,而非個人 ## 聯絡方式 如果您有任何問題或建議: - 建立 [Issue](https://github.com/your-username/imagezoom/issues) - 發送 Email 至 [your-email@example.com] - 加入我們的 [Discord 社群](https://discord.gg/your-server) ## 致謝 感謝所有為這個專案做出貢獻的開發者! --- **注意:** 請確保您同意本專案的 [LICENSE](LICENSE) 條款。