fix(ui): complete historical navigation inventory
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run

This commit is contained in:
root 2026-08-23 09:57:40 +00:00
parent db46ec6374
commit 3c4ef00d21
7 changed files with 120 additions and 4 deletions

View file

@ -164,8 +164,14 @@
<a class="dropdown-item" href="{{ url_for('ai_config.index') }}">Configuration IA</a>
<a class="dropdown-item" href="{{ url_for('constraints.index') }}">Contraintes de zone</a>
<a class="dropdown-item" href="{{ url_for('outlook_pages.index') }}">Comptes Outlook</a>
<a class="dropdown-item" href="{{ url_for('outlook_pages.add_account') }}">Ajouter un compte Outlook</a>
<a class="dropdown-item" href="{{ url_for('outlook_dashboard.processed_folders_config') }}">Dossiers Outlook surveillés</a>
<a class="dropdown-item" href="{{ url_for('ent.index') }}">ENT77</a>
<a class="dropdown-item" href="{{ url_for('ent.messages') }}">Messages ENT</a>
<a class="dropdown-item" href="{{ url_for('ent.interpretations') }}">Interprétations ENT</a>
<a class="dropdown-item" href="{{ url_for('ent.staff') }}">Personnels ENT</a>
<a class="dropdown-item" href="{{ url_for('pronote.connect') }}">PRONOTE (QR)</a>
<li><form method="post" action="{{ url_for('pronote.sync_salles') }}"><button class="dropdown-item" type="submit"><i class="bi bi-download"></i> PRONOTE (sync salles)</button></form></li>
<a class="dropdown-item" href="{{ url_for('pronote.planning') }}">PRONOTE (plannings)</a>
<a class="dropdown-item" href="{{ url_for('pronote.rooms') }}">Salles PRONOTE</a>
<a class="dropdown-item" href="{{ url_for('pronote.personnels') }}">Personnels PRONOTE</a>

View file

@ -543,3 +543,11 @@ lookback hors périmètre et son erreur de teardown.
- La première présentation de l'ancien menu sous Administration a été
corrigée : il est désormais une rubrique principale parallèle, sans impact
sur les permissions backend.
### Revue inventaire navigation historique (2026-08-23)
Le total Phase 1.6 annoncé à 70 était incomplet. La comparaison Git avec la
navigation desktop avant refonte a identifié six entrées conditionnelles
oubliées, dont les quatre fonctions ENT/Pronote signalées. Elles sont
maintenant représentées dans `Ancien menu > Configuration` et dans la matrice
(`MENU_MIGRATION_MATRIX.md`). Aucun endpoint, contrôle RBAC ou comportement
d'intégration n'a été modifié. Nouveau total : 76/76.

View file

@ -138,3 +138,22 @@ watchdogs, aux intégrations protégées ou aux données `TEST_UI_*`.
- 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.

View file

@ -65,8 +65,14 @@ sous-menu correspondant.
| Configuration IA | `ai_config.index` | admin | Configuration | Configuration IA | Ancien menu | ADMIN UNIQUEMENT | Hors périmètre |
| Contraintes de zone | `constraints.index` | admin/prevention | Configuration | Contraintes de zone | Ancien menu | ADMIN UNIQUEMENT | |
| Comptes Outlook | `outlook_pages.index` | integration.outlook.view | Configuration | Comptes Outlook | Ancien menu | ADMIN UNIQUEMENT | Intégration hors périmètre |
| Ajouter un compte Outlook | `outlook_pages.add_account` | integration.outlook.configure | Configuration | Ajouter un compte Outlook | Ancien menu | ADMIN UNIQUEMENT | Entrée conditionnelle historique retrouvée dans le menu de configuration |
| Dossiers Outlook surveillés | `outlook_dashboard.processed_folders_config` | integration.outlook.configure | Configuration | Dossiers Outlook surveillés | Ancien menu | ADMIN UNIQUEMENT | Entrée conditionnelle historique retrouvée dans le menu de configuration |
| ENT77 | `ent.index` | integration.ent.view | Configuration | ENT77 | Ancien menu | ADMIN UNIQUEMENT | Intégration hors périmètre |
| Messages ENT | `ent.messages` | integration.ent.view | Configuration | Messages ENT | Ancien menu | ADMIN UNIQUEMENT | Entrée conditionnelle historique restaurée |
| Interprétations ENT | `ent.interpretations` | integration.ent.view | Configuration | Interprétations ENT | Ancien menu | ADMIN UNIQUEMENT | Entrée conditionnelle historique restaurée |
| Personnels ENT | `ent.staff` | integration.ent.view | Configuration | Personnels ENT | Ancien menu | ADMIN UNIQUEMENT | Entrée conditionnelle historique restaurée |
| PRONOTE (QR) | `pronote.connect` | integration.pronote.view | Configuration | PRONOTE | Ancien menu | ADMIN UNIQUEMENT | Pronote reste facultatif |
| PRONOTE (sync salles) | `pronote.sync_salles` | integration.pronote.configure | Configuration | PRONOTE (sync salles) | Ancien menu | ADMIN UNIQUEMENT | Formulaire POST conservé ; non soumis par le contrôle de navigation |
| PRONOTE (plannings) | `pronote.planning` | integration.pronote.view | Configuration | Plannings PRONOTE | Ancien menu | ADMIN UNIQUEMENT | Source de synchronisation |
| Salles PRONOTE | `pronote.rooms` | integration.pronote.view | Configuration | Salles PRONOTE | Ancien menu | ADMIN UNIQUEMENT | |
| Personnels PRONOTE | `pronote.personnels` | integration.pronote.view | Configuration | Personnels PRONOTE | Ancien menu | ADMIN UNIQUEMENT | |
@ -86,12 +92,28 @@ sous-menu correspondant.
## Contrôle de couverture
- Entrées uniques inventoriées : **70** (hors doublons mobile et formulaires
de synchronisation POST).
- MIGRÉ : 25 ; REGROUPÉ : 20 ; ADMIN UNIQUEMENT : 25 ; DOUBLON : 0 ;
- Ancien total de référence avant la correction : **70**.
- Entrées manquantes signalées par l'utilisateur : **4** (Messages ENT,
Interprétations ENT, Personnels ENT, PRONOTE sync salles).
- Autres entrées manquantes découvertes par la comparaison Git : **2**
(Ajouter un compte Outlook, Dossiers Outlook surveillés).
- Nouveau total historique exhaustif : **76** (hors doublons mobile).
- MIGRÉ : 25 ; REGROUPÉ : 20 ; ADMIN UNIQUEMENT : 31 ; DOUBLON : 0 ;
OBSOLÈTE À CONFIRMER : 0 ; NON MIGRÉ : 0 ; ROUTE CASSÉE : 0 constatée dans
le template après compilation.
- Les liens techniques hors périmètre sont conservés dans la rubrique
principale **Ancien menu**, sous les cinq groupes historiques. Cette
rubrique est transitoire et ne doit être retirée qu'après validation
humaine.
### Cause de l'omission
Le premier inventaire Phase 1.6 avait été construit à partir de la liste
manuelle du composant de navigation refactoré et de sa matrice, au lieu de
partir du bloc desktop complet de `base.html` antérieur à la refonte. Les
entrées conditionnelles d'intégration (`ENT`, `Pronote`) et les deux liens
Outlook secondaires n'étaient donc pas représentées dans la liste de
référence. La comparaison directe avec le commit pré-Phase 1.6 a retrouvé 75
endpoints historiques uniques, auxquels s'ajoute la messagerie directe
`/messagerie`, soit 76 entrées. Les doublons mobile ne sont pas comptés comme
des fonctions supplémentaires.

