164 lines
5.1 KiB
Markdown
164 lines
5.1 KiB
Markdown
|
||
# 複習系統產品需求規格書 (MVP版本)
|
||
|
||
**版本**: 1.0 MVP
|
||
**日期**: 2025-10-03
|
||
**策略**: 階段性開發,避免過度工程
|
||
**當前狀態**: 極簡MVP已完成 ✅
|
||
|
||
---
|
||
|
||
## 🎯 **產品願景**
|
||
|
||
### **核心價值主張**
|
||
幫助用戶通過**翻卡記憶**快速有效地複習詞彙,提升學習效率。
|
||
|
||
### **設計理念**
|
||
- **簡單可用** > 功能完整
|
||
- **用戶驗證** > 假設需求
|
||
- **迭代進化** > 一次到位
|
||
- **真實反饋** > 完美設計
|
||
|
||
---
|
||
|
||
## 🚀 **階段1: 極簡MVP (當前版本)**
|
||
|
||
### **US-001: 基礎翻卡記憶**
|
||
**作為** 想複習詞彙的學習者
|
||
**我希望** 能夠翻卡查看詞彙內容並評估自己的熟悉程度
|
||
**以便** 測試和強化我的詞彙記憶
|
||
|
||
**實作狀態**: ✅ 已完成
|
||
**技術路徑**: `/review-simple`
|
||
|
||
### **核心功能清單**
|
||
- ✅ 3D翻卡動畫和互動
|
||
- ✅ 詞彙內容顯示 (定義、例句、同義詞)
|
||
- ✅ 信心度評估 (1-5級)
|
||
- ✅ 基礎進度追蹤
|
||
- ✅ 完成統計結果
|
||
|
||
---
|
||
|
||
## 🎯 **階段2: 線性雙測驗流程**
|
||
|
||
### **US-002: 線性複習流程**
|
||
**作為** 想要高效複習的學習者
|
||
**我希望** 系統自動安排複習順序和測驗類型
|
||
**以便** 無需思考如何複習,專注於學習本身
|
||
|
||
**核心設計原則**:
|
||
- 🔄 **線性流程** - 用戶不需要選擇,系統決定下一步
|
||
- 📚 **固定模式** - 每張詞卡必須完成兩種測驗
|
||
- ⚡ **自動進行** - 完成一個測驗自動進入下一個
|
||
|
||
### **詳細流程規格**
|
||
|
||
#### **2.1 測驗項目生成**
|
||
```
|
||
詞卡A → [翻卡記憶, 詞彙選擇]
|
||
詞卡B → [翻卡記憶, 詞彙選擇]
|
||
詞卡C → [翻卡記憶, 詞彙選擇]
|
||
...
|
||
|
||
線性序列: A翻卡 → A選擇 → B翻卡 → B選擇 → C翻卡 → C選擇 → ...
|
||
```
|
||
|
||
#### **2.2 狀態追蹤架構**
|
||
```typescript
|
||
interface QuizItem {
|
||
id: string // 測驗項目ID
|
||
cardId: string // 所屬詞卡ID
|
||
testType: 'flip-card' | 'vocab-choice'
|
||
isCompleted: boolean // 個別測驗完成狀態
|
||
skipCount: number // 跳過次數
|
||
wrongCount: number // 答錯次數
|
||
order: number // 序列順序
|
||
}
|
||
```
|
||
|
||
#### **2.3 進度計算邏輯**
|
||
- **測驗項目總數**: `詞卡數量 × 2`
|
||
- **當前進度**: `已完成測驗項目數 / 總測驗項目數`
|
||
- **詞卡完成條件**: 兩個測驗項目都標記為已完成
|
||
|
||
#### **2.4 用戶介面流程**
|
||
1. **進入複習** → 自動開始第一個測驗項目
|
||
2. **完成測驗** → 自動進入下一個測驗項目
|
||
3. **全部完成** → 顯示整體結果統計
|
||
|
||
#### **2.5 測驗項目詳細設計**
|
||
|
||
##### **翻卡記憶測驗**
|
||
- **目的**: 自我評估對詞彙的熟悉程度
|
||
- **互動方式**: 點擊翻卡查看定義、例句、同義詞
|
||
- **評分機制**: 3級信心度 (模糊0分、一般1分、熟悉2分)
|
||
- **完成條件**: 用戶選擇任意信心度
|
||
|
||
##### **詞彙選擇測驗**
|
||
- **目的**: 客觀測試詞彙記憶準確性
|
||
- **互動方式**: 4選1選擇題,根據定義選擇正確詞彙
|
||
- **評分機制**: 正確2分、錯誤0分
|
||
- **選項生成**: 1個正確答案 + 3個隨機干擾項
|
||
- **完成條件**: 用戶點擊任意選項
|
||
|
||
#### **2.6 延遲計數系統整合**
|
||
- **跳過行為**: 兩種測驗都支援跳過功能
|
||
- **錯誤處理**: 翻卡測驗選擇"模糊"、選擇題答錯都計入錯誤
|
||
- **優先級算法**: 跳過次數 + 錯誤次數 = 延遲分數,越高越優先
|
||
|
||
#### **2.7 進度保存機制**
|
||
- **範圍**: 個別測驗項目的完成狀態
|
||
- **存儲**: localStorage,包含測驗項目陣列
|
||
- **恢復**: 頁面重新載入時恢復到正確的測驗項目
|
||
- **重置**: 跨日期自動重置進度
|
||
|
||
---
|
||
|
||
## 🎯 **階段3: API集成版本 (遠期)**
|
||
|
||
### **US-003: 真實詞彙庫**
|
||
**作為** 想學習更多詞彙的學習者
|
||
**我希望** 能夠複習我收藏的真實詞彙
|
||
**以便** 學習我感興趣的內容
|
||
|
||
**觸發條件**:
|
||
- ✅ 線性流程驗證成功
|
||
- ✅ 有明確需要更多詞彙的用戶反饋
|
||
- ✅ 靜態數據已無法滿足需求
|
||
|
||
---
|
||
|
||
## 📊 **成功標準**
|
||
|
||
### **階段1 MVP成功標準**
|
||
- ✅ 用戶能完整完成翻卡記憶流程
|
||
- ✅ 無功能性錯誤或崩潰
|
||
- ✅ 載入時間 < 2秒
|
||
- ✅ 延遲計數系統運作正常
|
||
|
||
### **階段2 線性流程成功標準**
|
||
- [ ] 測驗項目自動線性進行,無需用戶選擇
|
||
- [ ] 每張詞卡的兩種測驗都正確執行
|
||
- [ ] 延遲計數系統適用於兩種測驗類型
|
||
- [ ] 進度顯示反映真實的測驗項目完成狀態
|
||
- [ ] localStorage 保存/恢復測驗項目狀態
|
||
- [ ] 整體複習完成後顯示統合結果
|
||
|
||
### **驗收條件 (Definition of Done)**
|
||
- [ ] 用戶進入 `/review-simple` 自動開始第一個測驗項目
|
||
- [ ] 完成翻卡記憶後自動切換到詞彙選擇測驗
|
||
- [ ] 完成詞彙選擇後自動進入下一張詞卡的翻卡記憶
|
||
- [ ] 進度條顯示 `已完成測驗項目 / 總測驗項目`
|
||
- [ ] 延遲計數在兩種測驗間正確傳遞和累積
|
||
- [ ] 頁面刷新能恢復到正確的測驗項目位置
|
||
|
||
### **避免的功能 (Out of Scope)**
|
||
❌ 用戶手動選擇測驗類型
|
||
❌ 智能排程算法
|
||
❌ 複雜狀態管理架構
|
||
❌ 測驗順序自定義
|
||
|
||
**參考**: `技術實作規格.md` 和 `開發控制規範.md` 詳細規定
|
||
|