/** * Container quality cards/table with verification rates (Phase 1 foundation). * Extends MegaEval ContainersTab data via /api/containers/quality. */ import Box from '@mui/material/Box'; import Table from '@mui/material/Table'; import TableBody from '@mui/material/TableBody'; import TableCell from '@mui/material/TableCell'; import TableHead from '@mui/material/TableHead'; import TableRow from '@mui/material/TableRow'; import Typography from '@mui/material/Typography'; import { useContainerQuality } from '../../services/platform'; import { ErrorNote, LoadingBox, MetricCard, SectionCard, fmtPct } from '../labeleval/shared'; export default function ContainerQualityPanel({ runId, refreshKey = 0, }: { runId: string | null; refreshKey?: number; }) { const poll = useContainerQuality(runId, refreshKey); if (!runId) { return ( Select a published evaluation run to load container quality profiles. ); } if (poll.error && !poll.data) return ; if (poll.loading && !poll.data) return ; const data = poll.data; if (!data) return null; const v = data.verification_headline || data.summary?.verification; return ( {data.total} containers · {data.model_version} } > Container Status P R F1 IoU Verified HITL Risk {data.containers.slice(0, 20).map((c) => ( #{c.container_id} {c.status ?? '—'} {fmtPct(c.precision)} {fmtPct(c.recall)} {fmtPct(c.f1)} {fmtPct(c.mean_iou)} {fmtPct(c.verification?.verified_rate)} {fmtPct(c.verification?.hitl_rate)} {c.risk_score.toFixed(2)} ))}
); }