import { useEffect, useState } from "react"; import { api } from "../api.js"; interface Health { checks: Record; } interface JobsOverview { scanJobs: Array<{ status: string; count: number }>; queue: Record; outboxPending: number; } export function DashboardPage() { const [health, setHealth] = useState(null); const [jobs, setJobs] = useState(null); const [error, setError] = useState(null); useEffect(() => { const load = () => { api("/admin/v1/system/health") .then(setHealth) .catch((e) => setError(String(e.message))); api("/admin/v1/jobs/overview") .then(setJobs) .catch(() => undefined); }; load(); const timer = setInterval(load, 15_000); return () => clearInterval(timer); }, []); return (

Systemöversikt

{error &&
{error}
}
{health && Object.entries(health.checks).map(([name, check]) => (
{check.ok ? "OK" : "FEL"}
{name} {check.detail ? `– ${check.detail}` : ""}
))} {jobs && (
{jobs.outboxPending}
Outbox väntar
)}
{jobs && (

Jobbköer

{Object.entries(jobs.queue).map(([status, count]) => ( ))}
Kö-status Antal
{status} {count}

Skanningsjobb

{jobs.scanJobs.map((row) => ( ))}
Status Antal
{row.status} {row.count}
)}
); }