/** * 方法学评估报告组件 */ import { XCircle, AlertTriangle, CheckCircle } from 'lucide-react'; import type { MethodologyReviewResult } from '../types'; import ScoreRing from './ScoreRing'; interface MethodologyReportProps { data: MethodologyReviewResult; } export default function MethodologyReport({ data }: MethodologyReportProps) { const getSeverityStyle = (severity: 'major' | 'minor') => { return severity === 'major' ? { border: 'border-red-200', bg: 'bg-red-50', icon: , label: '严重' } : { border: 'border-amber-200', bg: 'bg-amber-50', icon: , label: '轻微' }; }; const getOverallStatus = () => { if (data.overall_score >= 80) return { label: '通过', color: 'text-green-700', bg: 'bg-green-50' }; if (data.overall_score >= 60) return { label: '存疑', color: 'text-amber-700', bg: 'bg-amber-50' }; return { label: '不通过', color: 'text-red-700', bg: 'bg-red-50' }; }; const status = getOverallStatus(); return (
{/* 总分卡片 */}
= 80 ? 'border-green-200' : data.overall_score >= 60 ? 'border-amber-200' : 'border-red-200' }`}>

方法学评估 {status.label}

{data.summary}

{/* 分项详情 */} {data.parts.map((part, partIndex) => (
{part.part}
{part.score}分 {part.issues.length === 0 ? ( 无问题 ) : ( {part.issues.length}个问题 )}
{part.issues.length > 0 ? (
{part.issues.map((issue, issueIndex) => { const severity = getSeverityStyle(issue.severity); return (
{severity.icon}
{issue.type} {severity.label}

{issue.description}

{issue.location && (

位置:{issue.location}

)} {issue.suggestion && (

建议:{issue.suggestion}

)}
); })}
) : (
该部分未发现问题
)}
))}
); }