/** * Processing mode selection component * Used to select fast or precise mode when uploading files */ 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); // Automatically select recommended mode setSelectedMode(rec.recommendedMode); onModeChange(rec.recommendedMode); } catch (error) { console.error('Failed to get mode recommendation:', error); } finally { setLoading(false); } }; const handleModeChange = (mode: 'fast' | 'precise') => { setSelectedMode(mode); onModeChange(mode); }; if (!file) { return null; } return (

Select processing mode

{loading && Analyzing...}
{/* Mode recommendation info */} {recommendation && (
Recommended: {recommendation.reason}
{recommendation.warnings && recommendation.warnings.length > 0 && (
{recommendation.warnings.map((warning, idx) => (
⚠️ {warning}
))}
)}
)} {/* Mode selection */}
); };