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).
106 lines
5.0 KiB
HTML
106 lines
5.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>Aujourd'hui — 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 active">🌅 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">🧠 Digest</a>
|
|
<a href="/forecast" class="nav-pill">🔮 Prévisions</a>
|
|
<a href="/rules" class="nav-pill">⚙️ Règles</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="today-main">
|
|
<h1 class="today-title">🌅 {{ date_label }}</h1>
|
|
<p class="today-sub">Trois cartes, pas une de plus. C'est le plan de la journée.</p>
|
|
|
|
{% if picks %}
|
|
<section class="today-picks">
|
|
{% for pick in picks %}
|
|
<article class="today-card{% if pick.state == 'closed' %} done{% endif %}">
|
|
<div class="today-card-top">
|
|
<span class="today-card-repo">{{ pick.repo }}</span>
|
|
<span class="today-card-col">{{ pick.column_label }}</span>
|
|
</div>
|
|
<h2>{% if pick.state == 'closed' %}🎉 {% endif %}#{{ pick.number }} — {{ pick.title }}</h2>
|
|
<div class="today-card-actions">
|
|
<a href="/board/{{ pick.repo }}">📋 Ouvrir le board</a>
|
|
{% if pick.html_url %}<a href="{{ pick.html_url }}" target="_blank" rel="noopener">Gitea ↗</a>{% endif %}
|
|
<button type="button" class="btn-sm" data-unpin data-repo="{{ pick.repo }}" data-number="{{ pick.number }}">📌 Retirer</button>
|
|
</div>
|
|
</article>
|
|
{% endfor %}
|
|
</section>
|
|
{% else %}
|
|
<section class="briefing-card">
|
|
<p>Aucune carte épinglée pour aujourd'hui. Épingle-en jusqu'à 3 depuis un board (bouton 📌 sur les cartes) ou depuis les candidates ci-dessous.</p>
|
|
</section>
|
|
{% endif %}
|
|
|
|
{% if recap %}
|
|
<section class="briefing-card">
|
|
<h2>🌆 Ça a bougé aujourd'hui</h2>
|
|
<ul>
|
|
{% for event in recap %}
|
|
<li>{{ event.created_at[11:16] }} — {{ event.repo_full_name }} #{{ event.issue_number }} : {{ event.event_type }}{% if event.to_column %} → {{ column_labels.get(event.to_column, event.to_column) }}{% endif %}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</section>
|
|
{% endif %}
|
|
|
|
{% if carry_over %}
|
|
<section class="briefing-card">
|
|
<h2>↩️ À reprendre d'hier</h2>
|
|
<ul class="today-list">
|
|
{% for pick in carry_over %}
|
|
<li>
|
|
<span>{{ pick.repo }} #{{ pick.number }} — {{ pick.title }} <em>({{ pick.column_label }})</em></span>
|
|
{% if picks|length < 3 %}<button type="button" class="btn-sm" data-pin data-repo="{{ pick.repo }}" data-number="{{ pick.number }}">📌 Reprendre aujourd'hui</button>{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</section>
|
|
{% endif %}
|
|
|
|
{% if candidates and picks|length < 3 %}
|
|
<section class="briefing-card">
|
|
<h2>🎯 Candidates (encours actuel)</h2>
|
|
<ul class="today-list">
|
|
{% for card in candidates %}
|
|
<li>
|
|
<span>{{ card.repo }} #{{ card.number }} — {{ card.title }} <em>({{ card.column_label }})</em></span>
|
|
<button type="button" class="btn-sm" data-pin data-repo="{{ card.repo }}" data-number="{{ card.number }}">📌 Épingler</button>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</section>
|
|
{% endif %}
|
|
</main>
|
|
<footer>
|
|
<span>Kanbante v{{ version }} · le focus du jour se réinitialise chaque matin — les cartes non terminées reviennent en proposition</span>
|
|
</footer>
|
|
{% include "_palette.html" %}
|
|
<script src="/static/js/palette.js" defer></script>
|
|
<script src="/static/js/today.js" defer></script>
|
|
<script src="/static/js/live.js" defer></script>
|
|
</body>
|
|
</html>
|