format_standup_text + _standup_data (journal de la veille, focus du jour, vieillissantes QA/Révision); page /standup copiable, /api/standup; inclusion optionnelle au briefing ntfy (KANBANTE_BRIEFING_INCLUDE_STANDUP).
95 lines
4.9 KiB
HTML
95 lines
4.9 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>Digest hebdo — Kanbante</title>
|
|
<link rel="stylesheet" href="/static/css/style.css">
|
|
</head>
|
|
<body>
|
|
<header class="app-header">
|
|
<a href="/" class="logo">📋 Kanbante</a>
|
|
<nav class="nav-pills">
|
|
<a href="/" class="nav-pill">🏠 Projets</a>
|
|
<a href="/focus" class="nav-pill">🎯 Focus</a>
|
|
<a href="/today" class="nav-pill">🌅 Aujourd'hui</a>
|
|
<a href="/my" class="nav-pill">👤 Mes issues</a>
|
|
<a href="/activity" class="nav-pill">📰 Activité</a>
|
|
<a href="/briefing" class="nav-pill">📊 Briefing</a>
|
|
<a href="/standup" class="nav-pill">🗣️ Standup</a>
|
|
<a href="/search" class="nav-pill">🔍 Recherche</a>
|
|
<a href="/capture" class="nav-pill">⚡ Capture</a>
|
|
<a href="/digest" class="nav-pill active">🧠 Digest</a>
|
|
<a href="/wall" class="nav-pill">🖥️ Wallboard</a>
|
|
<button type="button" class="nav-pill palette-trigger" title="Palette de commandes (Ctrl+K)">⌨️ Ctrl K</button>
|
|
</nav>
|
|
</header>
|
|
|
|
<main class="focus-main">
|
|
<section class="briefing-card">
|
|
<h1>🧠 Digest hebdo → ObsiGate</h1>
|
|
<p>Chaque semaine, Kanbante compose le résumé de l'activité (livré, en cours, chiffres du journal) en une note markdown.
|
|
L'envoi vers ObsiGate est une écriture dans un autre système : <strong>il n'a jamais lieu sans ton approbation ici</strong>.</p>
|
|
{% if last_result %}<p>🧾 Dernier envoi : <code>{{ last_result }}</code></p>{% endif %}
|
|
{% if digest_time %}<p>🕐 Composition automatique : jour {{ digest_weekday }} à {{ digest_time }} (notification ntfy, envoi manuel ensuite).</p>{% endif %}
|
|
</section>
|
|
|
|
{% if banner %}
|
|
<div class="briefing-card"><p>{{ banner }}</p></div>
|
|
{% endif %}
|
|
|
|
{% if tools is not none %}
|
|
<div class="briefing-card">
|
|
<h2>🛠️ Outils du serveur MCP ObsiGate</h2>
|
|
{% if tools %}
|
|
<ul>
|
|
{% for tool in tools %}<li><code>{{ tool }}</code></li>{% endfor %}
|
|
</ul>
|
|
<p>Choisis l'outil de création de note, puis définis <code>KANBANTE_OBSIGATE_MCP_TOOL</code> (et au besoin <code>KANBANTE_OBSIGATE_MCP_ARGS</code>, gabarit JSON avec <code>{title}</code> et <code>{content}</code>).</p>
|
|
{% else %}
|
|
<p>Le serveur répond, mais n'expose aucun outil.</p>
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="briefing-card">
|
|
<h2>📤 Livraison</h2>
|
|
<p>
|
|
ObsiGate (MCP) : {% if obsigate_configured %}<strong>configuré</strong> — <code>{{ obsigate_url }}</code>, outil <code>{{ obsigate_tool or "(à définir)" }}</code>{% else %}non configuré (<code>KANBANTE_OBSIGATE_MCP_URL</code>){% endif %}<br>
|
|
Webhook générique : {% if webhook_configured %}<strong>configuré</strong>{% else %}non configuré (<code>KANBANTE_DIGEST_WEBHOOK_URL</code>){% endif %}
|
|
</p>
|
|
<form method="post" action="/digest/probe" style="display:inline">
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
|
<button type="submit" class="btn-save">🔌 Tester la connexion MCP</button>
|
|
</form>
|
|
<form method="post" action="/digest/send" style="display:inline">
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
|
<input type="hidden" name="target" value="obsigate">
|
|
<button type="submit" class="btn-save">🧠 Envoyer vers ObsiGate</button>
|
|
</form>
|
|
<form method="post" action="/digest/send" style="display:inline">
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
|
<input type="hidden" name="target" value="webhook">
|
|
<button type="submit" class="btn-save">🔗 Envoyer au webhook</button>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="briefing-card">
|
|
<h2>👀 Aperçu du digest de la semaine</h2>
|
|
{% if pending %}
|
|
<pre class="capture-pre">{{ pending }}</pre>
|
|
{% else %}
|
|
<p>Aucun digest en attente. L'aperçu exact est composé au moment de l'envoi (boutons ci-dessus) à partir du journal des 7 derniers jours et de la vue Focus.</p>
|
|
{% endif %}
|
|
</div>
|
|
</main>
|
|
<footer>
|
|
<span>Kanbante v{{ version }} · digest hebdo : composé automatiquement, livré seulement sur approbation</span>
|
|
</footer>
|
|
{% include "_palette.html" %}
|
|
<script src="/static/js/palette.js" defer></script>
|
|
<script src="/static/js/live.js" defer></script>
|
|
</body>
|
|
</html>
|