Astreinte : repos hebdomadaire de 35h en option (7 jours glissants)

Un week-end d'astreinte fragmenté peut ne contenir aucun trou de 35h
consécutives sans activité : le retour est alors repoussé à dernière
activité + 35h, et toute nouvelle intervention redémarre le décompte.
Désactivé par défaut, activable par compte dans Réglages ; la journée
couverte est créditée comme pour les 11h quotidiennes.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
Jacquin Antoine
2026-09-09 21:49:19 +02:00
parent 77ae115c4f
commit f6fef650a7
6 changed files with 471 additions and 17 deletions

View File

@ -52,7 +52,7 @@
<td class="col-calc" data-label="Travaillé">
<span id="calc-{{ j.date }}-trav">
<span class="calc-num">{{ j.travaille if j.travaille_min else '—' }}</span>
{% if j.couvert_min %}<span class="calc-couvert" title="Présence obligatoire couverte par le repos de 11h ({{ j.couvert_detail }}) : comptée comme effectuée">+{{ j.couvert_h }} repos</span>{% endif %}
{% if j.couvert_min %}<span class="calc-couvert" title="Présence obligatoire couverte par le repos (11h quotidiennes, ou 35h hebdomadaires si activées) ({{ j.couvert_detail }}) : comptée comme effectuée">+{{ j.couvert_h }} repos</span>{% endif %}
</span>
</td>
@ -146,7 +146,7 @@
onclick="asToggle(this)">
<span class="as-caret">▸</span> {{ nb_as }} intervention{{ 's' if nb_as != 1 else '' }}
</button>
{% if j.retour_min is not none %}<span class="as-hint" title="11h de repos consécutif après la dernière activité (durée arrondie au quart d'heure supérieur), retour arrondi au quart d'horloge supérieur : :00, :15, :30 ou :45">retour ≥ {{ j.retour }}</span>{% endif %}
{% if j.retour_min is not none %}<span class="as-hint" title="Repos après la dernière activité : 11h consécutives (quotidien), et 35h sur 7 jours glissants si le repos hebdomadaire est activé (Réglages). Toute intervention pendant le repos redémarre le décompte ; retour arrondi au quart d'horloge supérieur : :00, :15, :30 ou :45">retour ≥ {{ j.retour }}</span>{% endif %}
{% if j.couvert_min %}<span class="as-hint" title="Présence obligatoire couverte par le repos ({{ j.couvert_detail }}) : comptée comme effectuées dans la colonne Travaillé">+{{ j.couvert_h }} de présence comptées</span>{% endif %}
{% if j.forfait_min %}<span class="as-hint" title="Forfait du jour AS déclaré (Réglages) : suivi dans le récapitulatif d'astreinte, hors heures travaillées">forfait {{ j.forfait_h }}</span>{% endif %}
{% if j.astreinte_min %}<span class="as-total" title="Durée réelle des interventions arrondie au quart d'heure supérieur (2, 5 ou 12 min → 15 ; 22 ou 28 → 30), même sans tomber sur un quart d'heure de l'horloge — compteur séparé, hors heures de semaine">astreinte : {{ j.astreinte_h }}</span>{% endif %}

View File

@ -72,6 +72,35 @@
</form>
</div>
{% if plages.astreinte_active %}
<div class="settings-card">
<span class="hist-label">Repos hebdomadaire de 35h</span>
<p class="settings-p">
La loi impose, une fois par période de <b>7 jours glissants</b>, un repos de
<b>35h consécutives</b> (24h de repos hebdomadaire + 11h de repos quotidien).
Un week-end normal le satisfait tout seul ; un week-end d'astreinte fragmenté
par plusieurs interventions, pas forcément. Activée, cette option repousse
l'heure de retour à <b>dernière activité + 35h</b> quand aucune période de
35h sans activité n'existe dans les 7 derniers jours — et toute nouvelle
intervention avant cette échéance <b>redémarre</b> le décompte. La présence
couverte par ce repos est créditée comme effectuée, comme pour les 11h
quotidiennes. Désactivée (défaut), seul le repos de 11h décale le retour.
</p>
{% if repos_hebdo_saved %}
<div class="settings-saved">Enregistré.</div>
{% endif %}
<form method="post" action="/settings/repos-hebdo" class="settings-form">
<label class="settings-check">
<input type="checkbox" name="repos_hebdo_active" value="1" {% if plages.repos_hebdo_active %}checked{% endif %}>
<span>Respecter le repos hebdomadaire de 35h (7 jours glissants)</span>
</label>
<button class="login-btn" type="submit">Enregistrer</button>
</form>
</div>
{% endif %}
{% if plages.astreinte_active %}
<div class="settings-card">
<span class="hist-label">Ratios des heures d'astreinte</span>