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).
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.
Démarrage rapide
Avant le premier lancement, copie et adapte le fichier de config (voir Configuration plus bas) :
cp data/config.example.json data/config.json
Pour surcharger compose.yml localement (ports, variables d'env, volumes...) sans
modifier le fichier versionné, crée un compose.override.yml — il est chargé
automatiquement par docker compose et déjà ignoré par git.
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, comptes) sont stockées dans data/ et ignorées par git.
Seul data/config.example.json est versionné.
Configuration
data/config.json (voir data/config.example.json) :
{
"heures_jour": 7.8,
"log_level": "DEBUG",
"allowed_email_domain": "exemple.fr",
"mail_from": "no-reply@exemple.fr",
"smtp": {
"host": "smtp.exemple.fr",
"port": 587,
"user": "no-reply@exemple.fr",
"password": "change-moi",
"use_tls": true
}
}
heures_jour—7.8= 7h48 = 39h ÷ 5 jours. Modifier cette valeur recentre tous les calculs.log_level—DEBUG,INFO,WARNINGouERROR. Contrôle la verbosité des logs (docker logs).allowed_email_domain— seules les adresses de ce domaine peuvent se connecter.mail_from— adresse expéditrice des emails de connexion.smtp— serveur relais utilisé pour l'envoi (host, port, identifiants, TLS).
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
