diff --git a/app/templates/project.html b/app/templates/project.html new file mode 100644 index 0000000..792c67b --- /dev/null +++ b/app/templates/project.html @@ -0,0 +1,129 @@ + + + + + + {{ full_name }} — Projet · Kanbante + + + + + {% include "_header.html" %} + +
+
+
+

📦 {{ repo_info.name }}

+

{{ owner }} · {{ repo_info.description or 'Aucune description dans Gitea.' }}

+
+ {% if health_dot %} + + Santé du flux + + {% endif %} +
+ +
+ 📋 Ouvrir le board + ⚡ Capture + 📥 Triage + 🩺 Santé + 🔮 Prévisions + 🖥️ Wallboard + {% if repo_info.html_url %} + 🔗 Gitea ↗ + {% endif %} +
+ +
+
+

🎯 Jalons ouverts

+ {% if milestones %} + {% for ms in milestones %} +
+
+ {{ ms.title }} + {% if ms.due_label %}{{ '⚠️ ' if ms.late }}échéance {{ ms.due_label }}{% endif %} +
+ {% if ms.total %} +
+
{{ ms.closed }}/{{ ms.total }} terminées{% if ms.eta_label %} · 🔮 {{ ms.eta_label }}{% endif %}
+ {% else %} +
Aucune issue dans ce jalon pour le moment.
+ {% endif %} +
+ {% endfor %} + {% else %} +

Aucun jalon ouvert. Les jalons se créent dans Gitea — le board et le récit de sprint s'appuient dessus.

+ {% endif %} +
+ +
+

🩺 Santé du flux

+ {% if health %} +
    +
  • 📂 {{ health.open_count }} cartes ouvertes
  • + {% if health.slowest %} +
  • 🐢 Goulot : {{ COLUMN_LABELS[health.slowest.column] }} — séjour médian {{ health.slowest.median_days }} j
  • + {% else %} +
  • 🐢 Pas encore de goulot mesurable (historique trop court).
  • + {% endif %} +
  • 🧟 Zombies (≥ {{ health.zombie_days }} j sans activité) : {{ health.zombies|length }}
  • +
+ {% if health.zombies %} +
    + {% for z in health.zombies[:5] %} +
  • #{{ z.number }} {{ z.title }} · {{ z.column_label }} · {{ z.days_inactive }} j
  • + {% endfor %} +
+ {% endif %} +

Détail de la santé →

+ {% else %} +

Santé indisponible pour le moment.

+ {% endif %} +
+ +
+

🔮 Prévisions

+ {% if throughput %} +
    +
  • Débit : {{ throughput.avg }} fermetures / semaine en moyenne (min {{ throughput.min }} · max {{ throughput.max }}, 4 dernières semaines complètes)
  • +
  • Issues ouvertes : {{ repo_info.open_issues_count or 0 }}
  • +
+ {% else %} +

Pas assez d'historique de fermetures pour prévoir — le journal se remplit au fil des cartes terminées.

+ {% endif %} +

Toutes les prévisions →

+
+ +
+

🕘 Activité récente

+ {% if events %} +
    + {% for e in events %} +
  • {{ EVENT_ICONS.get(e.event_type, '•') }} #{{ e.issue_number }} — {{ e.event_type }}{% if e.to_column %} → {{ COLUMN_LABELS.get(e.to_column, e.to_column) }}{% endif %} · {{ e.created_at[:16].replace('T', ' ') }}
  • + {% endfor %} +
+ {% else %} +

Aucun événement du journal pour ce projet pour le moment.

+ {% endif %} +

Journal complet →

+
+ +
+

📝 Notes du projet

+ {% if notes %} +
{{ notes }}
+ {% else %} +

Aucune note. Les notes s'écrivent depuis le panneau « 🗒️ Notes » du board et vivent avec le projet.

+ {% endif %} +

Ouvrir le board pour éditer →

+
+
+
+ + +{% include "_palette.html" %} + + +