fix(ical): fiabiliser le parsing Pronote 2026

Revue Codex validée. Corrections de parsing iCal, conservation du contexte des devoirs et fixtures anonymisées.

Co-authored-by: Codex <codex@antoineve.me>
Co-committed-by: Codex <codex@antoineve.me>
This commit was merged in pull request #31.
This commit is contained in:
2026-09-12 14:54:55 +02:00
committed by Codex
parent f194ed985d
commit d45d38d365
9 changed files with 399 additions and 79 deletions
+14
View File
@@ -1893,6 +1893,20 @@ def generate_deterministic_uid(
#### 5.1.6 Parsing complet du flux iCal (`sources/pronote/ical.py`)
Le parseur de production accepte les variantes contrôlées des libellés et des
balises `strong` générées par Pronote. Il distingue les catégories `Congés` /
`Vacances` (`HOLIDAY`) des catégories `Jour(s) férié(s)` (`PUBLIC_HOLIDAY`),
conserve la borne `DTEND` comme date exclusive et reconnaît les statuts
annulé, déplacé ou modifié. Les sections de devoirs conservent un HTML
nettoyé (scripts, styles et attributs exécutables supprimés) ainsi qu'un texte
lisible. La déduplication utilise la date, la matière, les enseignants et le
texte normalisé : une copie du même devoir est fusionnée, tandis qu'un devoir
homonyme d'une autre matière ou d'un autre enseignant est conservé.
Le champ `Partie(s) de classe` est conservé dans `Lesson.class_part` et dans
la description iCalendar sérialisée. Les catégories ou sections inconnues ne
doivent pas être interprétées comme des vacances, une annulation ou un devoir.
```python
List, Optional, Tuple
from datetime import datetime, date