# 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:00–17: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.
