import React from "react"; import { Box, Typography, CircularProgress, Alert, Paper } from "@mui/material"; import { useNavigate, useSearchParams } from "react-router-dom"; import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; import { useSimulation } from "./hooks/useSimulation"; import { useTimer } from "./hooks/useTimer"; import { useEvaluation } from "./hooks/useEvaluation"; import ErrorDisplay from "../common/ErrorDisplay"; const BenchmarkEvaluation = ({ sessionId, isDefaultDocument, onComplete }) => { const [searchParams] = useSearchParams(); const isDefault = isDefaultDocument || ["the-bitter-lesson", "hurricane-faq", "pokemon-guide"].includes(sessionId); const navigate = useNavigate(); // Use our custom hooks const { formatElapsedTime, stopTimer } = useTimer(); const { startingMessageIndex, evaluationComplete: simulationComplete, currentMessage, } = useSimulation(() => { if (onComplete) { onComplete(); } }); const { error, evaluationComplete: realComplete, currentStep, evaluationStarted, startEvaluation, currentStepLabel, totalSteps, } = useEvaluation(sessionId, () => { if (onComplete) { onComplete(); } }); // Handle automatic redirection when evaluation is complete React.useEffect(() => { if (realComplete || simulationComplete) { navigate(`/evaluation-display?session=${sessionId}`); } }, [realComplete, simulationComplete, sessionId, navigate]); // Start evaluation if not default and not started React.useEffect(() => { if (!isDefault && !evaluationStarted) { startEvaluation(); } }, [isDefault, evaluationStarted, startEvaluation]); // Stop timer when complete React.useEffect(() => { if (realComplete || simulationComplete) { stopTimer(); } }, [realComplete, simulationComplete, stopTimer]); const isComplete = realComplete || simulationComplete; const currentStepInfo = isDefault ? `${currentMessage.message} (${currentMessage.step}/${currentMessage.totalSteps})` : `${currentStepLabel} (${currentStep + 1}/${totalSteps})`; return ( {/* Temps estimé */} Estimated time ~ 1m30s {error ? ( ) : ( <> {isComplete ? ( Evaluation completed successfully! ) : ( <> Benchmark evaluation... {/* Step progress indicator */} {currentStepInfo} {/* Timer display */} {formatElapsedTime()} )} )} ); }; export default BenchmarkEvaluation;