106 lines
4.5 KiB
Markdown
106 lines
4.5 KiB
Markdown
# Phase 1.5 — raccord Pronote et revalidation des fondations
|
||
|
||
Date : 22 août 2026
|
||
Base : copie locale MariaDB issue de la VM
|
||
Version conservée : `0.1.0-dev.5`
|
||
Commit de départ : `e006f4f`
|
||
|
||
## Baseline
|
||
|
||
- Working tree propre au démarrage.
|
||
- Docker : `gmao-flask:0.1.0-dev.5`, MariaDB et Adminer sains.
|
||
- `/health/` : HTTP 200, base connectée, Pronote/watchdogs non configurés.
|
||
- Migration courante : `g1a2b3c4d5e6`.
|
||
- Données `TEST_UI_*` présentes et conservées ; `alban` inchangé.
|
||
- Baseline global connue : 125 passed, 1 failed, 1 error ; l'échec et
|
||
l'erreur concernent le lookback de configuration GMAO hors périmètre.
|
||
|
||
## Pipeline Pronote
|
||
|
||
### Avant
|
||
|
||
Le client `get_lessons_for_room()` récupérait et normalisait des cours, mais
|
||
la page `/pronote/planning/<room_id>` les affichait directement et le bouton
|
||
d'import était un simple message « non implémenté ». La disponibilité interne
|
||
utilisait déjà `RoomSchedule`, mais aucun raccord réel ne persistait ces
|
||
données.
|
||
|
||
### Après
|
||
|
||
Le pipeline est désormais :
|
||
|
||
`Pronote → get_lessons_for_room(strict=True) → normalize_pronote_lessons() → sync_pronote_schedules() → RoomSchedule → active_room_schedules() → disponibilité/planning`
|
||
|
||
Les identifiants de cours absents sont déterministes (empreinte des attributs
|
||
du créneau), les horodatages sont conservés et l'import est limité à la
|
||
semaine demandée. Une erreur de récupération n'appelle pas la synchronisation
|
||
et conserve donc les dernières données connues.
|
||
|
||
Pronote ne participe plus au calcul direct de disponibilité. Avec Pronote
|
||
désactivé ou non configuré, le planning interne et la saisie manuelle restent
|
||
utilisables.
|
||
|
||
## Règles de synchronisation couvertes
|
||
|
||
- manuel initial non protégé : supplanté par un Pronote correspondant, sans
|
||
doublon actif ;
|
||
- horaire Pronote modifié : ancienne ligne manuelle supplantée, nouvelle ligne
|
||
Pronote active ;
|
||
- manuel protégé : jamais écrasé ; conflit conservé et affiché ;
|
||
- rapprochement ambigu : aucune fusion automatique, conflit à valider ;
|
||
- créneau absent d'une synchronisation : `disabled`, jamais supprimé ;
|
||
- suppression limitée à la semaine synchronisée, sans désactiver les semaines
|
||
voisines ;
|
||
- panne Pronote : planning et fraîcheur précédents conservés ;
|
||
- retour Pronote : `last_synced_at` avancé et lignes réconciliées.
|
||
|
||
La page de planning interne affiche l'origine en termes métier, la protection
|
||
et les conflits. Une action permet de protéger/déprotéger un manuel et de
|
||
désactiver un créneau Pronote sans effacer son historique.
|
||
|
||
## Centre documentaire revalidé
|
||
|
||
La V1 a été retestée avec documents intervention, équipement et produit/FDS :
|
||
agrégation, recherche par titre/fichier/contexte, source/type, pagination,
|
||
fichier manquant, chemin hors racine, source inconnue et restriction de
|
||
permission source. Aucun fichier n'est copié.
|
||
|
||
## Tests
|
||
|
||
- tests Phase 1.5 planning/documents : **7 passed** ;
|
||
- suites Phase 1 ciblées (P1, équipements, nettoyage, interventions) :
|
||
**26 passed** ;
|
||
- tests unitaires de version : passants.
|
||
|
||
Suite complète : **129 passed, 1 failed, 1 error**. Le seul échec et l'erreur
|
||
de teardown restent le test historique de lookback GMAO hors périmètre ; aucun
|
||
nouvel échec n'a été introduit.
|
||
|
||
Les contrôles HTTP sur la copie VM locale après rebuild ont donné 200 pour
|
||
`/health/`, `/documents/`, `/documents/fds`, `/planning/rooms`,
|
||
`/planning/rooms/new`, `/pronote/planning` et `/pronote/planning/2`.
|
||
La création réelle du créneau `TEST_UI_PLANNING_PROTECTED` a été vérifiée,
|
||
avec protection persistée en base.
|
||
|
||
## Responsive et accessibilité ciblés
|
||
|
||
Les nouvelles pages utilisent les composants responsive existants (`table-
|
||
responsive`, `table-responsive-stack`), des labels associés aux champs, des
|
||
boutons textuels et des messages métier. Aucun navigateur instrumenté n'est
|
||
disponible dans cet environnement ; une vérification visuelle manuelle aux
|
||
trois tailles demandées reste à effectuer avant déploiement distant.
|
||
|
||
## Données ajoutées
|
||
|
||
- `TEST_UI_PLANNING_PROTECTED` dans `TEST_UI_CLASSE_101`, semaine du
|
||
07/09/2026, vendredi 14:00–16:00, réunion protégée.
|
||
|
||
Aucune donnée `TEST_UI_*` n'a été supprimée.
|
||
|
||
## Limitations et hors périmètre
|
||
|
||
- aucune modification des identifiants/secrets Pronote ;
|
||
- aucune Phase 2 (optimisation de journée, solveur, multi-techniciens) ;
|
||
- aucune modification alban, watchdog, contexte GMAO, ENT ou Outlook ;
|
||
- résolution humaine des conflits uniquement ;
|
||
- le test historique lookback GMAO reste volontairement non corrigé.
|