import { useState } from 'react'; import { useMutation } from '@tanstack/react-query'; import { analysisApi } from '../api/client'; import { Rocket, CheckCircle, AlertCircle, ChevronDown, ChevronUp } from 'lucide-react'; import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, Cell } from 'recharts'; import type { BatchAnalysisResult } from '../types'; export function Batch() { const [companiesInput, setCompaniesInput] = useState(''); const [maxWorkers, setMaxWorkers] = useState(3); const [result, setResult] = useState(null); const [expandedItems, setExpandedItems] = useState>(new Set()); const mutation = useMutation({ mutationFn: ({ companies, workers }: { companies: string[]; workers: number }) => analysisApi.analyzeBatch(companies, workers), onSuccess: (data) => setResult(data), }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); const companies = companiesInput .split(/[,\n]/) .map((c) => c.trim()) .filter((c) => c.length > 0); if (companies.length > 0) { mutation.mutate({ companies, workers: maxWorkers }); } }; const toggleExpand = (company: string) => { const newExpanded = new Set(expandedItems); if (newExpanded.has(company)) { newExpanded.delete(company); } else { newExpanded.add(company); } setExpandedItems(newExpanded); }; const chartData = result?.results.map((r) => ({ name: r.company_name.toUpperCase(), patents: r.patent_count, success: r.success, })); return (
{/* Header */}

Batch Company Analysis

Analyze multiple companies simultaneously for comparative insights.

{/* Input Form */}