Niveau configurable via LOG_LEVEL (défaut DEBUG). Les erreurs de config
JSON invalide remontent maintenant un message clair (fichier + position)
au lieu d'un JSONDecodeError brut.
Ajoute le bloc "smtp" (host, port, identifiants, TLS) dans config.json,
plus fiable et plus simple à opérer qu'une livraison directe au MX du
destinataire. data/config.json n'est plus versionné (secrets), remplacé
par data/config.example.json.
Calcule les heures travaillées et cibles d'entrée/sortie même quand une
demi-journée est en cours (pas encore de pointage de sortie), au lieu
d'attendre la fin de journée. Ajoute un endpoint /refresh pour
rafraîchir l'affichage sans repointer. Désambiguïse les libellés de
semaine sur plusieurs années et force TZ=Europe/Paris dans le conteneur.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Auth cookie simple (SSO-ready) : login/logout, redirection si non authentifié
- Données isolées par utilisateur dans /data/users/{user_id}/
- Migration automatique des données legacy au premier login
- Page classement avec podium et tableau comparatif (score, précision zéro, conformité)
- Nav mise à jour : Classement, affichage utilisateur courant, déconnexion
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>
- Nouvelles colonnes : Δ sem. (solde cumulé semaine) et Fin cible (heure de
sortie aprem optimale pour 0h suppl. en fin de semaine)
- Δ sem. n'est affiché que quand la journée est complète et la chaîne de jours
ininterrompue (pas de saut de jour non saisi)
- Fin cible disparaît quand la journée est validée (passée/complète)
- Delta = "—" pour les jours non travaillés (futur ou congé jour)
- Indicateur warn (fond rouge) sur matin/aprem si horaires < minimum
(matin 09:00→12:00, aprem 14:00→17:00) ; mise à jour live via JS
- Suppression du solde global (3 cartes au lieu de 4)
- Tableau sans largeurs fixes + container 1100 px pour éviter scroll
horizontal sur écrans normaux ; touch-scroll conservé sur mobile
- Base reste 39h/semaine (7h48/jour)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
App web de suivi des heures de travail (FastAPI + HTMX + JSON plats).
- Saisie inline par semaine avec bouton ✓ par ligne
- Congés MA/AM/J avec coloration cellule et mise à jour live via OOB HTMX
- Import fichier ODS badgeuse
- Solde semaine et solde global recalculés à la volée
- Design "ledger" écru, DM Mono, zéro border-radius
- Déploiement Docker sur port 8000
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>