perf: keep source aggregation off interactive requests

This commit is contained in:
ImBenji
2026-08-04 21:48:44 +01:00
parent d020fa3811
commit 6e666838ba
3 changed files with 10 additions and 10 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ async function loadStatsPage() {
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("");
.map(r => `<tr><td>${escapeHtml(r.source)}</td><td style="text-align:right; padding-left:24px"><span class="badge ok">indexed</span></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("");
+8 -8
View File
@@ -4,10 +4,10 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Duriin Admin — Stats</title>
<link rel="stylesheet" href="/admin/assets/css/base.css?v=20260804-4">
<link rel="stylesheet" href="/admin/assets/css/layout.css?v=20260804-4">
<link rel="stylesheet" href="/admin/assets/css/components.css?v=20260804-4">
<link rel="stylesheet" href="/admin/assets/css/intel.css?v=20260804-4">
<link rel="stylesheet" href="/admin/assets/css/base.css?v=20260804-5">
<link rel="stylesheet" href="/admin/assets/css/layout.css?v=20260804-5">
<link rel="stylesheet" href="/admin/assets/css/components.css?v=20260804-5">
<link rel="stylesheet" href="/admin/assets/css/intel.css?v=20260804-5">
</head>
<body>
@@ -50,10 +50,10 @@
<div style="display:flex; gap:32px; flex-wrap:wrap; padding-top:4px">
<div>
<div class="section-heading">By source</div>
<div class="section-heading">Known sources</div>
<div class="table-wrap" style="width:auto; min-width:220px">
<table style="width:auto">
<thead><tr><th>Source</th><th style="text-align:right">Count</th></tr></thead>
<thead><tr><th>Source</th><th style="text-align:right">State</th></tr></thead>
<tbody id="sourceTable"></tbody>
</table>
</div>
@@ -74,7 +74,7 @@
<div id="toast"><span class="toast-dot"></span><span id="toast-msg"></span></div>
<script src="/admin/assets/js/app.js?v=20260804-4"></script>
<script src="/admin/assets/js/stats.js?v=20260804-4"></script>
<script src="/admin/assets/js/app.js?v=20260804-5"></script>
<script src="/admin/assets/js/stats.js?v=20260804-5"></script>
</body>
</html>
+1 -1
View File
@@ -13,7 +13,7 @@ try {
(SELECT COUNT(*) FROM article_embedding_meta WHERE embedded_at >= datetime('now', '-1 hour')) AS contentPerHour
`).get();
const bySource = db.prepare(`
SELECT source, COUNT(*) AS n FROM articles GROUP BY source ORDER BY n DESC
SELECT DISTINCT source FROM articles ORDER BY source
`).all();
// Avoid scanning the 3.7 GB article table for legacy content-status values.
// Readiness is the useful operational distinction and is available from the