# Vue d'ensemble EPTM Dashboard est une application de gestion des absences, notes et bulletins pour l'École professionnelle technique et des métiers (EPTM Sion / Monthey). Elle se synchronise avec **Escadaweb** (le système de notation cantonal) pour récupérer et pousser les données. ## À quoi sert l'application - **Visualiser les absences** par apprenti ou par classe, avec calendrier mensuel et statistiques. - **Excuser ou modifier** les absences manuellement (les changements sont mis en file d'attente avant d'être renvoyés à Escada). - **Récupérer les bulletins de notes (BN)**, les notes d'examen et les fiches personnelles depuis Escada. - **Automatiser** les imports/exports via des tâches planifiées (cron) avec notifications Telegram. - **Tracer** qui a modifié quoi (audit log complet). ## Modèle de données simplifié ``` Apprenti ── Absence (avec statut: a_traiter, excusee, ...) ├── ApprentiFiche (données personnelles : adresse, entreprise, formateur) ├── NotesBulletin (BN par semestre) ├── NotesMatu (Matu pro) └── NotesExamen (notes d'examen finales) EscadaPending : file d'attente des modifications locales à pousser vers Escada (action ∈ {"E", "N", "clear"}) Import / ImportBN / ImportMatu : trace des imports PDF effectués CronJob : tâches planifiées (push, sync, push+sync) ``` ## Architecture technique - **Frontend** : Reflex 0.9.2 (Python full-stack avec Radix Themes + Tailwind-friendly) - **DB** : SQLite en mode WAL, à `data/absences.db` - **Scraping Escada** : Selenium / Playwright, dans `scripts/sync_esacada.py` et `scripts/push_to_escada.py` - **Parsing PDF** : `src/parser.py` (absences), `src/parser_bn.py` (bulletins), `src/parser_matu.py` (matu) - **Conteneurisation** : Docker Compose, derrière nginx-proxy-manager - **Cron** : OS cron déclenche `scripts/cron_tick.py` toutes les minutes, qui consulte la table `CronJob` ## Rôles utilisateurs - **user** : accès aux pages Tableau de bord, Apprentis, Classes (lecture + édition d'absences). - **admin** : tout ce qui précède + Escada, Cron, Logs, Utilisateurs, Paramètres.