新增文本题库导入功能,题目新增“解析”字段

This commit is contained in:
2025-12-25 00:15:14 +08:00
parent e2a1555b46
commit dc9fc169ec
30 changed files with 1386 additions and 165 deletions

View File

@@ -14,6 +14,7 @@ interface Question {
type: 'single' | 'multiple' | 'judgment' | 'text';
options?: string[];
answer: string | string[];
analysis?: string;
score: number;
createdAt: string;
category?: string;
@@ -38,6 +39,7 @@ const QuizPage = () => {
const [timeLimit, setTimeLimit] = useState<number | null>(null);
const [subjectId, setSubjectId] = useState<string>('');
const [taskId, setTaskId] = useState<string>('');
const [showAnalysis, setShowAnalysis] = useState(false);
useEffect(() => {
if (!user) {
@@ -83,6 +85,10 @@ const QuizPage = () => {
return () => clearInterval(timer);
}, [timeLeft]);
useEffect(() => {
setShowAnalysis(false);
}, [currentQuestionIndex]);
const generateQuiz = async () => {
try {
setLoading(true);
@@ -335,6 +341,23 @@ const QuizPage = () => {
{renderQuestion(currentQuestion)}
</div>
{String(currentQuestion.analysis ?? '').trim() ? (
<div className="mb-6">
<Button
type="link"
onClick={() => setShowAnalysis((v) => !v)}
className="p-0 h-auto text-mars-600 hover:text-mars-700"
>
{showAnalysis ? '收起解析' : '查看解析'}
</Button>
{showAnalysis ? (
<div className="mt-2 p-4 rounded-lg border border-gray-100 bg-gray-50 text-gray-700 whitespace-pre-wrap">
{currentQuestion.analysis}
</div>
) : null}
</div>
) : null}
{/* 操作按钮 */}
<div className="flex justify-between items-center pt-6 border-t border-gray-100">
<Button