Files
proxy_tmdb/public/admin.html

115 lines
4.8 KiB
HTML
Raw Normal View History

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="#0b1220">
<title>proxytmdb · Admin</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%2301b4e4'/%3E%3Ctext x='16' y='22' font-family='sans-serif' font-size='18' font-weight='bold' text-anchor='middle' fill='%23000'%3Et%3C/text%3E%3C/svg%3E">
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="/admin.css">
</head>
<body class="admin">
<header class="topbar">
<a class="brand" href="/admin">
<span class="brand-mark">t</span>
<span class="brand-text">proxytmdb · <span style="color:var(--text-muted)">admin</span></span>
</a>
<nav class="tabs" id="tabs">
<button type="button" class="tab active" data-tab="dashboard">Tableau de bord</button>
<button type="button" class="tab" data-tab="metrics">Métriques</button>
<button type="button" class="tab" data-tab="files">Fichiers</button>
</nav>
<div class="topbar-actions">
<a class="nav-link" href="/">← Retour</a>
<a class="nav-link" href="/admin?logout=1">Se déconnecter</a>
</div>
</header>
<main id="main-admin">
<section id="view-dashboard" class="view active">
<div class="stat-grid">
<div class="stat-card" id="card-cron">
<h3>Dernier cron</h3>
<div class="stat-value" id="cron-status"></div>
<div class="stat-sub" id="cron-when"></div>
<div class="stat-sub" id="cron-duration"></div>
</div>
<div class="stat-card" id="card-movies">
<h3>Films (TMDB)</h3>
<div class="stat-value" id="movies-count"></div>
<div class="stat-sub"><span id="movies-imdb"></span> avec mapping IMDb</div>
</div>
<div class="stat-card" id="card-tv">
<h3>Séries (TMDB)</h3>
<div class="stat-value" id="tv-count"></div>
<div class="stat-sub"><span id="tv-imdb"></span> avec mapping IMDb</div>
</div>
<div class="stat-card" id="card-imdb">
<h3>Notes IMDb</h3>
<div class="stat-value" id="imdb-count"></div>
<div class="stat-sub">chargées en mémoire</div>
</div>
<div class="stat-card" id="card-cache">
<h3>Cache recherche</h3>
<div class="stat-value" id="cache-hit-rate"></div>
<div class="stat-sub"><span id="cache-hits"></span> hits · <span id="cache-misses"></span> misses</div>
</div>
<div class="stat-card" id="card-process">
<h3>Process</h3>
<div class="stat-value" id="process-memory"></div>
<div class="stat-sub" id="process-uptime"></div>
<div class="stat-sub" id="process-node"></div>
</div>
</div>
<section class="panel">
<h2>Utilisation disque</h2>
<div id="disk-bars" class="disk-bars"></div>
</section>
<section class="panel">
<h2>Résumé du dernier cron</h2>
<div class="cron-summary" id="cron-summary"></div>
<details class="cron-log-wrapper">
<summary>Fin du log du cron (50 dernières lignes)</summary>
<pre id="cron-log" class="cron-log"></pre>
</details>
</section>
</section>
<section id="view-metrics" class="view">
<div class="panel">
<h2>HTTP · requêtes par route</h2>
<table class="tbl" id="tbl-http"><thead><tr><th>Méthode</th><th>Route</th><th>Status</th><th>Requêtes</th></tr></thead><tbody></tbody></table>
</div>
<div class="panel">
<h2>HTTP · p50 / p95 par route</h2>
<table class="tbl" id="tbl-http-latency"><thead><tr><th>Méthode</th><th>Route</th><th>p50 (ms)</th><th>p95 (ms)</th><th>Total</th></tr></thead><tbody></tbody></table>
</div>
<div class="panel">
<h2>Compteurs internes</h2>
<div class="kv" id="kv-counters"></div>
</div>
<div class="panel">
<h2>Process Node</h2>
<div class="kv" id="kv-process"></div>
</div>
<p class="footnote">Données brutes format Prometheus disponibles sur <a href="/metrics" target="_blank">/metrics</a>.</p>
</section>
<section id="view-files" class="view">
<div class="panel">
<h2>Fichiers du projet</h2>
<p class="footnote">Cliquer ouvre le fichier servi statiquement sous <code>/admin/files/</code>.</p>
<table class="tbl" id="tbl-files"><thead><tr><th>Nom</th><th>Taille</th><th>Modifié</th></tr></thead><tbody></tbody></table>
</div>
</section>
</main>
<footer class="footer"><span id="refresh-status"></span></footer>
<script type="module" src="/admin.js"></script>
</body>
</html>