Rend les plages horaires et les rappels ntfy configurables, supprime le

classement, ajoute une suite de tests pytest

- calcul.py: matin_debut/fin, aprem_debut/fin et pause_dejeuner_fin sont
  paramétrables via config.json > plages (moteur de calcul de l'heure de
  sortie optimale inclus, pas seulement l'affichage). Défauts identiques
  à l'ancien comportement, validé par la suite de tests.
- stats.py: les seuils de conformité utilisent la même config.
- main.py/templates: warn de saisie et suffixes de cible dynamiques.
- Rappels ntfy: serveur, topic et plage horaire (rappel_debut_h/fin_h)
  configurables par utilisateur depuis /settings, plus en dur dans le code.
- Page classement supprimée (pas de compétition entre utilisateurs).
- Nouvelle suite pytest (app/tests/), à lancer via
  `docker compose run --rm pointeuse pytest -v`.
This commit is contained in:
Antoine
2026-07-17 22:40:55 +02:00
parent 0b47e4a625
commit c2d7d0e3ac
19 changed files with 419 additions and 415 deletions

24
app/tests/conftest.py Normal file
View File

@ -0,0 +1,24 @@
"""Freezes calcul.py's notion of "today" for deterministic tests."""
import datetime as dt_module
import pytest
import calcul
class FrozenDatetime(dt_module.datetime):
_frozen = dt_module.datetime(2026, 7, 17, 10, 30) # vendredi
@classmethod
def today(cls):
return cls._frozen
@classmethod
def now(cls, tz=None):
return cls._frozen
@pytest.fixture
def freeze_today(monkeypatch):
monkeypatch.setattr(calcul, "datetime", FrozenDatetime)
return FrozenDatetime._frozen