import React from 'react' import { Alert, Typography, Card, Space, Progress } from 'antd' import { CheckOutlined, CloseOutlined, TrophyOutlined, CommentOutlined, BulbOutlined } from '@ant-design/icons' import type { AnswerResult as AnswerResultType } from '../types/question' const { Text, Paragraph } = Typography interface AnswerResultProps { answerResult: AnswerResultType selectedAnswer: string | string[] questionType: string } const AnswerResult: React.FC = ({ answerResult, selectedAnswer, questionType, }) => { // 格式化答案显示(判断题特殊处理) const formatAnswer = (answer: string | string[] | boolean) => { // 处理判断题的布尔值和字符串 if (questionType === 'true-false') { if (typeof answer === 'boolean') { return answer ? '正确' : '错误' } if (typeof answer === 'string') { return answer === 'true' ? '正确' : answer === 'false' ? '错误' : answer } } // 处理数组答案 if (Array.isArray(answer)) { return answer.join(', ') } return String(answer) } // 获取评分等级颜色 const getScoreColor = (score: number) => { if (score >= 90) return '#52c41a' // 优秀 - 绿色 if (score >= 80) return '#1890ff' // 良好 - 蓝色 if (score >= 60) return '#faad14' // 及格 - 橙色 return '#ff4d4f' // 不及格 - 红色 } // 获取评分等级 const getScoreLevel = (score: number) => { if (score >= 90) return '优秀' if (score >= 80) return '良好' if (score >= 60) return '及格' return '不及格' } return (
: } message={
{answerResult.correct ? '回答正确!' : '回答错误'}
} description={
你的答案: {formatAnswer(answerResult.user_answer || selectedAnswer)}
正确答案: {formatAnswer( answerResult.correct_answer || (answerResult.correct ? selectedAnswer : '暂无') )}
{answerResult.explanation && (
解析:
{answerResult.explanation}
)}
} /> {/* AI评分结果 - 仅简答题显示 */} {answerResult.ai_grading && ( AI智能评分 } > {/* 分数和进度条 */}
得分
{answerResult.ai_grading.score} / 100
`${getScoreLevel(percent || 0)}`} />
{/* 评语 */} {answerResult.ai_grading.feedback && (
评语: {answerResult.ai_grading.feedback}
)} {/* 改进建议 */} {answerResult.ai_grading.suggestion && (
改进建议: {answerResult.ai_grading.suggestion}
)}
)}
) } export default AnswerResult