# DramaLing AI功能使用說明

## 🎯 **功能概述**

DramaLing的AI生成功能現已完全實現，支持智能英文句子分析、語法修正、詞彙標記和慣用語識別。

## 🛠️ **開發環境設置**

### **1. 設置Gemini API Key**

#### **方法一：使用.NET User Secrets（推薦）**
```bash
cd backend/DramaLing.Api
dotnet user-secrets set "Gemini:ApiKey" "你的真實Gemini API Key"
```

#### **方法二：使用環境變數**
```bash
export GEMINI_API_KEY="你的真實Gemini API Key"
```

#### **方法三：appsettings.json（不推薦用於生產）**
```json
{
  "Gemini": {
    "ApiKey": "你的真實Gemini API Key"
  }
}
```

### **2. 啟動服務**

#### **後端服務（port 5000）**
```bash
cd backend/DramaLing.Api
dotnet run
```

#### **前端服務（port 3000）**
```bash
cd frontend
npm run dev
```

## 🔧 **技術架構**

### **後端API端點**
- `POST /api/ai/analyze-sentence` - 句子智能分析
- `GET /api/ai/health` - AI服務健康檢查

### **前端頁面**
- `http://localhost:3000/generate` - AI分析主頁面

## 🎯 **使用流程**

### **1. 用戶操作**
1. 在輸入框中輸入英文句子（最多300字符）
2. 點擊「🔍 分析句子」按鈕
3. 查看語法修正建議（如有）
4. 瀏覽詞彙統計卡片
5. 點擊標記的詞彙查看詳細資訊
6. 點擊慣用語查看解釋
7. 保存感興趣的詞彙到詞卡

### **2. 系統處理**
1. 前端發送API請求到後端
2. 後端檢查使用限制和快取
3. 調用Gemini API進行分析
4. 處理和格式化回應數據
5. 快取結果並返回前端
6. 前端渲染分析結果

## 📊 **功能特色**

### **✅ 已實現功能**

#### **🤖 AI智能分析**
- **語法檢查** - 自動檢測時態、主謂一致等錯誤
- **詞彙分析** - 提供翻譯、定義、發音、CEFR等級
- **慣用語識別** - 智能識別句子中的習語和片語
- **中文翻譯** - 自然流暢的繁體中文翻譯

#### **🎯 個人化學習**
- **CEFR等級比較** - 基於用戶程度標記詞彙難度
- **視覺化分類** - 不同顏色標記不同難度詞彙
- **統計卡片** - 直觀展示詞彙分布
- **學習提示** - 幫助用戶理解標記含義

#### **💡 互動體驗**
- **彈窗詳情** - 點擊詞彙查看完整資訊
- **智能定位** - 彈窗自動避開螢幕邊界
- **一鍵保存** - 直接保存到個人詞卡庫
- **響應式設計** - 支援桌面和移動設備

#### **⚡ 性能優化**
- **快取機制** - 避免重複分析相同句子
- **使用限制** - 免費用戶每日5次分析
- **錯誤處理** - 優雅的錯誤回饋和回退機制
- **記憶化** - 前端性能優化

## 🔒 **安全設計**

### **API認證**
- 使用JWT Bearer Token認證
- 每個請求都需要有效的認證Token

### **使用限制**
- 免費用戶：每日5次分析
- 付費用戶：無限制使用
- 3小時重置週期

### **數據安全**
- API Key使用User Secrets安全存儲
- 敏感資訊不寫入代碼
- HTTPS傳輸加密

## 🧪 **測試模式**

### **Mock模式（預設）**
當沒有設置真實Gemini API Key時，系統自動使用Mock數據：
- 模擬1秒API延遲
- 提供完整的測試數據
- 包含語法錯誤修正範例
- 包含16個詞彙分析和1個慣用語

### **真實API模式**
設置真實Gemini API Key後：
- 調用Google Gemini Pro模型
- 真實的AI分析結果
- 動態的詞彙和語法分析
- 支援任意英文句子

## 📈 **測試案例**

### **測試句子**
```
She just join the team, so let's cut her some slack until she get used to the workflow.
```

### **預期結果（A2用戶）**
- **語法修正**: 2個錯誤修正（join→joined, get→gets）
- **詞彙統計**: 太簡單8個，重點學習4個，有挑戰3個，慣用語1個
- **慣用語**: "cut someone some slack"
- **翻譯**: "她剛加入團隊，所以讓我們對她寬容一點，直到她習慣工作流程。"

## 🔧 **故障排除**

### **常見問題**

#### **Q: API請求失敗**
```
錯誤: API請求失敗: 401
解決: 檢查localStorage中是否有有效的auth_token
```

#### **Q: 編譯錯誤**
```
錯誤: IGeminiService無法解析
解決: 確保Program.cs中正確註冊了服務
```

#### **Q: Gemini API調用失敗**
```
錯誤: Gemini API call failed
解決: 檢查API Key是否正確設置，會自動回退到Mock模式
```

### **除錯方式**

#### **檢查後端日誌**
```bash
# 查看後端控制台輸出
# 尋找 "Starting sentence analysis" 和相關錯誤訊息
```

#### **檢查前端控制台**
```javascript
// 在瀏覽器開發者工具Console中查看
// API調用和錯誤訊息
```

#### **檢查網路請求**
```
瀏覽器 → F12 → Network → 查看API請求和回應
```

## 🚀 **生產部署**

### **環境變數設置**
```bash
# 生產環境必需設置
GEMINI_API_KEY=你的真實Gemini API Key
DRAMALING_SUPABASE_JWT_SECRET=你的JWT Secret
```

### **健康檢查**
```bash
# 檢查服務狀態
curl http://your-domain/health
curl http://your-domain/api/ai/health
```

## 📚 **開發參考**

### **相關文檔**
- `/AI生成功能後端API規格.md` - 完整API技術規格
- `/AI生成網頁前端實際功能規格.md` - 前端功能規格
- `/AI生成網頁前端需求規格.md` - 前端需求規格

### **核心檔案**
- `backend/DramaLing.Api/Controllers/AIController.cs` - API控制器
- `backend/DramaLing.Api/Services/GeminiService.cs` - AI分析服務
- `frontend/app/generate/page.tsx` - 前端主頁面
- `frontend/components/ClickableTextV2.tsx` - 詞彙互動組件

---

**最後更新**: 2025-01-25
**狀態**: ✅ 功能完整，可投入使用