'use client';
import { useState } from 'react';
import { useParams, useRouter } from 'next/navigation';
import {
Box,
Container,
Button,
CircularProgress,
Alert,
Dialog,
DialogTitle,
DialogContent,
DialogContentText,
DialogActions
} from '@mui/material';
import StopIcon from '@mui/icons-material/Stop';
import { useTranslation } from 'react-i18next';
import useBlindTestDetail from '../hooks/useBlindTestDetail';
import BlindTestHeader from '../components/BlindTestHeader';
import ResultSummary from '../components/ResultSummary';
import ResultDetailList from '../components/ResultDetailList';
import BlindTestInProgress from '../components/BlindTestInProgress';
export default function BlindTestDetailPage() {
const { projectId, taskId } = useParams();
const router = useRouter();
const { t } = useTranslation();
const {
task,
loading,
error,
setError,
currentQuestion,
leftAnswer,
rightAnswer,
answersLoading,
streamingA,
streamingB,
voting,
completed,
fetchCurrentQuestion,
submitVote,
interruptTask,
getResultStats
} = useBlindTestDetail(projectId, taskId);
const [interruptDialog, setInterruptDialog] = useState(false);
const handleBack = () => router.push(`/projects/${projectId}/blind-test-tasks`);
const handleVote = async vote => {
await submitVote(vote);
};
const handleInterrupt = async () => {
await interruptTask();
setInterruptDialog(false);
};
// 加载中
if (loading) {
return (
);
}
// 任务不存在
if (!task) {
return (
{t('blindTest.taskNotFound', '任务不存在')}
);
}
const isResultView = completed || task.status !== 0;
const stats = getResultStats();
// 结果展示页面(已完成或已中断)
if (isResultView) {
return (
);
}
// 盲测进行中页面
return (
}
onClick={() => setInterruptDialog(true)}
size="small"
>
{t('blindTest.interrupt', '中断任务')}
}
/>
{error && (
setError('')}>
{error}
)}
{/* 中断确认对话框 */}
);
}