Planificateur de tâches (Time Blocking) dans Mon espace#174
Merged
Conversation
Nouveau module de gestion de taches personnel inspire de FlowSavvy, avec planification automatique par optimisation sous contraintes (moteur Python integre, sans dependance lourde). - Taches (duree estimee, echeance optionnelle, priorite, preference matin / apres-midi, decoupage possible) et evenements fixes (rendez-vous, reunions) - Moteur d'optimisation : equilibrage de la charge par jour, micro-pauses sur les journees chargees, respect des horaires de travail, blocage prioritaire des evenements fixes, repartition des longues missions sur plusieurs jours, taches recurrentes (quotidien / hebdo / mensuel) placees la ou il reste de la place - Bouton Replanifier + replanification automatique a chaque ajout - Suivi depuis le calendrier : marquer effectuee, reporter, planifier la fin, modifier, supprimer ; code couleur selon la proximite de l'echeance ; vues jour / semaine / mois avec navigation simple - Horaires de travail configurables par jour de la semaine - Planning strictement prive (filtre par utilisateur, aucun acces transversal), accessible au comptable en phase de test Schema : migration 0049 (planif_taches, planif_blocs, planif_recurrences, planif_horaires). Moteur pur (planificateur_engine.py) teste independamment + tests d'integration des routes (controle d'acces, confidentialite). 26 tests ajoutes, 621 tests au total au vert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014HMmo12Zzmj91wAzVeKMf5
…ssaisie) Les salaries n'ont plus a saisir leurs horaires dans le planificateur : ils sont desormais repris automatiquement du planning theorique (table planning_theorique, menu « Mon planning »), resolus par date pour tenir compte des periodes (scolaire / vacances) et de l'alternance. Un horaire par defaut (lun-ven 9h-12h30 / 13h30-17h30) s'applique si aucun planning n'est defini. - Suppression de la table planif_horaires, du bouton et de la modale « Horaires », et de la route /api/horaires - Le moteur prend desormais des horaires indexes par date (et non par jour de semaine), pour gerer les horaires variables - /api/blocs renvoie aussi les horaires de la plage (plages de travail du calendrier) ; indication dans l'UI que les horaires viennent de Mon planning - Tests adaptes + nouveaux tests (horaires issus du planning, repli par defaut) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014HMmo12Zzmj91wAzVeKMf5
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0f838c5b7e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Trois corrections suite a la revue automatique : - Cloture d'une tache sous-planifiee : une tache dont les blocs ne couvrent pas toute la duree (capacite insuffisante) n'est plus marquee « faite » quand ses blocs visibles sont coches. On compare le temps realise a la duree estimee avant de cloturer, pour ne pas perdre le reliquat. - « Planifier la fin » : on conserve les blocs deja realises mais on LIBERE les creneaux futurs non realises (au lieu de tous les marquer faits) avant de creer la tache « suite ». Evite la surevaluation du travail accompli et le double comptage de la capacite. - Suppression d'un creneau d'evenement fixe : refusee cote serveur (un creneau verrouille ne peut etre supprime seul, sinon l'evenement reste en base sans bloquer son horaire). L'UI ne propose plus que « Supprimer l'evenement ». Tests ajoutes pour les trois cas. 626 tests au vert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014HMmo12Zzmj91wAzVeKMf5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résumé
Ajout d'un gestionnaire de tâches inspiré de FlowSavvy (épuré et simple) dans le menu Mon espace, avec calendrier et Time Blocking. L'organisation du planning est automatique, gérée par optimisation sous contraintes via un moteur Python intégré (placement glouton + équilibrage de charge).
Périmètre (phase 1)
Horaires de travail (sans ressaisie)
Les horaires sont repris automatiquement du planning théorique du salarié (table
planning_theorique, menu Mon planning) — aucune double saisie. Ils sont résolus par date pour tenir compte des périodes (scolaire / vacances) et de l'alternance. Un horaire par défaut (lun.–ven. 9h–12h30 / 13h30–17h30) s'applique uniquement si aucun planning n'est défini.Sécurité & confidentialité
user_id; aucune route n'expose le planning d'un autre utilisateur (même la direction n'y a pas accès).PROFILS_AUTORISES, facile à étendre).X-CSRFTokensur les appels AJAX), validation stricte des entrées côté serveur.Détails techniques
planificateur_engine.py: moteur d'optimisation pur (aucun accès base, horaires indexés par date), donc testable et remplaçable.blueprints/planificateur.py: routes (page + API JSON), replanification, génération des occurrences récurrentes, résolution des horaires depuis le planning, contrôle d'accès.templates/planificateur.html: UI calendrier (vanilla JS) jour/semaine/mois, modales d'ajout/édition, récurrences, détail.0049_module_planificateur+ tables ajoutées àinit_db()(planif_taches,planif_blocs,planif_recurrences). Pas de table d'horaires : ils proviennent du planning existant.app.py.Tests
tests/test_planificateur.py) : moteur (horaires, événements fixes, découpage, équilibrage, échéances, récurrences, micro-pauses, capacité, préférences, urgence) + routes (contrôle d'accès, création/replanification/suivi, horaires issus du planning, confidentialité).python3 -m pytest).À noter
requirements.txt.PRAGMA foreign_keysn'est pas actif sur cette base, comme pour le module Salles).🤖 Generated with Claude Code
https://claude.ai/code/session_014HMmo12Zzmj91wAzVeKMf5