## Résumé
Corrige la perte ou la fusion incorrecte de données dans le parsing iCal Pronote et ajoute un corpus minimal anonymisé pour les variantes 2026.
## Décisions d’architecture
- Les sections HTML sont découpées par balises `strong` tolérant leurs attributs et leurs espaces.
- Les devoirs conservent un HTML nettoyé et un texte lisible ; scripts, styles et attributs exécutables sont supprimés.
- La déduplication utilise matière + enseignants + texte normalisé ; une copie identique est fusionnée, un homonyme d’un autre contexte est conservé.
- `Congés`/`Vacances` et `Jours fériés` produisent respectivement `HOLIDAY` et `PUBLIC_HOLIDAY`, avec `DTEND` exclusif.
- `Partie(s) de classe` est conservé dans `Lesson.class_part` et dans la sérialisation iCalendar.
## Validation
- `739 passed`
- Couverture totale : `94.65 %`
- `ruff check .`
- `ruff format --check .`
- `mypy .` en mode strict
- `pre-commit run --all-files`, y compris `detect-secrets`
- `git diff --check`
Fixtures ajoutées : `tests/fixtures/pronote-variants.ics` et son manifeste ; aucune connexion réseau réelle n’est utilisée.
Closes #28
Closes #29
parsing des variantes iCal, catégories vacances/jours fériés, sections HTML et statut des cours ;
conservation du contexte des devoirs et déduplication déterministe, y compris lorsque l’ordre des enseignants varie ;
correction mineure ajoutée dans a9e4f610c08b93f74a7ff34bd6a4690a7de1aacb, avec test associé ;
29 tests iCal ciblés passés ;
validation intégrée sur la tête de #33 : 754 tests passés, couverture 94,89 %, Ruff, mypy strict, bandit, pre-commit/detect-secrets et git diff --check passés.
La validation est locale et mockée ; elle ne prétend pas couvrir un flux Pronote ou un serveur CalDAV réels.
## Revue — validée ✅
La PR est approuvée pour fusion en **squash**.
Vérifications effectuées :
- parsing des variantes iCal, catégories vacances/jours fériés, sections HTML et statut des cours ;
- conservation du contexte des devoirs et déduplication déterministe, y compris lorsque l’ordre des enseignants varie ;
- correction mineure ajoutée dans `a9e4f610c08b93f74a7ff34bd6a4690a7de1aacb`, avec test associé ;
- 29 tests iCal ciblés passés ;
- validation intégrée sur la tête de #33 : **754 tests passés**, couverture **94,89 %**, Ruff, mypy strict, bandit, pre-commit/detect-secrets et `git diff --check` passés.
La validation est locale et mockée ; elle ne prétend pas couvrir un flux Pronote ou un serveur CalDAV réels.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Résumé
Corrige la perte ou la fusion incorrecte de données dans le parsing iCal Pronote et ajoute un corpus minimal anonymisé pour les variantes 2026.
Décisions d’architecture
strongtolérant leurs attributs et leurs espaces.Congés/VacancesetJours fériésproduisent respectivementHOLIDAYetPUBLIC_HOLIDAY, avecDTENDexclusif.Partie(s) de classeest conservé dansLesson.class_partet dans la sérialisation iCalendar.Validation
739 passed94.65 %ruff check .ruff format --check .mypy .en mode strictpre-commit run --all-files, y comprisdetect-secretsgit diff --checkFixtures ajoutées :
tests/fixtures/pronote-variants.icset son manifeste ; aucune connexion réseau réelle n’est utilisée.Closes #28
Closes #29
Revue — validée ✅
La PR est approuvée pour fusion en squash.
Vérifications effectuées :
a9e4f610c08b93f74a7ff34bd6a4690a7de1aacb, avec test associé ;git diff --checkpassés.La validation est locale et mockée ; elle ne prétend pas couvrir un flux Pronote ou un serveur CalDAV réels.