import { useEffect, useState } from 'react'; import './GradingModal.css'; import type { MatchedAssistant } from '../types/index'; interface GradingModalProps { isOpen: boolean; assistant: MatchedAssistant | null; language: string; } const GradingModal = ({ isOpen, assistant, language }: GradingModalProps) => { const [progress, setProgress] = useState(0); const [currentStep, setCurrentStep] = useState(0); const steps = language === 'zh-TW' ? [ '📖 讀取文章內容...', '🤖 啟動 AI 批改引擎...', '📝 分析文章結構...', '🔍 檢查文法與用詞...', '💡 生成改進建議...', '✨ 整理批改結果...', ] : [ '📖 Reading your article...', '🤖 Starting AI grading engine...', '📝 Analyzing article structure...', '🔍 Checking grammar and wording...', '💡 Generating suggestions...', '✨ Finalizing results...', ]; useEffect(() => { if (!isOpen) { setProgress(0); setCurrentStep(0); return; } // 每個步驟的目標進度 const progressPerStep = 100 / steps.length; // 更新步驟(每 5 秒一個步驟) const stepInterval = setInterval(() => { setCurrentStep(prev => { if (prev >= steps.length - 1) return prev; return prev + 1; }); }, 5000); // 進度條跟隨步驟緩慢增加 const progressInterval = setInterval(() => { setProgress(prev => { const targetProgress = (currentStep + 1) * progressPerStep; // 如果還沒到當前步驟的目標進度,緩慢增加 if (prev < targetProgress - 2) { return prev + 0.5 + Math.random() * 0.5; // 每次增加 0.5-1% } // 接近目標時停止 return Math.min(prev, 95); }); }, 100); return () => { clearInterval(progressInterval); clearInterval(stepInterval); }; }, [isOpen, steps.length, currentStep]); if (!isOpen) return null; return (
{language === 'zh-TW' ? '專業 AI 批改助手' : 'Professional AI Grading Assistant'}
{language === 'zh-TW' ? '⏱️ AI 批改通常需要 30-60 秒,請耐心等待...' : '⏱️ AI grading usually takes 30-60 seconds, please wait...'}
{language === 'zh-TW' ? '💡 批改完成後會自動顯示詳細結果' : '💡 Results will be displayed automatically when complete'}