dramaling-vocab-learning/note/plan/個人化詞彙庫功能規格.md

509 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 個人化詞彙庫功能規格
## 🎯 功能概述
個人化詞彙庫是一個用戶專屬的詞彙管理系統,允許用戶收集、組織和追蹤自己的學習詞彙,並根據學習表現提供個人化的學習建議。
## 📋 核心功能需求
### 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*