/**
* 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)}
))}
);
}