Astreinte : préférence personnelle et retour aligné sur les quarts d'horloge

- La gestion des astreintes devient un réglage par compte (Réglages →
  « Gestion des astreintes », actif par défaut) : désactivée, le bouton AS,
  les interventions, forfaits, repos de 11h, récapitulatif, ratios, stats
  et exports n'en parlent plus — sans rien supprimer, réactiver retrouve tout
- L'heure de retour au bureau tombe désormais toujours sur un quart d'heure
  d'horloge fixe (:00, :15, :30, :45), arrondie au supérieur après les 11h
  de repos (ex. fin comptée 23:54 → retour 11:00)
- Corrigé : enregistrer ses plages horaires écrasait le forfait d'astreinte

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
Jacquin Antoine
2026-09-09 20:48:59 +02:00
parent e9983a28c7
commit 3d38abd853
10 changed files with 250 additions and 30 deletions

View File

@ -181,6 +181,22 @@ def toggle_astreinte(date: str, user_id: str = ""):
save_astreintes(dates, user_id)
def astreinte_active(user_id: str) -> bool:
"""Préférence personnelle : ce compte gère-t-il les astreintes ?
(stockée dans plages.json, active par défaut)."""
return bool(load_plages(user_id).get("astreinte_active", True))
def load_astreintes_effectives(user_id: str = "") -> list[str]:
"""Jours d'astreinte vus par les calculs et l'interface : vides si le compte
a désactivé la gestion des astreintes. Rien n'est supprimé — marquages et
interventions deviennent simplement inertes (plus de bouton AS, de décompte,
de repos de 11h ni d'export) jusqu'à réactivation."""
if not astreinte_active(user_id):
return []
return load_astreintes(user_id)
# ── Jours fériés (marqués à la main) ──────────────────────────────────────────
def _feries_file(user_id: str) -> Path: