import { QuizItem } from '@/lib/data/reviewSimpleData' interface SimpleProgressProps { currentQuizItem?: QuizItem totalQuizItems: number completedQuizItems: number score: { correct: number; total: number } quizItems?: QuizItem[] // 用於顯示測驗項目統計 } export function QuizProgress({ currentQuizItem, totalQuizItems, completedQuizItems, score, quizItems }: SimpleProgressProps) { const progress = (completedQuizItems / totalQuizItems) * 100 const accuracy = score.total > 0 ? Math.round((score.correct / score.total) * 100) : 0 // 測驗項目延遲統計計算 const delayStats = quizItems ? { totalSkips: quizItems.reduce((sum, item) => sum + item.skipCount, 0), totalWrongs: quizItems.reduce((sum, item) => sum + item.wrongCount, 0), delayedItems: quizItems.filter(item => item.skipCount + item.wrongCount > 0).length } : null return (
線性複習進度 {currentQuizItem && (
{currentQuizItem.quizType === 'flip-card' ? '🔄' : '🎯'} {currentQuizItem.quizType === 'flip-card' ? '翻卡記憶' : '詞彙選擇'} • {currentQuizItem.cardData.word}
)}
{completedQuizItems}/{totalQuizItems} 項目 {score.total > 0 && ( 準確率 {accuracy}% )}
{/* 進度條 */}
{/* 詳細統計 */}
{score.total > 0 && ( <>
答對 {score.correct}
答錯 {score.total - score.correct}
)} {/* 延遲統計 */} {delayStats && (delayStats.totalSkips > 0 || delayStats.totalWrongs > 0) && ( <> {score.total > 0 && |}
跳過次數 {delayStats.totalSkips}
跳過卡片 {delayStats.delayedItems}
)}
{/* 測驗項目順序可視化 */} {quizItems && currentQuizItem && (

測驗項目序列 (線性流程):

{quizItems.slice(0, 12).map((item) => { const isCompleted = item.isCompleted const isCurrent = item.id === currentQuizItem?.id const delayScore = item.skipCount + item.wrongCount // 狀態顏色 let itemStyle = '' let statusText = '' if (isCompleted) { itemStyle = 'bg-green-100 text-green-700 border-green-300' statusText = '✓' } else if (delayScore > 0) { if (item.skipCount > 0 && item.wrongCount > 0) { itemStyle = 'bg-red-100 text-red-700 border-red-300' statusText = `${item.skipCount}+${item.wrongCount}` } else if (item.skipCount > 0) { itemStyle = 'bg-yellow-100 text-yellow-700 border-yellow-300' statusText = `跳${item.skipCount}` } else { itemStyle = 'bg-orange-100 text-orange-700 border-orange-300' statusText = `錯${item.wrongCount}` } } else { itemStyle = 'bg-gray-100 text-gray-600 border-gray-300' statusText = '' } return (
{item.quizType === 'flip-card' ? '🔄' : '🎯'} {item.cardData.word} {statusText && ( ({statusText}) )}
) })} {quizItems.length > 12 && (
...還有 {quizItems.length - 12} 個項目
)}

🟢完成、🟡跳過、🟠答錯、🔴多次&答錯、⚪待進行

)}
) }