
# 複習系統產品需求規格書 (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 TestItem {
  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` 詳細規定

