gmao/docs/ui-audit/IMPLEMENTATION_PHASE21.md
root 0c4e107e06
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
docs(planning): record dev8 and full test results
2026-08-23 11:07:04 +00:00

70 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Implémentation Phase 2.1 — validation métier de Ma journée
## Baseline
- Version avant : `0.1.0-dev.7`
- Version après : `0.1.0-dev.8` (replanification interactive minimale)
- Commit de départ : `c5b298c`
- Docker local : image `gmao-college:0.1.0-dev.8`, MariaDB saine
- `/health/` : HTTP 200
- `/planning/my-day` : réponse 200 après connexion
- Ancien menu : inchangé, 76/76, administrateurs uniquement
## Données persistantes
Le scénario est conservé dans la copie locale de la base sous les marqueurs
`TEST_UI_PHASE21_*`. Le compte `TEST_UI_PHASE21_TECH` possède un rôle dédié
avec les permissions planning, intervention, patrimoine et prévention. Son mot
de passe est local uniquement et n'est pas écrit dans Git.
Créés :
- site `TEST_UI_PHASE21_SITE` ;
- bâtiments `TEST_UI_PHASE21_BAT_A` et `TEST_UI_PHASE21_BAT_B` ;
- zones et salles 101, 102, circulation, 201, 001, local technique et
sanitaires ;
- horaires utilisateur 08:0012:00 / 13:3017:00 du lundi au vendredi ;
- occupations internes : salle 101 manuelle 08:3009:30, salle 102 Pronote
simulée 08:3009:00, salle 201 manuelle protégée 14:0016:00 ;
- rendez-vous `TEST_UI_PHASE21_COMPANY_APPOINTMENT` fixe 09:3010:30 ;
- urgence `TEST_UI_PHASE21_EMERGENCY_FUITE` fixe 10:1511:00 ;
- interventions, cinq tâches préventives et tâches administratives ;
- journée contrainte du mardi pour vérifier le statut « À replanifier ».
Aucune donnée existante n'a été nettoyée globalement.
## Résultats
Le lundi 24/08/2026, le moteur place l'administratif, les interventions et les
maintenances dans les fenêtres de travail, sans utiliser la salle 101 pendant
son occupation manuelle ni la salle 102 pendant son créneau Pronote simulé.
Le rendez-vous entreprise reste fixe. L'urgence qui le chevauche est marquée
`conflit` et expliquée : rendez-vous fixe chevauché, décision humaine requise.
Le mardi 25/08/2026, deux blocs fixes occupent 08:0012:00 et 13:3016:30.
La tâche administrative de 45 minutes est conservée et marquée `À replanifier`,
sans être tronquée.
## Replanification minimale
`POST /planning/my-day/reschedule` permet de choisir un créneau proposé pour
une `ScheduledTask` ou une `Intervention`. Le serveur revalide l'identité, la
durée, les horaires, la pause, les conflits internes et la salle avant
d'écrire. Les tâches administratives ne sont pas encore persistées
individuellement car leur modèle est récurrent sans date d'occurrence.
## Tests et limites
- `tests/unit/test_day_planner.py` : **15 passed** ;
- navigation + replanification invalide : **5 passed** ;
- total ciblé Phase 2.1 : **20 passed** ;
- `pytest -q` : **149 passed, 1 failed, 1 error** ; l'échec et l'erreur
restent le test historique de configuration/lookback GMAO et son teardown,
hors périmètre ; aucune nouvelle régression n'a été introduite ;
- mesure locale : environ 2 secondes pour 10 candidats et plusieurs salles ;
- aucune validation visuelle réelle 390×844/768×1024, navigateur instrumenté
indisponible.
Restent à développer : résolution humaine plus complète des conflits,
replanification automatique après urgence, accompagnement multi-segments,
multi-techniciens, compétences et solveur.