Skip to content

Planificateur : ne pas planifier dans le passé (heure courante)#175

Merged
Cyril-CB merged 1 commit into
mainfrom
claude/task-manager-time-blocking-3vbbam
Jun 30, 2026
Merged

Planificateur : ne pas planifier dans le passé (heure courante)#175
Cyril-CB merged 1 commit into
mainfrom
claude/task-manager-time-blocking-3vbbam

Conversation

@Cyril-CB

Copy link
Copy Markdown
Owner

Contexte

Bug remonté après la mise en production de la phase 1 (PR #174, fusionnée) : le moteur ignorait l'heure courante et plaçait des tâches dans des créneaux déjà écoulés.

Scénario : à 23h, une nouvelle tâche se fixait à 9h le jour même (dans le passé). Une occurrence récurrente quotidienne bloquée sur ce jour ne trouvait alors plus de place et apparaissait à tort comme « non planifiée » (⚠️ 1 élément non planifié : Lecture mails), alors qu'il restait de la place les jours suivants.

Correctif

  • Moteur (planificateur_engine.py) : nouveau paramètre minute_courante. La partie de la première journée déjà écoulée est considérée occupée → on ne planifie jamais dans le passé. Si la journée est terminée, les tâches partent au lendemain.
  • _replanifier : injecte l'heure courante (datetime.now(), paramétrable via maintenant= pour des tests déterministes) et exclut les occurrences récurrentes du signalement « non planifié » — leur placement est « au mieux, là où il reste de la place » par conception, donc une occurrence manquée (journée finie) n'est pas une anomalie à remonter.

Comportement après correctif

  • Une nouvelle tâche créée à 23h se planifie le lendemain (et non dans le passé du jour même).
  • Les occurrences récurrentes continuent de se placer normalement les jours à venir ; celle du jour terminé est simplement ignorée, sans alerte.

Tests

  • 2 tests ajoutés (heure figée pour un comportement déterministe) :
    • test_engine_ne_planifie_pas_dans_le_passe (moteur)
    • test_journee_terminee_reporte_au_lendemain (bout-en-bout, via _replanifier(maintenant=…))
  • Ajustement de test_evenement_fixe_repousse_les_taches (l'événement couvre désormais toute la journée de travail, pour rester déterministe indépendamment de l'heure d'exécution).
  • 628 tests au vert (python3 -m pytest).

🤖 Generated with Claude Code

https://claude.ai/code/session_014HMmo12Zzmj91wAzVeKMf5


Generated by Claude Code

Le moteur ignorait l'heure courante et placait des taches dans des creneaux
deja ecoules (ex. 9h du jour meme alors qu'il est 23h). Desormais la partie de
la journee deja passee est consideree occupee : si la journee est terminee, les
nouvelles taches partent au lendemain.

- moteur : nouveau parametre minute_courante (partie ecoulee du 1er jour)
- _replanifier : injecte l'heure courante (datetime.now(), parametrable pour
  les tests) et exclut les occurrences recurrentes du signalement
  « non planifie » (leur placement est « au mieux » par conception, une
  occurrence manquee n'est pas une anomalie)
- tests : heure figee pour un comportement deterministe (2 tests ajoutes)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014HMmo12Zzmj91wAzVeKMf5
@Cyril-CB Cyril-CB marked this pull request as ready for review June 30, 2026 21:57
@Cyril-CB Cyril-CB merged commit 8a73762 into main Jun 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants