import { useState } from 'react' import { Alert, Box, Chip, CircularProgress, Collapse, Typography } from '@mui/material' import { ChevronDown, ChevronUp, Trophy, TrendingDown, ShieldCheck, AlertTriangle, Info, ArrowRight } from 'lucide-react' import type { ComparisonSummary } from '../../services/aiService' interface Props { summary?: ComparisonSummary isLoading: boolean } export function AICompareSummary({ summary, isLoading }: Props) { const [open, setOpen] = useState(true) return ( setOpen(v => !v)} sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', px: 2, py: 1.25, bgcolor: '#f8fafc', cursor: 'pointer', '&:hover': { bgcolor: '#f1f5f9' }, }} > AI Vergleichs-Zusammenfassung {open ? : } {isLoading && ( Analyse wird erstellt… )} {!isLoading && summary && ( {/* Strongest option */} Stärkstes Match {summary.strongestOption.label} {summary.strongestOption.reason} {/* Best value */} {summary.bestValue && ( Bestes Preis-Leistungs-Verhältnis {summary.bestValue.label} {summary.bestValue.reason} )} {/* Highest confidence */} Höchste Datenkonfidenz {summary.highestConfidence.label} ({Math.round(summary.highestConfidence.confidenceLevel * 100)}%) {/* Tradeoffs */} {summary.biggestTradeoffs.length > 0 && ( Wichtigste Abwägungen {summary.biggestTradeoffs.map((t, i) => ( · {t} ))} )} {/* Missing data */} {summary.missingDataWarnings.length > 0 && ( Fehlende Informationen {summary.missingDataWarnings.map((w, i) => ( · {w} ))} )} {/* Next step */} Empfohlener nächster Schritt {summary.recommendedNextStep} )} {!isLoading && !summary && ( Mindestens 2 Ergebnisse auswählen, um die Zusammenfassung zu generieren. )} Diese Zusammenfassung basiert ausschliesslich auf den vorliegenden Daten und trifft keine endgültige Entscheidung. ) }