/** * 处理模式选择器组件 * 用于在文件上传时选择快速模式或精准模式 */ import React, { useState, useEffect } from 'react'; import { uploadService } from '../services/uploadService'; import { ModeRecommendation } from '../types'; interface ModeSelectorProps { file: File | null; onModeChange: (mode: 'fast' | 'precise') => void; className?: string; } export const ModeSelector: React.FC = ({ file, onModeChange, className = '', }) => { const [selectedMode, setSelectedMode] = useState<'fast' | 'precise'>('fast'); const [recommendation, setRecommendation] = useState(null); const [loading, setLoading] = useState(false); useEffect(() => { if (file) { loadRecommendation(); } else { setRecommendation(null); } }, [file]); const loadRecommendation = async () => { if (!file) return; setLoading(true); try { const rec = await uploadService.recommendMode(file); setRecommendation(rec); // 自动选择推荐的模式 setSelectedMode(rec.recommendedMode); onModeChange(rec.recommendedMode); } catch (error) { console.error('获取模式推荐失败:', error); } finally { setLoading(false); } }; const handleModeChange = (mode: 'fast' | 'precise') => { setSelectedMode(mode); onModeChange(mode); }; if (!file) { return null; } return (

处理模式选择

{loading && 分析中...}
{/* 模式推荐信息 */} {recommendation && (
推荐: {recommendation.reason}
{recommendation.warnings && recommendation.warnings.length > 0 && (
{recommendation.warnings.map((warning, idx) => (
⚠️ {warning}
))}
)}
)} {/* 模式选择 */}
); };