81 lines
2.9 KiB
HTML
81 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/articles">Articles</a>
|
|
<a href="/admin/events">Events</a>
|
|
<a href="/admin/stats" class="active">Stats</a>
|
|
<a href="/admin/intelligence">Intelligence</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>
|