eptm_dashboard/data/docs/01-overview.md

42 lines
2.1 KiB
Markdown

# 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.