42 lines
2.1 KiB
Markdown
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.
|