- Nouvelle page /stats avec histogrammes de distribution par créneau horaire (entrée/sortie matin et après-midi) - Camemberts animés de conformité aux directives (≤09:00, ≥12:00, ≤14:00, ≥17:00) globale, par slot et par période (mois, sem. N-1) - Onglets Tout / 1 an / 3 mois / 1 mois : filtrage côté client avec recalcul μ, σ, n et conformité en temps réel - Graphique des soldes hebdomadaires (barres animées, toutes semaines sur l'axe X en rotation -45°, semaines partielles distinctes) - Clic sur un graphique → modal plein écran avec axe X détaillé (15 min) - Légende σ / n / directive / moyenne sur chaque histogramme - Journées incomplètes exclues des stats ; heures dues retirées du solde - Lien "Statistiques" dans la nav Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pointeuse-optimisator
Saisie des horaires de travail avec calcul en temps réel de l'heure de sortie optimale pour finir la semaine à exactement 0h d'heures supplémentaires.
Principe
La semaine cible est 39h (7h48 / jour). Les directives imposent des plages de présence minimum :
| Demi-journée | Plage minimale |
|---|---|
| Matin | 09:00 → 12:00 |
| Après-midi | 14:00 → 17:00 |
L'outil calcule — sans arrondi — l'heure précise à laquelle partir chaque jour pour que le total de la semaine tombe pile sur 39h00.
Ce que tu vois dans le tableau
| Colonne | Ce qu'elle dit |
|---|---|
| Travaillé | Heures effectivement saisies ce jour |
| Δ jour | Écart par rapport aux 7h48 dus (affiché dès qu'une heure est enregistrée) |
| Δ sem. | Solde cumulé depuis lundi — visible uniquement quand la journée est complète et sans jour manquant |
| Fin cible | L'heure de sortie aprem pour finir la semaine à 0h sup |
Les plages qui ne respectent pas les minimums sont signalées en rouge dès la saisie.
Lancement
docker compose up -d
Ouvre http://localhost:8000.
Les données (pointages, congés) sont stockées dans data/ et ignorées par git.
Seul data/config.json est versionné.
Configuration
data/config.json :
{
"heures_jour": 7.8
}
7.8 = 7h48 = 39h ÷ 5 jours. Modifier cette valeur recentre tous les calculs.
Congés
Trois boutons par ligne : MA (matin), AM (après-midi), J (journée entière).
Ils réduisent les heures dues et recalculent la Fin cible pour les jours restants.
Stack
FastAPI · HTMX · Jinja2 · fichiers JSON · Docker
