23 lines
1.2 KiB
JavaScript
23 lines
1.2 KiB
JavaScript
// 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").classList.remove("content-loading");
|
|
document.getElementById("statusTable").classList.remove("content-loading");
|
|
|
|
document.getElementById("sourceTable").innerHTML = data.bySource
|
|
.map(r => `<tr><td>${escapeHtml(r.source)}</td><td style="text-align:right; padding-left:24px">${r.n.toLocaleString()}</td></tr>`).join("");
|
|
|
|
document.getElementById("statusTable").innerHTML = data.byStatus
|
|
.map(r => `<tr><td><span class="badge ${r.status === "ready" ? "ok" : "pending"}">${escapeHtml(r.status)}</span></td><td style="text-align:right; padding-left:24px">${r.n.toLocaleString()}</td></tr>`).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);
|