Ajoute les astreintes : saisie de la fin de dernière activité, retour au bureau décalé de 11h de repos

Un nouveau bouton AS marque un jour d'astreinte. Ce jour et son lendemain,
une saisie « Fin activité » enregistre l'heure de fin de la dernière
intervention hors horaires (elle peut être le matin si la nuit a dépassé
minuit). L'app en déduit l'heure de retour au bureau (fin + 11h de repos
consécutif) et retire du décompte de la semaine toute la présence avant
cette heure : heures dues réduites, présence pointée avant le retour non
comptée, préconisations Fin cible démarrées à l'heure de retour sans
avertissement de retard, demi-journée entièrement en repos considérée
comme remplie. Les exports .ods gagnent les colonnes Astreinte et Retour,
et les stats n'ont plus les retards liés au repos.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
Jacquin Antoine
2026-09-08 22:05:10 +02:00
parent c31fcd28ec
commit 065d73e15c
9 changed files with 665 additions and 58 deletions

View File

@ -179,6 +179,37 @@ demi-journées restantes.
---
## Astreinte & repos de 11h
Le bouton **AS** marque un jour d'astreinte. Ce jour et son lendemain (la nuit qui
suit), une ligne de saisie supplémentaire apparaît sous l'après-midi :
- **Fin activité** : l'heure de fin de la **dernière activité** hors horaires de
travail. Elle peut tomber le matin (intervention ayant dépassé minuit) : saisie
sur le jour d'astreinte, une fin matinale (ex: 06:00) désigne la fin de sa nuit ;
saisie sur le lendemain, une fin matinale désigne la nuit de la veille.
L'app en déduit l'heure de retour au bureau : **fin + 11h de repos consécutif**
(exigées par période de 24h), affichée sous le champ (« retour ≥ 13:00 »). Fin
23:30 → retour 10:30 le lendemain ; fin 02:00 → retour 13:00 ; fin 06:00 → retour
17:00. Un repos qui se termine avant l'ouverture ne contraint rien.
À partir de cette heure de retour, tout ce qui la précède sur la journée quitte le
décompte de la semaine :
- la présence obligatoire avant l'heure de retour est retirée des heures dues
(ex: retour 13:00 → la plage 09:00-12:00 ne compte plus) ;
- une présence pointée avant l'heure de retour ne compte pas dans le travaillé ;
- les préconisations **Fin cible** démarrent à l'heure de retour (arrivée du matin
décalée d'autant, sans avertissement de retard) ;
- une demi-journée entièrement couverte par le repos est considérée comme remplie.
La fin d'activité ne s'applique que les jours qualifiés (astreinte ou lendemain) :
partout ailleurs elle est ignorée. Les colonnes **Astreinte** (fin saisie) et
**Retour** (calculé) apparaissent dans les exports `.ods`.
---
## Stack
`FastAPI` · `HTMX` · `Jinja2` · fichiers JSON · `Docker`