7.9 KiB
7.9 KiB
LinguaForge 技術架構設計文檔
1. 系統架構概覽
1.1 整體架構
┌─────────────────────────────────────────────────────┐
│ 客戶端層 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ iOS │ │ Android │ │ Web │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼────────────┼────────────┼──────────────────┘
│ │ │
└────────────┼────────────┘
│ HTTPS/REST API
┌────────────────────┼────────────────────────────────┐
│ │ API Gateway │
│ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ 後端服務層 (Node.js) │ │
│ │ ┌──────────┐ ┌──────────┐ │ │
│ │ │Auth Service│ │Core API │ │ │
│ │ └──────────┘ └─────┬────┘ │ │
│ └───────────────────────┼──────────────┘ │
└──────────────────────────┼──────────────────────────┘
│
┌──────────────────────────┼──────────────────────────┐
│ 外部服務整合層 │
│ ┌─────────────┐ ┌─────────────┐ ┌────────────┐│
│ │ Gemini API │ │ MS Speech │ │ AWS S3 ││
│ │ │ │ Service │ │ ││
│ └─────────────┘ └─────────────┘ └────────────┘│
└──────────────────────────────────────────────────────┘
│
┌──────────────────────────┼──────────────────────────┐
│ 資料儲存層 │
│ ┌─────────────┐ ┌─────────────┐ ┌────────────┐│
│ │ PostgreSQL │ │ Redis │ │ S3 Bucket ││
│ │ (主資料庫) │ │ (快取) │ │ (檔案儲存) ││
│ └─────────────┘ └─────────────┘ └────────────┘│
└──────────────────────────────────────────────────────┘
2. 技術選型
2.1 前端技術棧
- 跨平台框架: React Native
- 共享程式碼達 85%
- 生態系統成熟
- 支援熱更新
- 狀態管理: Redux Toolkit + RTK Query
- UI 元件庫: React Native Paper (Material Design)
- 離線資料: SQLite + WatermelonDB
- 導航: React Navigation v6
2.2 後端技術棧
- 運行環境: Node.js 18+ LTS
- 框架: NestJS (企業級架構)
- API 協議: RESTful + GraphQL (部分即時功能)
- 認證: JWT + Refresh Token
- 驗證: class-validator + class-transformer
- ORM: TypeORM
- 任務排程: Bull (基於 Redis)
2.3 資料庫設計
- 主資料庫: PostgreSQL 14+
- 快取層: Redis 7+
- 檔案儲存: AWS S3 / MinIO (自建)
- 搜尋引擎: Elasticsearch (未來擴展)
2.4 第三方服務
- AI 服務: Google Gemini API
- 語音評估: Microsoft Speech Service
- 推播通知: Firebase Cloud Messaging
- 錯誤追蹤: Sentry
- 分析: Google Analytics / Mixpanel
3. 核心模組設計
3.1 使用者管理模組
interface User {
id: string;
email: string;
username: string;
createdAt: Date;
subscription: SubscriptionTier;
preferences: UserPreferences;
}
3.2 詞彙學習模組
interface VocabularyCard {
id: string;
userId: string;
word: string;
definition: string;
examples: string[];
imageUrl?: string;
audioUrl?: string;
nextReviewDate: Date;
reviewCount: number;
easinessFactor: number;
}
3.3 間隔重複演算法
// SM-2 演算法實現
interface SpacedRepetition {
calculateNextReview(
quality: number, // 0-5 評分
repetitions: number,
easinessFactor: number,
interval: number
): ReviewSchedule;
}
3.4 語音評估模組
interface PronunciationAssessment {
accuracy: number; // 準確度 0-100
fluency: number; // 流暢度 0-100
completeness: number; // 完整度 0-100
pronunciation: number; // 綜合分數 0-100
}
4. API 設計規範
4.1 RESTful 端點設計
POST /api/auth/register
POST /api/auth/login
POST /api/auth/refresh
GET /api/cards # 獲取所有詞卡
POST /api/cards # 創建新詞卡
GET /api/cards/:id # 獲取單張詞卡
PUT /api/cards/:id # 更新詞卡
DELETE /api/cards/:id # 刪除詞卡
POST /api/cards/generate # AI 生成詞卡
GET /api/cards/review # 獲取今日複習詞卡
POST /api/cards/:id/review # 提交複習結果
POST /api/speech/assess # 語音評估
GET /api/speech/history # 評估歷史
4.2 錯誤處理規範
{
"error": {
"code": "VALIDATION_ERROR",
"message": "輸入資料驗證失敗",
"details": {
"field": "email",
"reason": "格式不正確"
}
}
}
5. 安全性設計
5.1 認證與授權
- JWT Token (15分鐘過期)
- Refresh Token (7天過期)
- 角色權限管理 (RBAC)
5.2 資料保護
- HTTPS 強制使用
- 敏感資料加密儲存
- SQL Injection 防護
- XSS/CSRF 防護
- Rate Limiting
5.3 API 安全
- API Key 管理
- Request 簽名驗證
- IP 白名單 (生產環境)
6. 效能優化策略
6.1 快取策略
- Redis 快取熱門詞卡
- CDN 快取靜態資源
- 客戶端快取複習進度
6.2 資料庫優化
- 索引優化
- 查詢優化
- 連線池管理
- 讀寫分離 (未來)
6.3 API 優化
- 分頁查詢
- 欄位過濾
- 批量操作
- GraphQL DataLoader
7. 監控與維運
7.1 監控指標
- API 回應時間
- 錯誤率
- 資料庫查詢效能
- 外部服務可用性
7.2 日誌管理
- 結構化日誌 (JSON)
- 分級日誌 (DEBUG/INFO/WARN/ERROR)
- 集中式日誌收集 (ELK Stack)
7.3 部署架構
- Docker 容器化
- Kubernetes 編排 (生產環境)
- CI/CD Pipeline (GitHub Actions)
- 藍綠部署策略
8. 擴展性考量
8.1 水平擴展
- 無狀態服務設計
- 負載均衡 (Nginx/ALB)
- 自動擴縮容
8.2 微服務化準備
- 模組化設計
- 服務邊界清晰
- 事件驅動架構預留
9. 災難恢復
9.1 備份策略
- 資料庫每日備份
- 增量備份
- 異地備份
9.2 故障轉移
- 主從複製
- 自動故障檢測
- 快速恢復機制