Duriin-API/public/admin/pages/stats.html

80 lines
2.9 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<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">
<link rel="stylesheet" href="/admin/assets/css/layout.css">
<link rel="stylesheet" href="/admin/assets/css/components.css">
<link rel="stylesheet" href="/admin/assets/css/intel.css">
</head>
<body>
<header class="app-header">
<h1>Duriin <span>Admin</span></h1>
<nav class="tabs">
<a href="/admin/ingest">Ingest</a>
<a href="/admin/intelligence">Intelligence</a>
<a href="/admin/stats" class="active">Stats</a>
<a href="/admin/sql">SQL</a>
</nav>
</header>
<div class="stats-bar" id="statsBar">
<div class="stat"><span class="label">Total articles</span><span class="value" id="s-total"></span></div>
<div class="stat"><span class="label">With content</span><span class="value" id="s-content"></span></div>
<div class="stat"><span class="label">With embedding</span><span class="value" id="s-embed"></span></div>
<div class="stat"><span class="label">Events</span><span class="value" id="s-events"></span></div>
</div>
<main class="content">
<div style="margin-bottom:28px">
<div class="section-heading">Pipeline throughput — last 1 hour</div>
<div style="display:flex; gap:12px; flex-wrap:wrap; margin-top:10px">
<div class="intel-stat-card" style="min-width:180px">
<span class="label">Articles ingested</span>
<span class="value" id="rate-ingested"></span>
</div>
<div class="intel-stat-card" style="min-width:180px">
<span class="label">Content fetched</span>
<span class="value" id="rate-content"></span>
</div>
<div class="intel-stat-card" style="min-width:180px">
<span class="label">Embeddings generated</span>
<span class="value" id="rate-embeddings"></span>
</div>
</div>
</div>
<div style="display:flex; gap:32px; flex-wrap:wrap; padding-top:4px">
<div>
<div class="section-heading">By source</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>
<tbody id="sourceTable"></tbody>
</table>
</div>
</div>
<div>
<div class="section-heading">By content status</div>
<div class="table-wrap" style="width:auto; min-width:180px">
<table style="width:auto">
<thead><tr><th>Status</th><th style="text-align:right">Count</th></tr></thead>
<tbody id="statusTable"></tbody>
</table>
</div>
</div>
</div>
</main>
<div id="toast"><span class="toast-dot"></span><span id="toast-msg"></span></div>
<script src="/admin/assets/js/app.js"></script>
<script src="/admin/assets/js/stats.js"></script>
</body>
</html>