fix(pronote): préserver les cours déplacés et les changements de salle #27
Notifications
Due Date
No due date set.
Depends on
#29 test(pronote): constituer un corpus anonymisé d’exports iCal et réponses API
AntoineVe/college-infos
Reference: AntoineVe/college-infos#27
Reference in New Issue
Block a user
Objectif
Faire parvenir au modèle interne et à la synchronisation une représentation fidèle des cours Pronote annulés, déplacés et changés de salle, sans doublon ni disparition silencieuse.
Constat local
LessonStatus.MOVEDexiste déjà danspronote_sync.models.agenda, mais le cheminPronoteClient.get_lessons()ne produit actuellement queNORMALouCANCELLEDà partir delesson.canceled.lesson.statusfourni parpronotepyn'est pas exploité.pronotepy.Preuve externe
L'issue upstream bain3/pronotepy#311 documente le cas Pronote « Changement de salle » :
estAnnule=true,Statut="Cours annulé"etG=3;estAnnule=false,Statut="Changement de salle"etG=2;G=0.Le seul booléen
canceledne suffit donc pas à distinguer une annulation réelle de l'ancien exemplaire d'un changement de salle. Le protocole iCal expose aussi des catégories « Cours - Cours annulé » et « Cours - Cours déplacé » (référence du protocole Pronote).Risques actuels
LessonStatus.MOVEDviapronotepymalgré son existence dans le modèle ;Périmètre attendu
pronotepy, avec un comportement explicite lorsque la version depronotepyne remonte pas le champ brutG.CANCELLED.MOVEDpour un cours effectivement déplacé et rendre ce statut visible dans le digest, le diff et la sérialisation.Critères d'acceptation
CANCELLED.MOVEDavec la nouvelle salle.pronotepy, ou documente explicitement la limite.pronotepy.Conclusion opérationnelle
Traiter ce ticket avant toute amélioration cosmétique du rendu : une annulation ou un changement de salle mal parsé rend directement le planning faux. Ne pas supprimer globalement les cours
CANCELLED; distinguer d'abord l'annulation réelle de l'ancien exemplaire d'un cours déplacé, puis synchroniser uniquement le cours effectif.