# DramaLing 後端開發計劃 ## 📋 現況評估 ### ✅ 已完成項目 1. **前端 Prototype** - 完整的 UI/UX 流程 2. **功能需求文檔** - 詳細的功能規格 3. **資料模型設計** - 基本的數據結構 4. **API 規格** - 初步的 API 端點設計 5. **用戶流程** - 完整的業務邏輯流程 ### ❌ 缺失項目 1. **詳細的資料庫 Schema** 2. **API 認證與授權機制細節** 3. **第三方服務整合規格** 4. **錯誤處理與日誌規範** 5. **效能與擴展性要求** 6. **部署與 DevOps 流程** ## 🎯 後端開發計劃 ### Phase 1: 基礎架構設置 (第1週) #### 1.1 專案初始化 ```bash # 技術棧 - Framework: Next.js 14 API Routes - Database: Supabase (PostgreSQL) - Authentication: NextAuth.js + Supabase Auth - ORM: Prisma - Validation: Zod - API Documentation: Swagger/OpenAPI ``` #### 1.2 需要完成的規格文檔 - [ ] **資料庫 Schema 詳細設計** - 所有表格結構 - 索引設計 - 關聯關係 - 資料遷移策略 - [ ] **環境配置規格** - 開發/測試/生產環境變數 - 資料庫連接配置 - 第三方服務 API Keys #### 1.3 實作任務 - [ ] 設置 Supabase 專案 - [ ] 配置 Prisma ORM - [ ] 建立資料庫 Schema - [ ] 設置環境變數管理 - [ ] 配置 TypeScript 類型定義 ### Phase 2: 認證系統 (第1-2週) #### 2.1 需要的規格 - [ ] **認證流程詳細設計** ```typescript interface AuthSpec { // Email/Password 註冊流程 emailRegistration: { validation: ValidationRules emailVerification: VerificationProcess welcomeEmail: EmailTemplate } // OAuth 整合 googleOAuth: { scopes: string[] dataMapping: UserDataMapping errorHandling: ErrorScenarios } // Session 管理 sessionManagement: { tokenExpiry: TokenExpiryRules refreshStrategy: RefreshTokenStrategy deviceManagement: MultiDevicePolicy } } ``` - [ ] **安全性規格** - 密碼加密策略 - Rate limiting 規則 - CORS 設定 - CSRF 保護 #### 2.2 實作任務 - [ ] 實作註冊 API - [ ] 實作登入/登出 API - [ ] 整合 Google OAuth - [ ] 實作 Email 驗證 - [ ] 實作忘記密碼功能 - [ ] Session/Token 管理 ### Phase 3: 核心業務邏輯 (第2-3週) #### 3.1 AI 詞卡生成系統 **需要的規格:** - [ ] **Gemini API 整合規格** ```typescript interface GeminiIntegration { apiKey: string model: 'gemini-pro' | 'gemini-pro-vision' prompts: { textAnalysis: PromptTemplate vocabularyExtraction: PromptTemplate exampleGeneration: PromptTemplate } rateLimit: { requestsPerMinute: number tokensPerRequest: number retryStrategy: RetryPolicy } errorHandling: { apiErrors: ErrorMapping fallbackStrategy: FallbackOptions } } ``` - [ ] **詞卡生成邏輯** - 文本分析算法 - 難度評估規則 - 重複詞彙處理 - 批量生成優化 #### 3.2 學習系統 **需要的規格:** - [ ] **SM-2 算法實現細節** ```typescript interface SM2Algorithm { // 初始參數 initialInterval: number easinessFactor: number // 計算規則 calculateNextReview: (rating: 1-5, currentInterval: number) => Date updateEasinessFactor: (rating: 1-5, currentEF: number) => number // 特殊情況處理 handleOverdue: (daysOverdue: number) => Adjustment handleStreaks: (consecutiveCorrect: number) => Bonus } ``` - [ ] **學習進度追蹤** - 學習記錄存儲結構 - 統計數據計算方法 - 成就系統規則 #### 3.3 實作任務 - [ ] Gemini API 整合 - [ ] 詞卡生成 API - [ ] 卡組管理 CRUD API - [ ] SM-2 算法實現 - [ ] 學習記錄 API - [ ] 統計數據 API ### Phase 4: 資料管理 (第3-4週) #### 4.1 需要的規格 - [ ] **資料驗證規則** ```typescript // 每個 API 端點的輸入驗證 const schemas = { createFlashcard: z.object({ word: z.string().min(1).max(100), translation: z.string().min(1).max(200), example: z.string().max(500), // ... }), // 其他 schemas... } ``` - [ ] **資料存取層設計** - Repository Pattern 實現 - 查詢優化策略 - 快取策略 - [ ] **批量操作規格** - 批量導入限制 - 批量更新策略 - 事務處理規則 #### 4.2 實作任務 - [ ] 實作資料驗證中間件 - [ ] 建立 Repository 層 - [ ] 實作快取機制 - [ ] 批量操作 API - [ ] 資料導出功能 ### Phase 5: 第三方整合 (第4週) #### 5.1 需要的規格 - [ ] **Email 服務整合** ```typescript interface EmailService { provider: 'Resend' | 'SendGrid' templates: { welcome: EmailTemplate verification: EmailTemplate passwordReset: EmailTemplate learningReminder: EmailTemplate } sendingRules: { retryPolicy: RetryPolicy bounceHandling: BounceStrategy } } ``` - [ ] **支付系統整合** (未來功能) - Stripe/綠界設置 - 訂閱方案邏輯 - 支付 Webhook 處理 - [ ] **分析服務整合** - Google Analytics 事件 - 自定義指標追蹤 - 用戶行為分析 #### 5.2 實作任務 - [ ] Email 服務設置 - [ ] Email 模板實作 - [ ] 分析事件追蹤 - [ ] 錯誤追蹤 (Sentry) ### Phase 6: 效能與安全 (第5週) #### 6.1 需要的規格 - [ ] **API Rate Limiting** ```typescript interface RateLimiting { rules: { global: { requests: number, window: string } perUser: { requests: number, window: string } perEndpoint: Map } storage: 'memory' | 'redis' response: { headers: RateLimitHeaders errorMessage: string } } ``` - [ ] **安全性措施** - SQL Injection 防護 - XSS 防護 - Input Sanitization - API Key 管理 - [ ] **效能優化** - 資料庫查詢優化 - N+1 問題解決 - API Response 壓縮 - CDN 設置 #### 6.2 實作任務 - [ ] 實作 Rate Limiting - [ ] 安全中間件設置 - [ ] 查詢優化 - [ ] 快取策略實作 - [ ] 監控設置 ### Phase 7: 測試與部署 (第5-6週) #### 7.1 需要的規格 - [ ] **測試策略** ```typescript interface TestStrategy { unitTests: { coverage: number // 目標: 80% framework: 'Jest' } integrationTests: { apiEndpoints: string[] scenarios: TestScenario[] } e2eTests: { userFlows: string[] framework: 'Cypress' | 'Playwright' } } ``` - [ ] **部署流程** - CI/CD Pipeline - 環境變數管理 - 資料庫遷移策略 - 零停機部署 - [ ] **監控與日誌** - 錯誤監控 - 效能監控 - 日誌聚合 - 告警設置 #### 7.2 實作任務 - [ ] 撰寫單元測試 - [ ] 撰寫整合測試 - [ ] 設置 CI/CD - [ ] 部署到 Vercel - [ ] 監控系統設置 ## 📊 資源需求 ### 技術資源 - **Supabase**: Free tier → Pro ($25/月) - **Gemini API**: Free tier (60 requests/minute) - **Vercel**: Free tier → Pro ($20/月) - **Email Service**: Resend free tier (100/day) - **Monitoring**: Sentry free tier ### 時間預估 - **總開發時間**: 5-6 週 - **每週工時**: 40 小時 - **總工時**: 200-240 小時 ### 風險評估 1. **Gemini API 限制**: 需要實作 queue 系統 2. **資料庫效能**: 需要適當的索引設計 3. **成本控制**: 監控 API 使用量 4. **安全風險**: 定期安全審計 ## 🚀 下一步行動 ### 立即需要完成的規格文檔 1. **資料庫 Schema 完整設計** (2天) 2. **API 端點詳細規格** (2天) 3. **Gemini API 整合規格** (1天) 4. **認證流程詳細設計** (1天) 5. **錯誤處理規範** (1天) ### 開發優先順序 1. 🔴 **必要**: 認證系統、基本 CRUD、AI 生成 2. 🟡 **重要**: 學習系統、統計功能 3. 🟢 **可選**: 進階功能、優化 ## 📝 檢查清單 ### Week 1 - [ ] 完成所有規格文檔 - [ ] 設置開發環境 - [ ] 建立資料庫 - [ ] 實作認證 API ### Week 2-3 - [ ] 完成核心 API - [ ] 整合 Gemini - [ ] 實作學習邏輯 ### Week 4-5 - [ ] 第三方服務整合 - [ ] 效能優化 - [ ] 安全加固 ### Week 6 - [ ] 完整測試 - [ ] 部署上線 - [ ] 監控設置 ## 🎯 成功指標 1. **功能完整性**: 100% 核心功能實作 2. **效能指標**: API 響應 < 200ms 3. **可靠性**: 99.9% uptime 4. **安全性**: 通過 OWASP 基本檢查 5. **測試覆蓋**: > 80% 代碼覆蓋率