{% include "_header.html" %}

🔮 Prévisions — « on finit quand ? »

Le tableau de bord des jalons, tous projets confondus, trié par risque : l'écart entre la date estimée (au débit réel du journal) et l'échéance. Réponse honnête — fourchettes plutôt que faux chiffres précis, et aucune prévision sans historique de fermetures.

🎯 {{ summary.total }} jalon(s) ouvert(s) {% if summary.late %}⚠️ {{ summary.late }} en retard à ce rythme{% endif %} {% if summary.ontime %}✅ {{ summary.ontime }} dans les temps{% endif %}

{% if rows %} {% for row in rows %} {% endfor %}
Projet Jalon Échéance Progression ETA Écart Débit / sem.
{{ row.project }} {{ row.title }} {{ row.due_label }} {% if row.total %}
{{ row.closed }}/{{ row.total }} {% else %}—{% endif %}
{{ row.eta or '—' }} {% if row.verdict == 'late' %} ⚠️ +{{ row.gap_days }} j {% elif row.verdict == 'ontime' %} ✅ dans les temps{% if row.gap_days is not none and row.gap_days < 0 %} ({{ -row.gap_days }} j d'avance){% endif %} {% elif row.verdict == 'nodue' %} sans échéance {% else %} pas d'ETA {% endif %} {{ row.throughput if row.throughput is not none else '—' }}
{% else %}

Aucun jalon ouvert dans les projets actifs. Crée des jalons dans Gitea pour piloter par échéances.

{% endif %}

📈 Débit par projet

{% for project in projects %}
{% for bar in project.bars %} {% set px = (bar.h * 0.42)|round|int %} {{ bar.label }} : {{ bar.count }} fermée(s) {% endfor %}
{% if project.stats %}

Débit : {{ project.stats.avg }} / semaine (min {{ project.stats.min }}, max {{ project.stats.max }})

{% else %}

Débit : pas assez d'historique.

{% endif %}

Restant ouvert : {{ project.remaining }}{% if project.eta_label %} · 🔮 backlog {{ project.eta_label }}{% endif %}

{% else %}

Aucun projet actif.

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