eptm_dashboard/data
Julien Balet f60cbf1b1c sync escada : gestion fine des pendings + détection orphelines
- importer.py : nouvelle logique pour les 4 cas d'absence × pending :
  * abs en PDF + pending modify : pending wins (sans force) / override (force)
  * abs en PDF + pas en DB + pending action=clear : respecte la suppression
    locale (sans force) / recrée l'abs (force)
  * orpheline (DB sans PDF) sans pending : supprimée + comptée + détaillée
  * orpheline avec pending : conservée (sans force) / supprimée (force)
- importer.py : query orpheline par classe + fenêtre de dates du PDF
  (couvre les abs locales avec import_id=None)
- run_imports.py : remonte orphelines + pending_skipped dans res_abs
- notifier.py : niveau detailed inclut absences supprimées par classe
  + détail des orphelines (max 5 par classe)
- escada.py : sépare cache disque (toutes classes pour matching Matu)
  vs liste UI (filtrée MP/MI/Formation)
- escada.py : timeout polling import passe de 60s à 15min
- escada.py : retire mode test push, fix bouton Actualiser bloqué sans
  classe sélectionnée
- cron.py : reset last_run_at à l'activation d'un job pour relance
  immédiate au prochain tick

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 15:24:43 +02:00
..
templates mise en route server avec dev 2026-05-07 23:43:05 +02:00
auth.yaml page apprentis ok 2026-05-10 10:57:28 +02:00
auth_tokens.json mise en route server avec dev 2026-05-07 23:43:05 +02:00
class_href_cache.json sync escada : gestion fine des pendings + détection orphelines 2026-05-10 15:24:43 +02:00
debug_otp.png mise en route server avec dev 2026-05-07 23:43:05 +02:00
esacada_classes.json mise en route server avec dev 2026-05-07 23:43:05 +02:00
esacada_last_sel.json mise en route server avec dev 2026-05-07 23:43:05 +02:00
last_sync.json mise en route server avec dev 2026-05-07 23:43:05 +02:00
logo.png mise en route server avec dev 2026-05-07 23:43:05 +02:00
settings.json mise en route server avec dev 2026-05-07 23:43:05 +02:00