Commit Graph

18 Commits

Author SHA1 Message Date
0b47e4a625 Corrige le rendu de la page mot de passe, masque la nav si non connecté,
réduit le score spam des emails, et rend le niveau de log configurable

- Les styles .login-* étaient définis uniquement dans login.html, donc
  set_password.html s'affichait sans aucun style. Déplacé dans base.html.
- La nav affichait les liens même sans session active.
- mail.py ajoute Message-ID/Date et encode en quoted-printable (au lieu
  de base64) pour réduire le score spam (MISSING_MID, MISSING_DATE,
  MIME_BASE64_TEXT).
- log_level devient une directive de config.json plutôt qu'une variable
  d'environnement.
- README: section démarrage rapide (copie de config.example.json,
  compose.override.yml pour les surcharges locales).
2026-07-17 22:16:48 +02:00
2d4179169b Ajoute une journalisation détaillée (login, mail, présence, rappels)
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.
2026-07-17 22:03:10 +02:00
e6a523f76f Envoie les emails via un relais SMTP configurable plutôt qu'en direct-to-MX
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.
2026-07-17 21:46:52 +02:00
1d9380736e Retire l'UID/GID configurable du compose 2026-07-17 21:17:23 +02:00
49f018e65c Renomme le service compose en "pointeuse" et rend l'UID/GID configurable via .env 2026-07-17 21:10:37 +02:00
459a9b4cc5 Documente la config des rappels pour Android et Ubuntu 2026-07-17 21:00:37 +02:00
1ab1cf27c1 Ajoute les rappels de pointage via ntfy et détection de présence Tasker
Notifie l'utilisateur toutes les 5 min s'il est présent dans les locaux
sans avoir pointé le matin, ou parti sans avoir dépointé la sortie.
2026-07-17 20:45:27 +02:00
47c05ee7f1 Merge branch 'feature/cibles-temps-reel' into 'main'
Projette les cibles en temps réel et corrige le fuseau horaire

See merge request antoine/pointeuse-optimisator!1
2026-07-16 14:14:04 +02:00
761a86986a Projette les cibles en temps réel et corrige le fuseau horaire
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>
2026-07-16 14:12:03 +02:00
b6e0fcd925 Implémente système multi-utilisateurs avec classement
- 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>
2026-06-24 17:29:07 +02:00
1a34bff1c6 Ajoute page statistiques avec graphiques et onglets de période
- 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>
2026-06-24 17:09:37 +02:00
33a28dc4d6 Ajoute capture d'écran dans le README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:56:24 +02:00
a9481c010d Ajoute README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:54:25 +02:00
21b473aa88 Track data/config.json, exclut uniquement les données personnelles
data/config.json versionné pour qu'un clone fraîche soit directement
exploitable. Seuls data/pointages/ et data/conges.json restent ignorés.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:50:16 +02:00
66b66354fe Complète .gitignore : données personnelles, CSV, backups JSON, venv
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:43:29 +02:00
2a217a3331 Supprime l'import ODS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:38:02 +02:00
6258fd3662 Ajoute colonnes Δ sem. / Fin cible, supprime solde global, indicateurs minima
- 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>
2026-06-24 15:35:17 +02:00
6f6c7f154e Initial commit — décompte horaire
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>
2026-06-24 15:08:32 +02:00