# Phase 1.6 — UI, UX et navigation

Date de reprise : 23 août 2026  
Base : copie locale MariaDB issue de la VM  
Périmètre : navigation métier et améliorations UX réversibles ; aucune Phase 2.

## Baseline

- Commit de départ : `f78cddf`.
- Version de départ : `0.1.0-dev.5`.
- Working tree propre avant les changements Phase 1.6.
- Docker : `gmao-flask` 0.1.0-dev.5, MariaDB et Adminer sains.
- URL locale : `http://127.0.0.1:5080/`.
- `/health/` : HTTP 200, base connectée, Pronote/watchdogs désactivés.
- Baseline globale connue : 129 passed, 1 failed, 1 error ; l'échec et
  l'erreur sont le test historique de lookback/contexte GMAO hors périmètre.
- Un lancement local isolé des tests avec des identifiants DB génériques a
  échoué à l'initialisation (`Access denied`) ; la configuration de test
  documentée reste inchangée et ce n'est pas une régression applicative.

## Inventaire et matrice

L'inventaire repository-wide des liens de `base.html`, y compris les entrées
conditionnelles et les liens techniques historiques, est consigné dans
[`MENU_MIGRATION_MATRIX.md`](MENU_MIGRATION_MATRIX.md).

- Entrées uniques inventoriées : **70**.
- MIGRÉ : **25**.
- REGROUPÉ : **20**.
- ADMIN UNIQUEMENT : **25**.
- DOUBLON : **0**.
- OBSOLÈTE À CONFIRMER : **0**.
- NON MIGRÉ : **0**.
- ROUTE CASSÉE constatée dans le template : **0**.

## Nouveau menu métier

La navigation est désormais organisée par intention :

```text
Accueil
  Tableau de bord
Mon travail
  Interventions
  Planning des salles
  Planning unifié
  Tâches préventives / planifiées
  Tâches administratives
  Disponibilités
  Prévention
Patrimoine
  Bâtiments, Zones, Salles / locaux, Équipements
  Catégories, Types de salles, Cycle de vie
Produits & stocks
  Produits, Références commerciales, Stock, Emplacements
  Mouvements, Réceptions, Sorties, Transvasements / dilutions
  Fiches de demande, Prévisions
Entreprises
  Entreprises, Contrats, Services, Pièces
Documents
  Centre documentaire, FDS accessibles
  Administration
  Utilisateurs, Rôles et permissions, État du système, Journaux
Ancien menu (rubrique principale, transitoire, administrateurs uniquement)
  Principal
  Interventions
  Équipements
  Documents
  Configuration
```

Les rubriques sont conditionnées par les permissions effectives. Un parent
sans enfant autorisé n'est pas rendu. Les URLs et les contrôles backend ne
sont pas remplacés par un contrôle de template.

## Ancien menu

**ANCIEN MENU RUBRIQUE PRINCIPALE : OUI**
**ANCIEN MENU DANS ADMINISTRATION : NON**
**VISIBLE UNIQUEMENT ADMIN : OUI**

L'ancien inventaire complet est accessible dans une rubrique principale
`Ancien menu`, parallèle à `Administration`. Il reprend les cinq groupes
historiques réels (`Principal`, `Interventions`, `Équipements`, `Documents`,
`Configuration`) sous forme de sous-menus repliables. Il inclut les 70 entrées
de la matrice, sans réorganisation métier. Il ne possède pas de nouveau
mécanisme d'autorisation et ne doit être retiré qu'après validation humaine.

## UX appliquée

- Tableau de bord : phrase d'orientation courte ajoutée sans ajouter de
  nouvelles métriques ni de moteur de planning.
- Centre documentaire et FDS : états vides explicites, origine des documents,
  actions textuelles de téléchargement et lien vers le produit.
- Planning des salles : caption de tableau, en-têtes accessibles, messages
  d'état vide actionnables et provenance/protection déjà exprimées en français.
- Administration RBAC : libellés issus de `permission_metadata` et explication
  du comportement des administrateurs ; les clés techniques restent
  secondaires.
- Aucun changement de modèle, de RBAC, d'intégration ou de données métier.

Les propositions lourdes (checklist d'onboarding, refonte graphique complète,
nouveau dashboard et Phase 2) restent documentées dans `UX_PROPOSALS.md`.

## Responsive et accessibilité

Les contrôles statiques montrent l'usage des composants responsive existants,
des labels associés, des boutons textuels et des captions de tableau. Aucun
navigateur instrumenté n'est disponible dans l'environnement courant : la
validation visuelle 1366×768, 768×1024 et 390×844 reste explicitement à faire
avant une livraison distante. Cette limitation n'est pas présentée comme une
validation visuelle réussie.

## Tests Phase 1.6

- `tests/integration/test_phase16_navigation.py` : menu administrateur,
  masquage non-administrateur et destinations principales.
- Les suites documentaires/planning Phase 1 et Phase 1.5 sont conservées.
- Résultat ciblé navigation + documents/planning : **21 tests passants** avec
  la configuration DB de test normale.
- Suite complète après la passe : **132 passed, 1 failed, 1 error**. Les trois
  tests ajoutés expliquent l'augmentation par rapport au baseline ; le seul
  échec et l'erreur restent le test historique lookback/contexte GMAO hors
  périmètre (valeur non plafonnée et teardown `user_id` interdit).
- Le test de disponibilité horaire préventive a été rendu indépendant de
  l'ordre d'exécution en choisissant une date de fermeture non utilisée.

## Version et livraison

La version est incrémentée séparément en `0.1.0-dev.6` car la réorganisation
de navigation est visible et substantielle. Ce changement restera dans un
commit `chore(release)` distinct. Aucun changement n'a été fait à `alban`, aux
watchdogs, aux intégrations protégées ou aux données `TEST_UI_*`.

## Limites restantes

- validation visuelle réelle sans navigateur ;
- suppression de l'ancien menu après validation humaine ;
- checklist d'onboarding et enrichissement du dashboard ;
- moteur d'optimisation et replanification Phase 2 non commencés.

## Correction de couverture historique (post-revue)

La revue manuelle a montré que le total initial de 70 n'était pas exhaustif.
Une comparaison directe avec le bloc de navigation desktop de `base.html`
pré-Phase 1.6 (`f78cddf`) a retrouvé six entrées supplémentaires : quatre
liens ENT/Pronote signalés par l'utilisateur (`Messages ENT`, `Interprétations
ENT`, `Personnels ENT`, `PRONOTE (sync salles)`) et deux liens Outlook
conditionnels (`Ajouter un compte Outlook`, `Dossiers Outlook surveillés`).
La cause est méthodologique : l'inventaire initial s'appuyait sur le composant
de navigation refactoré et sa matrice manuelle, sans extraction exhaustive des
liens conditionnels du template historique. Les doublons mobile ne sont pas
comptés comme fonctions distinctes.

La matrice et la rubrique principale `Ancien menu` représentent désormais
**76/76** fonctions historiques, réparties dans les cinq groupes historiques
`Principal`, `Interventions`, `Équipements`, `Documents` et `Configuration`.
Les endpoints et le RBAC backend n'ont pas été modifiés ; aucune intégration
ENT, Pronote, Outlook ou watchdog n'a été exécutée ou refactorée.
