2.1 KiB
2.1 KiB
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.pyetscripts/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.pytoutes les minutes, qui consulte la tableCronJob
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.