Préserve les cours déplacés et les changements de salle dans le chemin pronotepy, avec la même règle de statut et de consolidation que le parsing iCal de la PR #31.
Décisions d’architecture
Priorité canonique : annulation explicite, puis déplacement/changement de salle, puis normal.
Les libellés inconnus restent normaux et ne sont pas transformés silencieusement.
Un ancien exemplaire annulé n’est retiré que lorsqu’un exemplaire MOVED partage date, horaires, matière, enseignants et groupe.
Une annulation isolée reste conservée pour préserver les vrais cours annulés.
Les deux sources utilisent la même fonction de consolidation ; les UID restent inchangés.
Validation
748 passed
Couverture totale : 94.71 %
ruff check .
ruff format --check .
mypy . en mode strict
pre-commit run --all-files, y compris detect-secrets
git diff --check
Cette PR est empilée sur #31 et doit être fusionnée après celle-ci.
## Résumé
Préserve les cours déplacés et les changements de salle dans le chemin pronotepy, avec la même règle de statut et de consolidation que le parsing iCal de la PR #31.
## Décisions d’architecture
- Priorité canonique : annulation explicite, puis déplacement/changement de salle, puis normal.
- Les libellés inconnus restent normaux et ne sont pas transformés silencieusement.
- Un ancien exemplaire annulé n’est retiré que lorsqu’un exemplaire MOVED partage date, horaires, matière, enseignants et groupe.
- Une annulation isolée reste conservée pour préserver les vrais cours annulés.
- Les deux sources utilisent la même fonction de consolidation ; les UID restent inchangés.
## Validation
- 748 passed
- Couverture totale : 94.71 %
- ruff check .
- ruff format --check .
- mypy . en mode strict
- pre-commit run --all-files, y compris detect-secrets
- git diff --check
Cette PR est empilée sur #31 et doit être fusionnée après celle-ci.
Closes #27
La PR est approuvée pour fusion en squash, après #31.
Vérifications effectuées :
statut canonique partagé entre les chemins iCal et pronotepy ;
priorité correcte de l'annulation explicite sur le déplacement ;
conservation des annulations réelles ;
consolidation d'un ancien cours annulé uniquement lorsqu'une paire unique avec un cours déplacé et une salle différente est identifiable ;
correction mineure ajoutée dans 59e6a1a, puis alignement avec #31 dans 956d23839f54c1171b65113095d8203d2137bdad ;
80 tests ciblés passés, puis 754 tests intégrés passés sur la tête de #33, couverture 94,89 %, qualité et sécurité validées.
Les cas ambigus sont désormais conservés par prudence ; aucun appel Pronote réel n'a été effectué.
## Revue — validée ✅
La PR est approuvée pour fusion en **squash**, après #31.
Vérifications effectuées :
- statut canonique partagé entre les chemins iCal et pronotepy ;
- priorité correcte de l'annulation explicite sur le déplacement ;
- conservation des annulations réelles ;
- consolidation d'un ancien cours annulé uniquement lorsqu'une paire unique avec un cours déplacé et une salle différente est identifiable ;
- correction mineure ajoutée dans `59e6a1a`, puis alignement avec #31 dans `956d23839f54c1171b65113095d8203d2137bdad` ;
- 80 tests ciblés passés, puis 754 tests intégrés passés sur la tête de #33, couverture 94,89 %, qualité et sécurité validées.
Les cas ambigus sont désormais conservés par prudence ; aucun appel Pronote réel n'a été effectué.
Codex
merged commit 5bb5d2c2f1 into fix/ical-pronote-20262026-09-12 14:55:21 +02:00
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é
Préserve les cours déplacés et les changements de salle dans le chemin pronotepy, avec la même règle de statut et de consolidation que le parsing iCal de la PR #31.
Décisions d’architecture
Validation
Cette PR est empilée sur #31 et doit être fusionnée après celle-ci.
Closes #27
Revue — validée ✅
La PR est approuvée pour fusion en squash, après #31.
Vérifications effectuées :
59e6a1a, puis alignement avec #31 dans956d23839f54c1171b65113095d8203d2137bdad;Les cas ambigus sont désormais conservés par prudence ; aucun appel Pronote réel n'a été effectué.