chore(integration): intégrer les PR Pronote critiques dans main

Revue Codex validée. Intégration dans main de la chaîne des PR #31, #32 et #33.

Co-authored-by: Codex <codex@antoineve.me>
Co-committed-by: Codex <codex@antoineve.me>
This commit was merged in pull request #35.
This commit is contained in:
2026-09-12 15:00:32 +02:00
committed by Codex
parent d45d38d365
commit 573705a3d0
10 changed files with 355 additions and 27 deletions
+11 -3
View File
@@ -1532,6 +1532,14 @@ Sinon :
retourner J+1 (no-school, avec libellé de vacances si applicable)
```
Dans l'implémentation Python actuelle (`pronote_sync.pipeline.steps.fetch.resolve_target_date`),
seuls les cours non annulés sont considérés comme effectifs ; un cours déplacé reste donc
éligible. La recherche du prochain cours connu ne dépend pas de la présence d'un cours à J.
Lorsqu'aucun cours futur n'est fourni et qu'un événement scolaire couvre J+1, sa borne
`to_date` (exclusive) est utilisée comme reprise connue. Sinon, J+1 est conservé comme
valeur de repli explicite. La fonction journalise la règle choisie avec la date et une raison
non personnelle.
**Exemple Python** :
```python
Optional, Tuple, List
@@ -2158,9 +2166,9 @@ def parse_ical(raw_ical: str) -> tuple[List[Lesson], List[HomeworkModel], List[S
- school_events : Liste des événements scolaires (vacances).
**Note importante** :
La déduplication globale des devoirs est effectuée **après le parsing** de tous les VEVENT,
une fois que `target_date` est connu (via `resolve_target_day`).
Voir la section [5.1.4 Déduplication des devoirs](#514-déduplication-des-devoirs) pour plus de détails.
La déduplication globale des devoirs est effectuée **après le parsing** de tous les VEVENT,
une fois que `target_date` est connu (via `resolve_target_day`).
Voir la section [5.1.4 Déduplication des devoirs](#514-déduplication-des-devoirs) pour plus de détails.
"""
cal = Calendar.from_ical(raw_ical)