Partiel _header.html unique pour les 19 pages (fin des copies qui dérivaient): desktop une ligne — primaires + menu Plus + Ctrl K, page active déduite du gabarit dans render(); mobile ≤900px burger + panneau ≥44px, Échap/clic extérieur; wallboard sans header et triage sur le même partiel. nav.js partagé.
42 lines
2.0 KiB
HTML
42 lines
2.0 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr" data-theme="dark">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="csrf-token" content="{{ csrf_token }}">
|
|
<title>Santé du flux — Kanbante</title>
|
|
<link rel="stylesheet" href="/static/css/style.css">
|
|
</head>
|
|
<body>
|
|
{% include "_header.html" %}
|
|
|
|
<main class="focus-main">
|
|
<section class="briefing-card">
|
|
<h1>🩺 Santé du flux</h1>
|
|
<p>Les boards montrent l'état ; cette page montre la <strong>santé</strong> : quelle colonne accumule (temps médian passé dans chaque colonne, d'après le journal) et quelles cartes sont devenues des <strong>zombies</strong> (aucune activité depuis le seuil configuré).</p>
|
|
</section>
|
|
|
|
{% for project in projects %}
|
|
<section class="briefing-card forecast-card">
|
|
<h2>📂 {{ project.full_name }} <small>({{ project.open_count }} ouverte(s))</small></h2>
|
|
{% if project.slowest %}
|
|
<p>🐌 Colonne la plus lente : <strong>{{ project.column_labels[project.slowest.column] }}</strong> — médiane {{ project.slowest.median_days }} j ({{ project.slowest.count }} séjours mesurés)</p>
|
|
{% else %}
|
|
<p>🐌 Pas encore assez de séjours mesurés pour nommer un goulot.</p>
|
|
{% endif %}
|
|
<p>🧟 Zombies (≥ {{ project.zombie_days }} j sans activité) : <strong>{{ project.zombies|length }}</strong>
|
|
— <a href="/health/{{ project.full_name }}">voir le détail et agir →</a></p>
|
|
</section>
|
|
{% else %}
|
|
<div class="briefing-card"><p>Aucun projet actif.</p></div>
|
|
{% endfor %}
|
|
</main>
|
|
<footer>
|
|
<span>Kanbante v{{ version }} · l'hygiène du flux, mesurée sur le journal — pas au feeling</span>
|
|
</footer>
|
|
{% include "_palette.html" %}
|
|
<script src="/static/js/palette.js" defer></script>
|
|
<script src="/static/js/live.js" defer></script>
|
|
</body>
|
|
</html>
|