# 📋 MOMO 系統 - Aider Code Review 使用指南

## 🎯 功能概述

本系統整合了 Aider AI Code Review 功能，提供多種自動化程式碼審查方式，確保程式碼品質與安全性。

## 🚀 使用方式

### 1. **Git Hooks 自動觸發**
```bash
# 在 commit 時自動執行 Code Review
git add .
git commit -m "feat: 新增功能"
```
- ✅ 自動檢查暫存檔案
- ✅ Review 失敗時阻止 commit
- ✅ 支援跳過：`git commit --no-verify`

### 2. **手動快速觸發**
```bash
# 互動式選單
./scripts/quick_review.sh

# 直接指定檔案
./scripts/quick_review.sh app.py routes/sales_routes.py

# 自動 Review 暫存檔案
python3 scripts/code_review.py --auto
```

### 3. **Web 介面操作**
```bash
# 啟動 MOMO 系統
python3 app.py

# 訪問 Code Review 頁面
http://localhost:5000/code-review/
```

功能：
- 📁 檔案選擇器（支援變更檔案/所有檔案）
- 🔍 三種 Review 類型
- 📊 即時 Review 輸出
- 📈 Review 歷史記錄
- 📄 報告查看功能

### 4. **GitHub Actions CI/CD**
```bash
# 手動觸發
# 在 GitHub Actions 頁面選擇 "Aider Code Review" workflow

# 自動觸發
# Push 到 main/develop 分支
# 建立 Pull Request
```

## 🔧 Review 類型

### **基礎檢查 (Basic)**
- 程式碼品質與最佳實踐
- 潛在的 bug 與問題
- 程式碼可讀性與維護性
- 效能優化建議

### **安全檢查 (Security)**
- SQL 注入風險
- XSS 攻擊風險
- 認證與授權問題
- 敏感資料洩露風險
- 輸入驗證不足

### **效能檢查 (Performance)**
- 演算法效率
- 資料庫查詢優化
- 記憶體使用
- 並發處理
- 快取策略

## 📁 檔案結構

```
momo-pro-system/
├── scripts/
│   ├── code_review.py              # 核心 Code Review 腳本
│   └── quick_review.sh             # 快速觸發腳本
├── routes/
│   └── code_review_routes.py       # Web 路由
├── templates/
│   └── code_review.html            # Web 介面
├── .git/hooks/
│   └── pre-commit                  # Git Hook
├── .github/workflows/
│   └── code-review.yml            # GitHub Actions
└── logs/
    ├── code_review.log             # Review 日誌
    └── review_*.md                 # Review 報告
```

## 🛠️ 進階設定

### **自訂 Review 提示詞**
編輯 `scripts/code_review.py` 中的 `message` 參數：

```python
# 基礎檢查範例
"--message", "請重點檢查：\n1. 程式碼架構設計\n2. 錯誤處理機制\n3. 日誌記錄完整性"
```

### **調整超時時間**
```python
# 在 code_review.py 中修改
timeout=600  # 10分鐘超時
```

### **支援的檔案類型**
```python
allowed_extensions = {
    '.py', '.js', '.ts', '.jsx', '.tsx', '.html', '.css'
}
```

## 📊 查看結果

### **命令行查看**
```bash
# 查看 Review 日誌
tail -f logs/code_review.log

# 查看最新報告
ls -la logs/review_*.md | tail -1
cat logs/review_*.md | tail -1
```

### **Web 介面查看**
1. 訪問 `/code-review/`
2. 點擊「載入歷史記錄」
3. 點擊報告的「查看」按鈕

### **GitHub Actions 查看**
1. 前往 GitHub Actions 頁面
2. 查看 "Aider Code Review" workflow
3. 下載 "code-review-reports" artifact

## ⚠️ 注意事項

### **安全性**
- ✅ 所有敏感資料已過濾
- ✅ Review 結果僅儲存在本地
- ✅ GitHub Actions 使用隔離環境

### **效能**
- ⚠️ 大型專案建議分批 Review
- ⚠️ 複雜檔案可能需要更長時間
- ⚠️ 同時執行多個 Review 可能影響效能

### **相容性**
- ✅ 支援 Python 3.8+
- ✅ 需要 Aider 已安裝
- ✅ 相容 Git 2.0+

## 🔧 故障排除

### **常見問題**

**Q: Aider 執行失敗**
```bash
# 檢查 Aider 安裝
which aider
aider --version

# 重新安裝
pip install --upgrade aider-chat
```

**Q: Git Hook 不執行**
```bash
# 檢查權限
ls -la .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

# 測試執行
.git/hooks/pre-commit
```

**Q: Web 介面無法載入**
```bash
# 檢查 Blueprint 註冊
grep -n "code_review_bp" app.py

# 檢查路由
python3 -c "from routes.code_review_routes import code_review_bp; print(code_review_bp.url_prefix)"
```

### **除錯模式**
```bash
# 啟用詳細日誌
export DEBUG=1
python3 scripts/code_review.py --auto --type basic

# 測試模式（不實際執行 Aider）
python3 -c "
from scripts.code_review import AiderCodeReview
reviewer = AiderCodeReview()
print('變更檔案:', reviewer.get_changed_files())
"
```

## 📚 API 參考

### **命令行參數**
```bash
python3 scripts/code_review.py [OPTIONS]

OPTIONS:
  --files, -f           指定要 Review 的檔案
  --type, -t            Review 類型 (basic|security|performance)
  --project-root, -p    專案根目錄路徑
  --auto, -a            自動 Review 暫存檔案
  --help, -h            顯示說明
```

### **Web API 端點**
```
GET  /code-review/                    # 主頁面
POST /code-review/api/start-review    # 開始 Review
GET  /code-review/api/get-changed-files # 獲取變更檔案
GET  /code-review/api/review-history  # Review 歷史
GET  /code-review/api/view-report/<filename> # 查看報告
GET  /code-review/api/get-project-files # 專案檔案列表
```

## 🎉 開始使用

1. **確保 Aider 已安裝**
   ```bash
   pip install aider-chat
   ```

2. **測試基本功能**
   ```bash
   ./scripts/quick_review.sh
   ```

3. **設定 Git Hooks（可選）**
   ```bash
   # 已自動設定，測試：
   git add .
   git commit -m "test: 測試 Code Review"
   ```

4. **啟動 Web 介面**
   ```bash
   python3 app.py
   # 訪問 http://localhost:5000/code-review/
   ```

---

*如有問題，請查看 `logs/code_review.log` 獲取詳細錯誤資訊。*
