CalDAVGateway.list_managed_events() fait raw_uid = str(vevent.get("UID")) : un VEVENT marqué X-PRONOTE-SYNC-MANAGED:v1 mais sans UID produit la chaîne synthétique "None". Le planner ne reconnaît ni le préfixe homework- ni school-event-, classe cet UID comme un cours distant orphelin, et l'exécuteur appelle delete_event("None").
Un événement géré malformé (sans UID) déclenche une suppression ciblée sur un UID inexistant au lieu d'être ignoré. Robustesse de la migration/synchronisation.
Correctif attendu
Ignorer, avec un avertissement expurgé, tout composant géré dont l'UID est absent ou vide ; ne jamais fabriquer "None".
Test de non-régression : un VEVENT géré sans UID ne génère ni ajout, ni mise à jour, ni suppression.
Contexte
Découvert pendant la revue de PR #41. Bug préexistant (pronote_sync/sync/caldav.py n'est pas modifié par la PR), hors périmètre de celle-ci.
## Constat
`CalDAVGateway.list_managed_events()` fait `raw_uid = str(vevent.get("UID"))` : un `VEVENT` marqué `X-PRONOTE-SYNC-MANAGED:v1` mais **sans `UID`** produit la chaîne synthétique `"None"`. Le planner ne reconnaît ni le préfixe `homework-` ni `school-event-`, classe cet UID comme un cours distant orphelin, et l'exécuteur appelle `delete_event("None")`.
Reproduction vérifiée (inventaire → planner → executor) :
```
inventory= [('None', 'None')]
plan.lessons_to_remove= ['None']
delete_calls= ['None']
```
Fichiers concernés : `pronote_sync/sync/caldav.py` (inventaire), `pronote_sync/sync/planner.py` (classification), `pronote_sync/sync/executor.py` (appel de suppression).
## Impact
Un événement géré malformé (sans UID) déclenche une suppression ciblée sur un UID inexistant au lieu d'être ignoré. Robustesse de la migration/synchronisation.
## Correctif attendu
- Ignorer, avec un avertissement expurgé, tout composant géré dont l'UID est absent ou vide ; ne jamais fabriquer `"None"`.
- Test de non-régression : un `VEVENT` géré sans UID ne génère ni ajout, ni mise à jour, ni suppression.
## Contexte
Découvert pendant la revue de PR #41. Bug **préexistant** (`pronote_sync/sync/caldav.py` n'est pas modifié par la PR), hors périmètre de celle-ci.
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.
Constat
CalDAVGateway.list_managed_events()faitraw_uid = str(vevent.get("UID")): unVEVENTmarquéX-PRONOTE-SYNC-MANAGED:v1mais sansUIDproduit la chaîne synthétique"None". Le planner ne reconnaît ni le préfixehomework-nischool-event-, classe cet UID comme un cours distant orphelin, et l'exécuteur appelledelete_event("None").Reproduction vérifiée (inventaire → planner → executor) :
Fichiers concernés :
pronote_sync/sync/caldav.py(inventaire),pronote_sync/sync/planner.py(classification),pronote_sync/sync/executor.py(appel de suppression).Impact
Un événement géré malformé (sans UID) déclenche une suppression ciblée sur un UID inexistant au lieu d'être ignoré. Robustesse de la migration/synchronisation.
Correctif attendu
"None".VEVENTgéré sans UID ne génère ni ajout, ni mise à jour, ni suppression.Contexte
Découvert pendant la revue de PR #41. Bug préexistant (
pronote_sync/sync/caldav.pyn'est pas modifié par la PR), hors périmètre de celle-ci.