'use client' import { Navigation } from '@/components/shared/Navigation' import { FlipMemory } from '@/components/review/quiz/FlipMemory' import { VocabChoiceQuiz } from '@/components/review/quiz/VocabChoiceQuiz' import { QuizProgress } from '@/components/review/ui/QuizProgress' import { QuizResult } from '@/components/review/quiz/QuizResult' import { useReviewSession } from '@/hooks/review/useReviewSession' export default function ReviewPage() { // 使用重構後的 Hook 管理線性複習狀態 const { quizItems, score, isComplete, currentQuizItem, currentCard, vocabOptions, totalQuizItems, completedQuizItems, handleAnswer, handleSkip, handleRestart, isLoading, error, flashcards, totalFlashcardsCount } = useReviewSession() // 除錯日誌 - 檢查狀態 console.log('🔍 Review Page 狀態檢查:', { isLoading, error, flashcardsLength: flashcards.length, totalFlashcardsCount, currentQuizItem: currentQuizItem?.id, currentCard: currentCard?.word, isComplete }) // 顯示載入狀態 if (isLoading) { return (

載入詞卡中...

正在從後端獲取您的複習詞卡

) } // 顯示錯誤狀態 if (error) { const isAuthError = error.includes('登入已過期') || error.includes('認證') return (
{isAuthError ? '🔒' : '⚠️'}

{isAuthError ? '需要重新登入' : '載入失敗'}

{error}

{isAuthError ? ( ) : ( )}
) } // 情境 1: 新用戶 - 一張詞卡都沒有 if (!isLoading && !error && totalFlashcardsCount === 0) { return (
{/* 歡迎圖標 */}
👋
{/* 歡迎標題 */}

歡迎來到 DramaLing!

{/* 說明文字 */}

開始您的英語學習之旅,建立第一張詞卡來開始學習吧!

{/* 功能介紹卡片 */}
🎯

智能學習

AI 驅動的個人化詞彙學習系統

🧠

科學記憶

基於遺忘曲線的複習提醒

{/* 主要行動按鈕 */}
{/* 次要功能 */}
{/* 學習提示 */}

💡 開始提示: 建議從日常生活中的詞彙開始, 或輸入您感興趣的英文句子讓 AI 協助分析!

) } // 情境 2: 有詞卡但都已訓練完成 if (!isLoading && !error && totalFlashcardsCount && totalFlashcardsCount > 0 && flashcards.length === 0) { return (
{/* 慶祝圖標 */}
🎉
{/* 主要標題 */}

太棒了!所有詞卡都已掌握

{/* 次標題 */}

您已完成所有 {totalFlashcardsCount} 張詞卡的學習!

目前沒有需要複習的詞卡,您的學習進度非常優秀!

{/* 統計卡片 */}
📚

持續學習

保持每日複習習慣

📈

查看進度

檢視學習統計數據

擴展詞庫

新增更多詞彙挑戰

{/* 行動按鈕 */}
{/* 提示文字 */}

💡 小提示: 詞卡會根據遺忘曲線算法自動安排複習時間。 繼續保持學習,明天可能會有新的複習內容!

) } // 顯示結果頁面 if (isComplete) { return (
{/* 線性測驗完成統計 */}

測驗統計

{completedQuizItems}
完成測驗項目
{flashcards.length}
練習詞卡數
{score.total > 0 ? Math.round((score.correct / score.total) * 100) : 0}%
正確率
) } // 主要線性測驗頁面 // 只有在有可用測驗項目時才顯示測驗界面 if (!isLoading && !error && totalFlashcardsCount !== null && totalFlashcardsCount > 0 && flashcards.length > 0 && currentQuizItem && currentCard) { return (
{/* 使用簡化的 ReviewProgress 組件 */} {/* 根據當前測驗項目類型渲染對應組件 */} {currentQuizItem && currentCard && ( <> {currentQuizItem.quizType === 'flip-card' && ( )} {currentQuizItem.quizType === 'vocab-choice' && ( )} )}
) } // Fallback 狀態 - 處理其他未預期情況 return (
🤔

正在準備學習內容

系統正在載入您的學習資料,請稍候片刻。

如果問題持續,請嘗試重新載入頁面。

) }