dramaling-vocab-learning/docs/04_technical/system-architecture.md

185 lines
6.0 KiB
Markdown

# DramaLing 系統架構總覽
## 1. 系統架構概要
### 1.1 整體架構圖
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ 前端 (React) │◄──►│ 後端 API │◄──►│ 外部服務 │
│ Next.js 15 │ │ ASP.NET Core │ │ Google AI │
│ TypeScript │ │ C# .NET 8 │ │ Azure Speech │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐
│ │
│ 資料存儲 │
│ SQLite DB │
│ 本地檔案 │
│ │
└─────────────────┘
```
### 1.2 核心組件
#### 🖥️ **前端層 (Client)**
- **技術棧**: Next.js 15 + TypeScript + Tailwind CSS
- **部署**: http://localhost:3000 (開發環境)
- **主要職責**: 用戶介面、用戶互動、API 呼叫
#### ⚙️ **後端層 (Server)**
- **技術棧**: ASP.NET Core 8.0 + C#
- **部署**: http://localhost:5008 (開發環境)
- **主要職責**: 業務邏輯、API 服務、資料處理
#### 💾 **資料層 (Data)**
- **資料庫**: SQLite + Entity Framework Core
- **檔案位置**: `dramaling_test.db`
- **主要職責**: 資料持久化、關聯管理
#### 🌐 **外部服務層 (External)**
- **AI 服務**: Google Gemini API
- **語音服務**: Azure Speech Service
- **主要職責**: AI 分析、語音合成
## 2. 技術棧詳細說明
### 2.1 前端技術棧
| 技術組件 | 版本 | 用途 | 檔案位置 |
|---------|------|------|----------|
| Next.js | 15.x | React 框架 | `/frontend` |
| TypeScript | 5.x | 型別安全 | `.tsx`, `.ts` 檔案 |
| Tailwind CSS | 3.x | 樣式框架 | `tailwind.config.js` |
| React | 18.x | UI 組件 | `/components` |
### 2.2 後端技術棧
| 技術組件 | 版本 | 用途 | 檔案位置 |
|---------|------|------|----------|
| ASP.NET Core | 8.0 | Web API 框架 | `/backend/DramaLing.Api` |
| Entity Framework | 8.0 | ORM 框架 | `/Data` |
| SQLite | 3.x | 資料庫 | `dramaling_test.db` |
| JWT | - | 身份驗證 | `/Services/AuthService.cs` |
### 2.3 開發工具
| 工具 | 用途 | 配置檔案 |
|------|------|----------|
| npm | 前端套件管理 | `package.json` |
| dotnet | 後端專案管理 | `*.csproj` |
| Git | 版本控制 | `.gitignore` |
## 3. 服務間通信
### 3.1 前後端通信
- **協議**: HTTP/HTTPS
- **格式**: JSON
- **認證**: JWT Token
- **CORS**: 配置允許 localhost:3000-3002
### 3.2 API 基礎規範
- **基礎路徑**: `http://localhost:5008/api`
- **內容類型**: `application/json`
- **錯誤格式**: 標準化錯誤回應
- **成功格式**: `{success: boolean, data?: T, error?: string}`
## 4. 資料流架構
### 4.1 典型請求流程
```
用戶操作 → React Component → API Service → HTTP Request → ASP.NET Controller → Business Service → Entity Framework → SQLite
↓ ↑
Response ← State Update ← API Response ← HTTP Response ← JSON Serialization ← Business Logic ← Database Query ←────────┘
```
### 4.2 錯誤處理流程
```
異常發生 → Exception Handling → Error Response → Frontend Error State → User Feedback
```
## 5. 安全架構
### 5.1 認證機制
- **JWT Token**: 用戶身份驗證
- **Token 來源**: Supabase 相容格式
- **驗證位置**: ASP.NET Core Middleware
### 5.2 資料保護
- **輸入驗證**: 前端 + 後端雙重驗證
- **SQL 注入防護**: Entity Framework 參數化查詢
- **XSS 防護**: React 內建保護機制
## 6. 開發環境
### 6.1 本地開發設定
#### 前端開發伺服器
```bash
cd frontend
npm run dev
# 運行於: http://localhost:3000
```
#### 後端開發伺服器
```bash
cd backend
dotnet run --project DramaLing.Api
# 運行於: http://localhost:5008
```
### 6.2 環境變數
#### 後端環境變數
```bash
DRAMALING_DB_CONNECTION=Data Source=dramaling_test.db
DRAMALING_SUPABASE_URL=https://localhost
DRAMALING_SUPABASE_JWT_SECRET=dev-secret-minimum-32-characters-long-for-jwt-signing-in-development-mode-only
USE_INMEMORY_DB=false
```
#### 前端環境變數
```bash
NEXT_PUBLIC_API_URL=http://localhost:5008
```
## 7. 部署架構
### 7.1 開發環境
- **前端**: npm run dev (Hot Reload)
- **後端**: dotnet run (Hot Reload)
- **資料庫**: 本地 SQLite 檔案
### 7.2 生產環境 (未來)
- **前端**: Vercel / Netlify
- **後端**: Azure App Service / AWS EC2
- **資料庫**: PostgreSQL / Azure SQL
## 8. 監控與維護
### 8.1 日誌系統
- **前端**: Console.log (開發), Sentry (生產)
- **後端**: ILogger, 結構化日誌
- **API**: HTTP 請求/回應日誌
### 8.2 效能監控
- **前端**: Next.js 內建分析
- **後端**: ASP.NET Core 效能計數器
- **資料庫**: EF Core 查詢分析
---
**文檔版本**: v1.0
**建立日期**: 2025-09-24
**維護負責**: 開發團隊
**更新頻率**: 架構變更時即時更新
> 📋 此文檔為系統架構總覽,詳細技術規格請參考:
> - [後端架構詳細說明](./backend-architecture.md)
> - [前端架構詳細說明](./frontend-architecture.md)
> - [詞卡 API 規格](./flashcard-api-specification.md)