// stats page — pipeline throughput + per-source/per-status breakdowns // depends on: app.js async function loadStatsPage() { const data = await api("/admin/api/stats"); document.getElementById("sourceTable").innerHTML = data.bySource .map(r => `${escapeHtml(r.source)}${r.n.toLocaleString()}`).join(""); document.getElementById("statusTable").innerHTML = data.byStatus .map(r => `${badgeHtml(r.status === "null" ? null : r.status)}${r.n.toLocaleString()}`).join(""); document.getElementById("rate-ingested").textContent = (data.ingestedPerHour || 0).toLocaleString(); document.getElementById("rate-content").textContent = (data.contentPerHour || 0).toLocaleString(); document.getElementById("rate-embeddings").textContent = (data.embeddingsPerHour || 0).toLocaleString(); } document.addEventListener("DOMContentLoaded", loadStatsPage);