View file

@ -451,3 +451,15 @@ principale parallèle à `Administration`, avec les groupes historiques
`Principal`, `Interventions`, `Équipements`, `Documents` et `Configuration`.
Les 70 entrées de la matrice sont conservées et la rubrique reste réservée
aux administrateurs.
### Correction inventaire navigation historique — 2026-08-23
- Ancien total de référence : 70 ; quatre omissions signalées puis deux
omissions supplémentaires retrouvées par comparaison Git pré-Phase 1.6.
- Nouveau total exhaustif : **76/76** (doublons mobile exclus).
- Entrées restaurées dans `Ancien menu > Configuration` : Messages ENT,
Interprétations ENT, Personnels ENT, PRONOTE (sync salles), Ajouter un compte
Outlook et Dossiers Outlook surveillés.
- Cause : inventaire initial limité au composant refactoré au lieu du bloc
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`.

View file

@ -329,3 +329,24 @@ d'actions textuelles et de libellés de provenance plus clairs. La page RBAC
présente désormais les libellés métier des permissions et explique le
comportement administrateur. La validation visuelle réelle reste à faire avec
un navigateur instrumenté.
## Correction de l'inventaire historique — 2026-08-23
ANCIEN TOTAL : 70
ENTRÉES MANQUANTES SIGNALÉES PAR UTILISATEUR : 4
AUTRES ENTRÉES MANQUANTES DÉCOUVERTES : 2
NOUVEAU TOTAL HISTORIQUE : 76
MESSAGES ENT PRÉSENT : OUI
INTERPRÉTATIONS ENT PRÉSENT : OUI
PERSONNEL ENT PRÉSENT : OUI (libellé historique : Personnels ENT)
PRONOTE (SYNC SALLES) PRÉSENT : OUI
GROUPES HISTORIQUES : Principal, Interventions, Équipements, Documents, Configuration
CAUSE DES OUBLIS : comparaison initiale limitée au composant de navigation
refactoré et à une matrice manuelle ; les entrées conditionnelles des
intégrations et les liens Outlook secondaires n'avaient pas été extraits du
template desktop pré-Phase 1.6.
ENTRÉES HISTORIQUES SANS CLASSEMENT : 0
ENDPOINTS CASSÉS : 0 constaté dans les routes enregistrées
NOUVEAU MENU MODIFIÉ : NON
RBAC MODIFIÉ : NON
INTÉGRATIONS MODIFIÉES : NON
VERSION : 0.1.0-dev.6

View file

@ -14,8 +14,36 @@ def test_admin_sees_new_menu_and_legacy_reference(authenticated_client):
assert "Ancien menu" in body
assert "Référentiel temporaire" in body or "temporaire" in body
assert body.index("Administration") < body.index("Ancien menu")
for group in ("Principal", "Interventions", "Équipements", "Configuration"):
for group in ("Principal", "Interventions", "Équipements", "Documents", "Configuration"):
assert group in body
for historical_label in (
"Ajouter un compte Outlook",
"Dossiers Outlook surveillés",
"Messages ENT",
"Interprétations ENT",
"Personnels ENT",
"PRONOTE (sync salles)",
):
assert historical_label in body
def test_historical_integration_endpoints_are_registered(app):
"""Les liens conditionnels historiques pointent vers des routes existantes.
Le formulaire Pronote n'est pas soumis : ce contrôle ne déclenche aucune
synchronisation externe.
"""
with app.app_context():
endpoints = {rule.endpoint for rule in app.url_map.iter_rules()}
for endpoint in (
"outlook_pages.add_account",
"outlook_dashboard.processed_folders_config",
"ent.messages",
"ent.interpretations",
"ent.staff",
"pronote.sync_salles",
):
assert endpoint in endpoints
def test_non_admin_does_not_see_admin_navigation(client, app):