509 lines
18 KiB
Markdown
509 lines
18 KiB
Markdown
# 個人化詞彙庫功能規格
|
||
|
||
## 🎯 功能概述
|
||
|
||
個人化詞彙庫是一個用戶專屬的詞彙管理系統,允許用戶收集、組織和追蹤自己的學習詞彙,並根據學習表現提供個人化的學習建議。
|
||
|
||
## 📋 核心功能需求
|
||
|
||
### 1. 詞彙收集功能
|
||
|
||
#### 1.1 手動添加詞彙
|
||
- **功能描述**:用戶可以手動輸入新詞彙到個人詞彙庫
|
||
- **輸入欄位**:
|
||
- 英文詞彙(必填)
|
||
- 詞性(可選,下拉選單)
|
||
- 發音(可選,自動生成或手動輸入)
|
||
- 定義(可選,自動生成或手動輸入)
|
||
- 中文翻譯(可選,自動生成或手動輸入)
|
||
- 個人筆記(可選,用戶自訂)
|
||
- **自動補全**:系統自動查詢並填入詞彙資訊
|
||
- **重複檢查**:避免添加重複詞彙
|
||
|
||
#### 1.2 學習中收集
|
||
- **學習頁面收藏**:在任何測驗模式中點擊「收藏」按鈕
|
||
- **困難詞彙標記**:答錯的詞彙自動標記為需要加強
|
||
- **快速收集**:一鍵添加當前學習的詞彙到個人庫
|
||
|
||
#### 1.3 批量導入
|
||
- **文字檔導入**:支援 .txt 格式的詞彙列表
|
||
- **CSV 導入**:支援結構化的詞彙資料
|
||
- **從學習記錄導入**:將過往答錯的詞彙批量加入
|
||
|
||
### 2. 詞彙組織功能
|
||
|
||
#### 2.1 分類管理
|
||
- **預設分類**:
|
||
- 新學詞彙(New)
|
||
- 學習中(Learning)
|
||
- 熟悉(Familiar)
|
||
- 精通(Mastered)
|
||
- 困難詞彙(Difficult)
|
||
- **自訂分類**:用戶可創建自己的分類標籤
|
||
- **多重分類**:單一詞彙可屬於多個分類
|
||
|
||
#### 2.2 標籤系統
|
||
- **難度標籤**:A1, A2, B1, B2, C1, C2
|
||
- **主題標籤**:商業、旅遊、學術、日常等
|
||
- **來源標籤**:書籍、電影、新聞、會話等
|
||
- **自訂標籤**:用戶可創建個人標籤
|
||
|
||
#### 2.3 優先級管理
|
||
- **高優先級**:急需掌握的詞彙
|
||
- **中優先級**:重要但不緊急的詞彙
|
||
- **低優先級**:選擇性學習的詞彙
|
||
|
||
### 3. 學習追蹤功能
|
||
|
||
#### 3.1 熟悉度評分
|
||
- **評分機制**:0-100 分的熟悉度評分
|
||
- **多維度評估**:
|
||
- 認識度(Recognition):看到詞彙能理解
|
||
- 回想度(Recall):能主動想起詞彙
|
||
- 應用度(Application):能在語境中正確使用
|
||
- **動態調整**:根據測驗表現自動調整評分
|
||
|
||
#### 3.2 學習歷史
|
||
- **學習次數**:詞彙被學習的總次數
|
||
- **正確率**:各種測驗模式的正確率統計
|
||
- **最後學習時間**:記錄最近一次學習時間
|
||
- **學習軌跡**:詳細的學習歷程記錄
|
||
|
||
#### 3.3 遺忘曲線追蹤
|
||
- **複習提醒**:基於遺忘曲線的智能提醒
|
||
- **複習間隔**:動態調整複習時間間隔
|
||
- **記憶強度**:評估詞彙在記憶中的鞏固程度
|
||
|
||
### 4. 個人化學習功能
|
||
|
||
#### 4.1 智能推薦
|
||
- **弱點分析**:識別用戶的學習弱點
|
||
- **相似詞彙**:推薦語義相關的詞彙
|
||
- **同根詞擴展**:推薦同詞根的相關詞彙
|
||
- **搭配詞推薦**:推薦常見的詞彙搭配
|
||
|
||
#### 4.2 個人化測驗
|
||
- **客製化題組**:根據個人詞彙庫生成測驗
|
||
- **弱點加強**:針對困難詞彙的專門訓練
|
||
- **複習模式**:基於遺忘曲線的複習測驗
|
||
- **混合練習**:結合不同來源詞彙的綜合測驗
|
||
|
||
#### 4.3 學習計劃
|
||
- **每日目標**:設定每日學習詞彙數量
|
||
- **週期計劃**:制定短期和長期學習目標
|
||
- **進度追蹤**:視覺化顯示學習進度
|
||
- **成就系統**:學習里程碑和獎勵機制
|
||
|
||
## 🗃️ 資料結構設計
|
||
|
||
### 個人詞彙資料模型
|
||
```typescript
|
||
interface PersonalVocabulary {
|
||
id: string;
|
||
userId: string;
|
||
word: string;
|
||
partOfSpeech?: string;
|
||
pronunciation?: string;
|
||
definition?: string;
|
||
translation?: string;
|
||
personalNotes?: string;
|
||
|
||
// 分類和標籤
|
||
categories: string[];
|
||
tags: string[];
|
||
priority: 'high' | 'medium' | 'low';
|
||
|
||
// 學習追蹤
|
||
familiarityScore: number; // 0-100
|
||
recognitionScore: number; // 0-100
|
||
recallScore: number; // 0-100
|
||
applicationScore: number; // 0-100
|
||
|
||
// 學習統計
|
||
totalPractices: number;
|
||
correctAnswers: number;
|
||
incorrectAnswers: number;
|
||
lastPracticed: Date;
|
||
nextReview: Date;
|
||
|
||
// 測驗模式統計
|
||
flipMemoryStats: TestModeStats;
|
||
vocabChoiceStats: TestModeStats;
|
||
sentenceFillStats: TestModeStats;
|
||
// ... 其他測驗模式
|
||
|
||
// 元資料
|
||
createdAt: Date;
|
||
updatedAt: Date;
|
||
source?: string; // 詞彙來源
|
||
}
|
||
|
||
interface TestModeStats {
|
||
attempts: number;
|
||
correct: number;
|
||
averageTime: number; // 平均回答時間(秒)
|
||
lastAttempt: Date;
|
||
}
|
||
```
|
||
|
||
### 學習會話記錄
|
||
```typescript
|
||
interface LearningSession {
|
||
id: string;
|
||
userId: string;
|
||
startTime: Date;
|
||
endTime: Date;
|
||
mode: string;
|
||
vocabulariesPracticed: string[]; // 詞彙 IDs
|
||
totalQuestions: number;
|
||
correctAnswers: number;
|
||
timeSpent: number; // 秒
|
||
performance: SessionPerformance;
|
||
}
|
||
|
||
interface SessionPerformance {
|
||
accuracy: number; // 正確率
|
||
speed: number; // 平均回答速度
|
||
improvement: number; // 相對上次的進步
|
||
weakWords: string[]; // 表現較差的詞彙
|
||
strongWords: string[]; // 表現較好的詞彙
|
||
}
|
||
```
|
||
|
||
## 🔧 技術實現方案
|
||
|
||
### 前端實現
|
||
|
||
#### 1. 狀態管理
|
||
```typescript
|
||
// 使用 Context API 或 Zustand
|
||
interface PersonalVocabStore {
|
||
vocabularies: PersonalVocabulary[];
|
||
currentSession: LearningSession | null;
|
||
filters: VocabFilters;
|
||
|
||
// Actions
|
||
addVocabulary: (vocab: Partial<PersonalVocabulary>) => void;
|
||
updateVocabulary: (id: string, updates: Partial<PersonalVocabulary>) => void;
|
||
deleteVocabulary: (id: string) => void;
|
||
updateFamiliarity: (id: string, testResult: TestResult) => void;
|
||
// ...
|
||
}
|
||
```
|
||
|
||
#### 2. 本地儲存策略
|
||
- **IndexedDB**:大量詞彙資料的本地儲存
|
||
- **localStorage**:用戶偏好和設定
|
||
- **同步機制**:與伺服器的雙向同步
|
||
|
||
#### 3. UI 組件結構
|
||
```
|
||
/components/PersonalVocab/
|
||
├── VocabLibrary.tsx # 詞彙庫主頁面
|
||
├── VocabCard.tsx # 單一詞彙卡片
|
||
├── VocabForm.tsx # 新增/編輯詞彙表單
|
||
├── VocabFilters.tsx # 篩選和搜尋
|
||
├── VocabStats.tsx # 學習統計
|
||
├── CategoryManager.tsx # 分類管理
|
||
├── TagManager.tsx # 標籤管理
|
||
└── ReviewScheduler.tsx # 複習排程
|
||
```
|
||
|
||
### 後端實現
|
||
|
||
#### 1. API 端點設計
|
||
```
|
||
GET /api/personal-vocab # 獲取用戶詞彙庫
|
||
POST /api/personal-vocab # 新增詞彙
|
||
PUT /api/personal-vocab/:id # 更新詞彙
|
||
DELETE /api/personal-vocab/:id # 刪除詞彙
|
||
POST /api/personal-vocab/batch # 批量操作
|
||
|
||
GET /api/personal-vocab/stats # 獲取學習統計
|
||
POST /api/personal-vocab/practice # 記錄練習結果
|
||
GET /api/personal-vocab/review # 獲取需要複習的詞彙
|
||
|
||
GET /api/learning-sessions # 獲取學習會話記錄
|
||
POST /api/learning-sessions # 記錄學習會話
|
||
```
|
||
|
||
#### 2. 資料庫設計
|
||
```sql
|
||
-- 個人詞彙表
|
||
CREATE TABLE personal_vocabularies (
|
||
id UUID PRIMARY KEY,
|
||
user_id UUID REFERENCES users(id),
|
||
word VARCHAR(100) NOT NULL,
|
||
part_of_speech VARCHAR(20),
|
||
pronunciation VARCHAR(200),
|
||
definition TEXT,
|
||
translation TEXT,
|
||
personal_notes TEXT,
|
||
familiarity_score INTEGER DEFAULT 0,
|
||
recognition_score INTEGER DEFAULT 0,
|
||
recall_score INTEGER DEFAULT 0,
|
||
application_score INTEGER DEFAULT 0,
|
||
total_practices INTEGER DEFAULT 0,
|
||
correct_answers INTEGER DEFAULT 0,
|
||
incorrect_answers INTEGER DEFAULT 0,
|
||
last_practiced TIMESTAMP,
|
||
next_review TIMESTAMP,
|
||
priority VARCHAR(10) DEFAULT 'medium',
|
||
source VARCHAR(100),
|
||
created_at TIMESTAMP DEFAULT NOW(),
|
||
updated_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- 詞彙分類表
|
||
CREATE TABLE vocab_categories (
|
||
id UUID PRIMARY KEY,
|
||
user_id UUID REFERENCES users(id),
|
||
name VARCHAR(50) NOT NULL,
|
||
color VARCHAR(7), -- HEX color
|
||
description TEXT,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- 詞彙-分類關聯表
|
||
CREATE TABLE vocab_category_relations (
|
||
vocab_id UUID REFERENCES personal_vocabularies(id),
|
||
category_id UUID REFERENCES vocab_categories(id),
|
||
PRIMARY KEY (vocab_id, category_id)
|
||
);
|
||
|
||
-- 學習會話表
|
||
CREATE TABLE learning_sessions (
|
||
id UUID PRIMARY KEY,
|
||
user_id UUID REFERENCES users(id),
|
||
mode VARCHAR(50) NOT NULL,
|
||
start_time TIMESTAMP NOT NULL,
|
||
end_time TIMESTAMP,
|
||
total_questions INTEGER DEFAULT 0,
|
||
correct_answers INTEGER DEFAULT 0,
|
||
time_spent INTEGER DEFAULT 0, -- 秒
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- 詞彙練習記錄表
|
||
CREATE TABLE vocab_practice_records (
|
||
id UUID PRIMARY KEY,
|
||
session_id UUID REFERENCES learning_sessions(id),
|
||
vocab_id UUID REFERENCES personal_vocabularies(id),
|
||
test_mode VARCHAR(50) NOT NULL,
|
||
is_correct BOOLEAN NOT NULL,
|
||
response_time INTEGER, -- 毫秒
|
||
user_answer TEXT,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
## 🎨 使用者介面設計
|
||
|
||
### 主要頁面結構
|
||
|
||
#### 1. 詞彙庫總覽頁面 (`/personal-vocab`)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ 🏠 個人詞彙庫 (1,247 個詞彙) │
|
||
├─────────────────────────────────────┤
|
||
│ [搜尋框] [篩選] [排序] [新增詞彙] │
|
||
├─────────────────────────────────────┤
|
||
│ 📊 學習統計 │
|
||
│ • 今日學習:12 個詞彙 │
|
||
│ • 本週進度:85% 完成 │
|
||
│ • 平均正確率:78% │
|
||
├─────────────────────────────────────┤
|
||
│ 📚 詞彙分類 │
|
||
│ [新學詞彙 124] [學習中 89] [熟悉 856] │
|
||
│ [困難詞彙 45] [我的收藏 67] │
|
||
├─────────────────────────────────────┤
|
||
│ 📝 詞彙列表 │
|
||
│ ┌─────────────────────────────────┐ │
|
||
│ │ brought (動詞) ⭐⭐⭐⭐☆ │ │
|
||
│ │ 發音: /brɔːt/ | 熟悉度: 80% │ │
|
||
│ │ 定義: Past tense of bring... │ │
|
||
│ │ [編輯] [練習] [刪除] │ │
|
||
│ └─────────────────────────────────┘ │
|
||
│ (更多詞彙卡片...) │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
#### 2. 詞彙詳情頁面 (`/personal-vocab/:id`)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ ← 返回詞彙庫 │
|
||
├─────────────────────────────────────┤
|
||
│ 📝 brought │
|
||
│ 動詞 | 難度: B1 | 優先級: 高 │
|
||
├─────────────────────────────────────┤
|
||
│ 🔊 發音: /brɔːt/ [播放] │
|
||
│ 📖 定義: Past tense of bring... │
|
||
│ 🈲 翻譯: 提出、帶來 │
|
||
│ 📝 個人筆記: [編輯區域] │
|
||
├─────────────────────────────────────┤
|
||
│ 📊 學習統計 │
|
||
│ • 熟悉度: ████████░░ 80% │
|
||
│ • 總練習: 25 次 │
|
||
│ • 正確率: 85% │
|
||
│ • 上次練習: 2 小時前 │
|
||
│ • 下次複習: 明天 14:00 │
|
||
├─────────────────────────────────────┤
|
||
│ 🎯 各模式表現 │
|
||
│ • 翻卡記憶: 90% (15/15) │
|
||
│ • 詞彙選擇: 75% (12/16) │
|
||
│ • 例句填空: 80% (8/10) │
|
||
├─────────────────────────────────────┤
|
||
│ 🏷️ 分類標籤 │
|
||
│ [學習中] [商業英語] [重要詞彙] │
|
||
│ [+ 添加標籤] │
|
||
├─────────────────────────────────────┤
|
||
│ 🎮 快速練習 │
|
||
│ [翻卡記憶] [詞彙選擇] [例句填空] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
#### 3. 新增詞彙頁面 (`/personal-vocab/add`)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ ➕ 新增詞彙到個人庫 │
|
||
├─────────────────────────────────────┤
|
||
│ 📝 英文詞彙: [輸入框] *必填 │
|
||
│ 🔍 [智能查詢] - 自動填入詞彙資訊 │
|
||
├─────────────────────────────────────┤
|
||
│ 📖 詞彙資訊 │
|
||
│ • 詞性: [下拉選單] │
|
||
│ • 發音: [輸入框] [生成] │
|
||
│ • 定義: [文字區域] [自動生成] │
|
||
│ • 翻譯: [輸入框] [自動翻譯] │
|
||
├─────────────────────────────────────┤
|
||
│ 🏷️ 分類設定 │
|
||
│ • 分類: [多選下拉] [新增分類] │
|
||
│ • 標籤: [標籤選擇器] [新增標籤] │
|
||
│ • 優先級: ⚫ 高 ⚪ 中 ⚪ 低 │
|
||
├─────────────────────────────────────┤
|
||
│ 📝 個人筆記 │
|
||
│ [多行文字輸入區域] │
|
||
├─────────────────────────────────────┤
|
||
│ [取消] [儲存詞彙] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
## 🔄 學習流程整合
|
||
|
||
### 1. 學習中的詞彙收集
|
||
- **收藏按鈕**:每個測驗頁面都有收藏功能
|
||
- **自動收集**:答錯的詞彙自動標記為需要加強
|
||
- **學習後提醒**:學習會話結束後推薦收藏的詞彙
|
||
|
||
### 2. 個人化測驗生成
|
||
- **我的詞彙測驗**:從個人庫選取詞彙生成測驗
|
||
- **弱點強化**:針對低熟悉度詞彙的專門練習
|
||
- **混合模式**:結合系統詞彙和個人詞彙的測驗
|
||
|
||
### 3. 複習提醒系統
|
||
- **智能排程**:基於遺忘曲線安排複習時間
|
||
- **推送通知**:瀏覽器通知提醒複習時間
|
||
- **複習優化**:根據表現調整複習頻率
|
||
|
||
## 📱 響應式設計考量
|
||
|
||
### 桌面版 (>= 1024px)
|
||
- **三欄布局**:側邊欄(分類)+ 詞彙列表 + 詳情面板
|
||
- **拖拉操作**:支援拖拉詞彙到不同分類
|
||
- **快速鍵**:鍵盤快速鍵支援
|
||
|
||
### 平板版 (768px - 1023px)
|
||
- **兩欄布局**:詞彙列表 + 詳情面板
|
||
- **觸控優化**:適合觸控操作的按鈕尺寸
|
||
|
||
### 手機版 (< 768px)
|
||
- **單欄布局**:全螢幕顯示當前頁面
|
||
- **底部導航**:快速切換功能
|
||
- **手勢支援**:滑動操作和長按功能
|
||
|
||
## 🚀 實施階段規劃
|
||
|
||
### 階段 1:基礎詞彙管理 (第 1-2 週)
|
||
- [ ] 資料庫設計和建立
|
||
- [ ] 基本 CRUD API 開發
|
||
- [ ] 詞彙列表頁面
|
||
- [ ] 新增/編輯詞彙功能
|
||
- [ ] 基本搜尋和篩選
|
||
|
||
### 階段 2:學習追蹤系統 (第 3-4 週)
|
||
- [ ] 熟悉度評分系統
|
||
- [ ] 學習歷史記錄
|
||
- [ ] 測驗結果整合
|
||
- [ ] 學習統計儀表板
|
||
|
||
### 階段 3:智能化功能 (第 5-6 週)
|
||
- [ ] 遺忘曲線算法
|
||
- [ ] 複習提醒系統
|
||
- [ ] 個人化推薦
|
||
- [ ] 弱點分析
|
||
|
||
### 階段 4:高級功能 (第 7-8 週)
|
||
- [ ] 批量導入/導出
|
||
- [ ] 學習計劃制定
|
||
- [ ] 成就系統
|
||
- [ ] 社交分享功能
|
||
|
||
## 📊 成功指標
|
||
|
||
### 用戶行為指標
|
||
- **詞彙庫使用率**:> 80% 用戶建立個人詞彙庫
|
||
- **收藏率**:> 60% 學習中的詞彙被收藏
|
||
- **複習完成率**:> 70% 的複習提醒被完成
|
||
- **熟悉度提升**:平均熟悉度每週提升 5%
|
||
|
||
### 學習效果指標
|
||
- **記憶保持率**:複習詞彙的正確率 > 85%
|
||
- **學習效率**:個人詞彙的學習時間縮短 30%
|
||
- **長期記憶**:30 天後的詞彙記憶率 > 70%
|
||
|
||
### 系統性能指標
|
||
- **回應時間**:詞彙庫載入時間 < 2 秒
|
||
- **同步效率**:資料同步成功率 > 99%
|
||
- **儲存效率**:本地儲存空間使用 < 50MB
|
||
|
||
## 🔐 隱私和安全考量
|
||
|
||
### 資料隱私
|
||
- **用戶授權**:明確的隱私政策和使用條款
|
||
- **資料加密**:敏感資料的端到端加密
|
||
- **匿名化**:學習統計資料的匿名化處理
|
||
|
||
### 資料安全
|
||
- **備份機制**:定期備份用戶資料
|
||
- **版本控制**:資料變更的版本記錄
|
||
- **災難恢復**:資料遺失的恢復機制
|
||
|
||
## 🔮 未來擴展功能
|
||
|
||
### 社交學習功能
|
||
- **詞彙分享**:分享個人詞彙庫給其他用戶
|
||
- **學習小組**:創建詞彙學習小組
|
||
- **競賽模式**:與朋友的詞彙學習競賽
|
||
|
||
### AI 智能功能
|
||
- **智能生成**:AI 生成個人化例句
|
||
- **發音評估**:AI 評估發音準確度
|
||
- **學習建議**:AI 提供個人化學習建議
|
||
|
||
### 多媒體功能
|
||
- **語音筆記**:錄音形式的個人筆記
|
||
- **圖片聯想**:為詞彙添加個人化圖片
|
||
- **影片連結**:連結相關的學習影片
|
||
|
||
---
|
||
|
||
## 📝 附註
|
||
|
||
本規格文件為個人化詞彙庫功能的完整設計,包含前後端實現細節和用戶體驗考量。實際開發時可根據優先級和資源情況分階段實施。
|
||
|
||
**建議優先實施階段 1 和階段 2**,建立穩固的基礎功能,再逐步添加智能化和高級功能。
|
||
|
||
---
|
||
|
||
*最後更新:2025-09-20*
|
||
*版本:v1.0* |