# Learn → Review 重命名計劃 **建立日期**: 2025-09-27 **目的**: 將所有 learn 相關命名改為 review,使程式碼語義更清晰準確 --- ## 📋 需要重命名的項目盤點 ### **1. 目錄結構重命名** #### **主要目錄** ``` FROM TO /frontend/app/learn/ → /frontend/app/review/ /frontend/components/learn/ → /frontend/components/review/ /frontend/hooks/learn/ → /frontend/hooks/review/ /frontend/lib/services/learn/ → /frontend/lib/services/review/ ``` #### **子目錄重命名** ``` FROM TO /components/learn/tests/ → /components/review/review-tests/ ``` ### **2. 檔案重命名** #### **核心檔案** ``` FROM TO useLearnStore.ts → useReviewStore.ts learnService.ts → reviewService.ts TestRunner.tsx → ReviewRunner.tsx ``` #### **組件檔案 (可選重命名)** ``` FROM TO ProgressTracker.tsx → ReviewProgressTracker.tsx TaskListModal.tsx → ReviewTaskListModal.tsx LoadingStates.tsx → ReviewLoadingStates.tsx ``` ### **3. 程式碼內容修改** #### **Import 路徑修改** 需要更新以下檔案中的import: - `/app/learn/page.tsx` (8個import) - `/components/learn/TestRunner.tsx` (2個import) - `/lib/services/learn/learnService.ts` (1個import) ```typescript // FROM import { ProgressTracker } from '@/components/learn/ProgressTracker' import { useLearnStore } from '@/store/useLearnStore' import { LearnService } from '@/lib/services/learn/learnService' // TO import { ReviewProgressTracker } from '@/components/review/ReviewProgressTracker' import { useReviewStore } from '@/store/useReviewStore' import { ReviewService } from '@/lib/services/review/reviewService' ``` #### **類別和介面重命名** ```typescript // FROM → TO useLearnStore → useReviewStore LearnState → ReviewState LearnService → ReviewService TestRunner → ReviewRunner // 函數名稱 initializeLearnSession → initializeReviewSession loadDueCards → loadDueReviewCards (可選) ``` #### **註解和文字更新** 所有註解中的 "learn" 改為 "review": ```typescript // FROM // 學習會話狀態 // 載入到期詞卡 // 初始化學習會話 // TO // 複習會話狀態 // 載入到期複習詞卡 // 初始化複習會話 ``` ### **4. 特殊考量** #### **URL路由保持不變** - **用戶訪問**: 仍然是 `http://localhost:3000/learn` - **檔案路徑**: `/app/review/page.tsx` (內部重命名) - **Next.js**: 需要考慮路由映射問題 #### **外部引用檢查** 需要檢查是否有其他檔案引用了learn相關組件: - Navigation.tsx 中的 learn 連結 - Dashboard.tsx 中的 learn 按鈕 - 其他頁面的跳轉邏輯 --- ## 🚀 執行順序 ### **階段一:目錄和檔案重命名** (15分鐘) 1. 重命名主要目錄結構 2. 重命名核心檔案 3. 更新檔案的export名稱 ### **階段二:程式碼內容更新** (20分鐘) 1. 更新所有import路徑 2. 重命名類別和介面 3. 更新函數和變數名稱 4. 更新註解和字串 ### **階段三:路由配置** (10分鐘) 1. 確認Next.js路由正常運作 2. 檢查外部引用是否正確 3. 測試頁面是否正常載入 ### **階段四:測試和驗證** (15分鐘) 1. 檢查編譯是否通過 2. 測試功能是否正常 3. 確認沒有遺漏的引用 --- ## ⚠️ 風險評估 ### **低風險項目** - 內部檔案重命名 - 註解和字串更新 - 組件內部邏輯 ### **中風險項目** - Import路徑更新 (可能遺漏) - Store狀態管理 (需要仔細測試) ### **注意事項** - URL路由 `/learn` 保持不變 - 確保所有依賴關係正確更新 - 備份重要檔案以防萬一 --- ## 📝 驗證清單 ### **重命名完成檢查** - [ ] 所有目錄重命名完成 - [ ] 所有檔案重命名完成 - [ ] 所有import路徑更新 - [ ] 所有類別名稱更新 - [ ] 所有函數名稱更新 ### **功能測試** - [ ] 頁面可以正常載入 - [ ] 測驗組件正常顯示 - [ ] 狀態管理正常運作 - [ ] API調用正常 - [ ] 錯誤處理正常 ### **外部整合測試** - [ ] Navigation導航正常 - [ ] Dashboard跳轉正常 - [ ] 路由映射正確 這個重命名將讓程式碼語義更清晰,`review`(複習) 比 `learn`(學習) 更精確地描述這個功能的本質。