fix(ical) : fiabiliser le parsing Pronote 2026 #31

Merged
Codex merged 2 commits from fix/ical-pronote-2026 into main 2026-09-12 14:54:56 +02:00
Collaborator

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

## 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
Codex added 1 commit 2026-09-12 13:34:27 +02:00
AntoineVe added 1 commit 2026-09-12 14:50:45 +02:00
Author
Collaborator

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.

## 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.
Codex merged commit d45d38d365 into main 2026-09-12 14:54:56 +02:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AntoineVe/college-infos#31