Préconisations d'horaire : cascade d'avance et correctif de double comptage
Une avance que les départs du soir ne peuvent pas écouler (plancher de
présence) s'écoule désormais en cascade miroir du rattrapage : arrivées
du matin retardées, puis retours de midi, toujours bornés par les plages
de présence.
Une demi-journée en cours qui dépasse son nominal (ex. sortie de midi
oubliée) comptait son temps écoulé deux fois : suivre les cibles
sur-livrait jusqu'à 1h45 par semaine. Le créneau saturé propose
maintenant « sortir maintenant » et l'écart se reporte sur les autres
créneaux ; plus de retard fantôme affiché.
Le README liste désormais l'ensemble des règles de préconisation.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
This commit is contained in:
36
README.md
36
README.md
@ -33,17 +33,33 @@ La semaine cible est **39h** (7h48 / jour). Les directives imposent des plages d
|
||||
Ces horaires sont réglables par utilisateur depuis la page **Réglages** de l'app (voir
|
||||
[Configuration](#configuration)).
|
||||
|
||||
Le matin n'est **jamais** touché : sa durée nominale est fixe, et si elle ne rentre pas
|
||||
avant la pause déjeuner, le surplus est reporté sur l'après-midi du même jour. Quand un
|
||||
écart hebdomadaire apparaît, il est **réparti uniquement sur les heures de départ du
|
||||
soir** des demi-journées restantes (répartition égale, recalculée à chaque fois qu'un
|
||||
départ atteint sa limite) :
|
||||
- un **retard** repousse les départs — d'abord dans la marge de confort `depart_vise`,
|
||||
puis au-delà si besoin (jusqu'à minuit) ;
|
||||
- une **avance** avance les départs, mais jamais en dessous du minimum de présence de
|
||||
l'après-midi.
|
||||
Le moteur de préconisations vise un **solde à 0 en fin de semaine** : l'écart entre
|
||||
heures dues et heures déjà travaillées (temps écoulé des demi-journées en cours déduit)
|
||||
est réparti à parts égales sur les demi-journées restantes. Les règles, dans l'ordre :
|
||||
|
||||
Si le rythme normal suffit déjà à rentrer dans les clous, aucune préconisation n'est affichée.
|
||||
1. **Créneaux** : chaque demi-journée non pointée (entrée + sortie) et non congéfiée
|
||||
reste à planifier, y compris les jours passés — la saisie après coup est admise.
|
||||
2. **Le matin n'est jamais ajusté** par l'écart hebdomadaire : arrivée à l'heure visée
|
||||
(`arrivee_visee`, au plus tôt l'heure de retour après repos d'astreinte), sortie au
|
||||
nominal plafonné à la pause de midi. Le nominal matin qui ne tient pas avant la
|
||||
pause **bascule sur l'après-midi du même jour** (s'il est encore ouvert).
|
||||
3. **Retard** — trois leviers en cascade : repousser les **départs du soir** (d'abord
|
||||
dans la marge du départ visé `depart_vise`, puis jusqu'à minuit) ; sinon avancer
|
||||
les **arrivées du matin** (jamais avant le début de présence matin) ; sinon avancer
|
||||
les **retours de midi** (jamais avant la fin de présence matin, ni avant la sortie
|
||||
du matin pointée, ni avant l'heure qu'il est).
|
||||
4. **Avance** — cascade miroir : avancer les **départs du soir** (jamais sous la fin de
|
||||
présence après-midi) ; sinon retarder les **arrivées du matin** (jamais après le
|
||||
début de présence matin) ; sinon retarder les **retours de midi** (jamais après le
|
||||
début de présence après-midi — la pause s'allonge d'autant).
|
||||
5. **Journée en cours** : une demi-journée commencée (entrée pointée sans sortie) se
|
||||
planifie depuis son heure d'entrée, son temps déjà écoulé est réintégré au plan ;
|
||||
s'il atteint ou dépasse le nominal du créneau (**créneau saturé**, ex. sortie de
|
||||
midi oubliée), la cible devient « sortir maintenant » et l'écart se reporte sur les
|
||||
autres créneaux — jamais de double comptage du temps déjà fait.
|
||||
6. Une entrée déjà pointée n'est jamais déplacée, et aucune cible du jour courant ne
|
||||
recommande une heure déjà passée. Ce qui ne tient dans aucune plage reste visible
|
||||
dans les compteurs « reste à faire » / avance.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user