Travaillé
{{ result.total_travaille }}
Dû par jour
{{ result.heures_jour }}
Dû cette semaine
{{ result.total_du }}
Solde semaine
{% if result.solde_min > 0 %}+{% endif %}{{ result.solde }}
{% if result.slots_restants > 0 %}
{% if result.extra_min > 0 %} Reste à faire : {{ result.reste }} sur {{ result.slots_restants }} demi-journée{{ 's' if result.slots_restants > 1 else '' }} restante{{ 's' if result.slots_restants > 1 else '' }} — à rattraper : +{{ result.extra }} (~+{{ result.moyenne_extra }} chacune) {% elif result.avance_min > 0 %} Reste à faire : {{ result.reste }} sur {{ result.slots_restants }} demi-journée{{ 's' if result.slots_restants > 1 else '' }} restante{{ 's' if result.slots_restants > 1 else '' }} — avance à écouler : {{ result.avance }}, répartie sur les départs du soir pour finir la semaine à 0. {% elif result.reste_min > 0 %} Reste à faire : {{ result.reste }} sur {{ result.slots_restants }} demi-journée{{ 's' if result.slots_restants > 1 else '' }} restante{{ 's' if result.slots_restants > 1 else '' }} — le rythme habituel suffit, rien à rattraper. {% else %} Vous êtes à jour ou en avance — rien à rattraper cette semaine. {% endif %}
{% elif result.solde_min < 0 %}
Semaine terminée avec {{ result.solde }} de manque — complétez ou corrigez les saisies, ou rattrapez sur une autre semaine.
{% endif %} {% if result.astreinte and result.astreinte.actif %}
Astreinte — compteur séparé, hors heures de semaine
Décompte par durée réelle arrondie au quart d'heure supérieur : 2, 5 ou 12 min réelles → 15 min ; 22 ou 28 → 30 min — même si l'arrondi ne tombe pas juste sur un quart d'heure de l'horloge (:00, :15, :30, :45). Les minutes réelles communes à deux interventions ne comptent qu'une seule fois. Ex. 22:39 → 23:49 = 1h10 réelles → arrondies à 1h15.
{% for j in result.astreinte.jours %}
{{ j.jour }} {{ j.date[8:] }}/{{ j.date[5:7] }} {% if j.forfait_min %}forfait {{ j.forfait_h }}{% endif %} {% if j.total_min %}astreinte {{ j.total_h }} → {{ j.total_pondere_h }} pondérées{% endif %}
{% for ev in j.events %}
{{ ev.debut }} → {{ ev.fin }} {% if ev.desc %}{{ ev.desc }}{% endif %} {% if ev.tranches %} {{ ev.reel_h }} réelles{% if ev.min > ev.reel_min %} → arrondi {{ ev.min_h }}{% endif %} ({{ ev.arrondi_debut }} → {{ ev.arrondi_fin }}) {% for d in ev.details %}{{ d.nom }} ×{{ d.facteur_txt }}{% if not loop.last %} + {% endif %}{% endfor %} pondéré → {{ ev.pondere_h }} {% else %} 0 min — déjà compté {% endif %}
{% endfor %}
{% endfor %}
{% for c in result.astreinte.categories %}{{ c.nom }} : {{ c.min_h }} ×{{ c.facteur_txt }} = {{ c.pondere_h }}{% endfor %} {% if result.astreinte.total_forfait_min %}forfaits {{ result.astreinte.total_forfait_h }} (hors heures travaillées){% endif %} total {{ result.astreinte.total_h }} → {{ result.astreinte.total_pondere_h }} pondérées
{% endif %}