docs(planning): document phase 2 daily planning foundation
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run

This commit is contained in:
root 2026-08-23 10:18:21 +00:00
parent 2fdefccfd3
commit 00eeb3d441
6 changed files with 100 additions and 0 deletions

View file

@ -144,3 +144,8 @@ de déplacement ; aucune donnée antérieure ni `alban` n'a été supprimée.
- Créneau `TEST_UI_PLANNING_PROTECTED`, salle `TEST_UI_CLASSE_101`, semaine du
07/09/2026, vendredi 14:0016:00, réunion exceptionnelle manuelle avec
protection contre les mises à jour Pronote. Donnée conservée pour inspection.
## Phase 2
Aucune donnée `TEST_UI_PHASE2_*` n'a été créée pendant cette première tranche.
Les tests utilisent des objets en mémoire et ne nettoient ni ne suppriment les
données existantes de la copie VM.

View file

@ -0,0 +1,66 @@
# Implémentation Phase 2 — Ma journée
## Baseline
- Version avant : `0.1.0-dev.6`
- Commit de départ : `3c4ef00`
- Environnement : copie locale de la base VM, Docker local sur `127.0.0.1:5080`
- `/health/` : HTTP 200, MariaDB connectée
- Ancien menu : conservé, 76/76 entrées, administrateurs uniquement
- Intégrations externes : Pronote, ENT, Outlook, IA et watchdogs non requis
- Baseline pytest historique : `132 passed, 1 failed, 1 error`, échec/erreur
lookback GMAO hors périmètre
## Architecture retenue
La Phase 2 n'ajoute pas une quatrième table de tâches. Le service
`app_new/core/services/day_planner.py` expose une dataclass
`PlanningCandidate` et agrège les modèles existants : `ScheduledTask`,
`Intervention`, `AdminTask`, les salles et les horaires `WorkSchedule`.
Les propositions restent en mémoire : aucune modification silencieuse du
planning n'est effectuée.
Types couverts : maintenance préventive, intervention, administratif et
urgence. Un rendez-vous d'entreprise déjà représenté par une tâche fixe peut
être conservé ; le modèle multi-segments d'accompagnement reste hors de cette
tranche.
## Règles de proposition
- les horaires de travail et la pause sont des contraintes fortes ;
- sans horaire explicitement configuré pour le jour et l'utilisateur, la vue
affiche une alerte et ne fabrique pas de journée 08:0017:00 ;
- les créneaux fixes sont conservés ;
- les urgences et échéances sont triées avant les tâches flexibles ;
- les salles sont vérifiées via le planning interne résolu, jamais via Pronote ;
- la recherche de créneau avance par pas déterministes de cinq minutes ;
- une tâche impossible est marquée « À replanifier » avec une explication ;
- chaque choix expose une raison courte à l'utilisateur.
## Interface
`/planning/my-day` est accessible depuis `Mon travail > Ma journée` et depuis
le tableau de bord. La vue propose la date précédente, aujourd'hui et la date
suivante, puis une timeline de cartes indiquant heure, durée, lieu, type,
contrainte, statut et explication. Les actions d'application automatique ne
sont pas présentes dans cette première tranche : l'utilisateur garde le
contrôle.
## Tests ajoutés
`tests/unit/test_day_planner.py` couvre la pause, le déterminisme, les horaires
fixes, l'impossibilité d'une tâche trop longue et l'absence d'horaires.
## Limites Phase 2 restantes
- pas encore de validation/applicaton en masse d'une proposition ;
- pas de workflow de replanification automatique d'une urgence ;
- pas de modèle dédié pour plusieurs segments d'entreprise extérieure ;
- pas de multi-techniciens, compétences ou solveur ;
- contrôles visuels réels à compléter avec navigateur instrumenté.
## Données TEST_UI
Aucune donnée existante n'a été supprimée ou nettoyée. Les scénarios avec
données `TEST_UI_PHASE2_*` seront ajoutés uniquement lorsque les tests
d'intégration de la vue quotidienne seront finalisés.

View file

@ -139,3 +139,4 @@ activement.
Le contrôle visuel réel aux trois tailles reste à effectuer lorsqu'un
navigateur instrumenté sera disponible.
| Ma journée | `/planning/my-day` | `planning.view` | Proposition quotidienne de tâches internes | Implémentée Phase 2 ; aucune écriture automatique |

View file

@ -463,3 +463,13 @@ aux administrateurs.
desktop historique complet et de ses conditions d'affichage.
- Nouveau menu métier, RBAC et intégrations inchangés ; version conservée
`0.1.0-dev.6`.
### Phase 2 — Ma journée (2026-08-23)
- Version de développement portée de `0.1.0-dev.6` à `0.1.0-dev.7`.
- Ajout du service déterministe `DayPlanner` et de `PlanningCandidate`, sans
nouvelle table ni dépendance externe.
- Ajout de `/planning/my-day`, du lien `Mon travail > Ma journée` et d'un
accès depuis le tableau de bord.
- Horaires configurés et pauses respectés ; sans horaires explicites, aucune
journée 08:0017:00 n'est inventée.
- 8 tests ciblés passants. Ancien menu inchangé, 76/76.

View file

@ -350,3 +350,14 @@ NOUVEAU MENU MODIFIÉ : NON
RBAC MODIFIÉ : NON
INTÉGRATIONS MODIFIÉES : NON
VERSION : 0.1.0-dev.6
## Phase 2 — première tranche implémentée
La vue `Ma journée` propose chronologiquement les tâches `ScheduledTask`,
`Intervention` et `AdminTask` accessibles à l'utilisateur. Les choix sont
déterministes, non persistés et expliqués. Les horaires de travail et les
pauses sont des contraintes fortes ; les salles sont vérifiées via le
planning interne résolu. Pronote, ENT, Outlook, IA et watchdogs ne sont pas
appelés.
La proposition reste partielle pour les urgences avec replanification,
l'accompagnement multi-segments des entreprises et le multi-techniciens.

View file

@ -356,3 +356,10 @@ Les changements simples et réversibles suivants ont été appliqués :
Les évolutions nécessitant un choix métier (checklist d'onboarding,
refonte complète du tableau de bord, nouvelle taxonomie RBAC et optimisation
de la journée) restent des propositions et ne sont pas implémentées.
## UX appliquée — Phase 2
La première tranche ajoute `Ma journée` dans `Mon travail` et sur le tableau
de bord. La timeline affiche heure, durée, localisation, type, contrainte,
statut et une explication en français. Une alerte indique explicitement quand
les horaires du technicien ne sont pas configurés ; aucune plage par défaut
n'est inventée.