ADR-014 — Plateforme à deux domaines : accueil et navigation¶
Date : 2026-09-28
Statut : Acceptée — implémentée et en production. Mergée sur main le 2026-09-28 (merge c69c36a, tag v2.1.0-platform) ; commits d'implémentation f247579, 28e8c64, 20a4cb4, e9ceab6, c97cbb9, e23e85a.
Références : ADR-009 (périmètre Storybook), ADR-010 (façades), ADR-013 (domaine énergie), §3.3 périmètre, §5.F.8.
Contexte¶
La route / servait le tableau de bord hydrologique. Le domaine énergie (ADR-013) a ajouté /energie et /energie/regroupement, sans lien depuis / : frontend.md précisait que l'accueil hydrologique « n'y renvoie pas ». Ces pages n'étaient atteignables que par leur URL.
Deux décisions écrites fixaient ce découpage :
- le non-scope « Multi-pages » de §3.3 et de
CLAUDE.md: pas de/stations/:id,/compare,/alerts, « chaque domaine tient sur une page scrollable » ; - l'absence de lien de l'hydrologie vers l'énergie, citée ci-dessus.
Effets constatés au 2026-09-28 : le domaine énergie ne se découvre pas ; toutes les pages portent le titre d'onglet de l'hydrologie (document.title n'est jamais fixé) ; / charge Leaflet et D3 (141 Ko gzip de JavaScript) avant tout choix de domaine.
Décision¶
1. Un accueil de plateforme sur /¶
L'accueil énonce une fois la méthode commune aux deux domaines (données fédérales publiques par un seul canal ; chaque chiffre traçable jusqu'à sa source et son millésime ; rien d'estimé ni d'interpolé ; un verdict seulement quand les bases concordent), puis présente une carte par domaine : sa question métier, un chiffre, la date de ce chiffre, sa source, un lien.
- Hydrologie : le débit du Rhône à Porte du Scex, l'exutoire du bassin valaisan, avec son heure de mesure en heure suisse. Source :
GET /stations, déjà servi. - Énergie : la répartition des catégories de consommation au-dessus de la médiane, en dessous et sans verdict, pour SEDRE SA, le gestionnaire de réseau étudié (ADR-013). Source :
GET /energy/positioning, chargé seul. Le chiffre est étiqueté par son millésime, jamais présenté comme « en direct ».
Un chiffre n'est jamais affiché sans sa date ; une donnée absente ou en erreur est dite comme telle.
2. Une page par domaine, chargée à la demande¶
Le tableau de bord hydrologique passe sur /hydrologie, sans changement de contenu. Les pages de domaine sont des chunks séparés : l'accueil n'en porte pas le poids.
3. Une barre de navigation commune¶
OSiteHeader, dans TDefaultLayout, sur toutes les pages : la marque vers /, puis « Hydrologie » et « Énergie ». Le domaine actif est marqué par un soulignement et une graisse, pas par la couleur seule, et reste marqué sur ses sous-pages. Un lien d'évitement vers le contenu est le premier élément focusable. Pas de menu burger.
4. Continuité des anciennes ancres¶
/#map, /#alerts et /#chat redirigent vers la même ancre sur /hydrologie.
5. Identité de chaque page¶
Un titre d'onglet par route (« Hydrologie — AlpiMonitor », « AlpiMonitor » seul sur l'accueil) ; métadonnées d'index.html, sitemap et robots.txt décrivent la plateforme ; le pied de page de l'accueil liste les sources des deux domaines.
6. Non-scope révisé¶
« Multi-pages » devient « Pages de détail » : /stations/:id, /compare et /alerts restent hors scope. La plateforme compte quatre pages — accueil, hydrologie, énergie, note de méthode — et pas au-delà.
Conséquences¶
Positives¶
- Chaque domaine est atteignable depuis toutes les pages ; l'énergie n'est plus une page isolée.
- L'accueil charge 70 Ko gzip de JavaScript au lieu de 141, et deux appels d'API.
- Chaque onglet porte le nom de sa page.
- La méthode est énoncée une fois pour les deux domaines au lieu d'être implicite dans chacun.
Négatives¶
- Les liens déjà diffusés vers
/arrivent désormais sur l'accueil, et non plus sur le tableau de bord hydrologique : un clic de plus, sans erreur 404 (la route existe toujours). Les aperçus de partage déjà mis en cache (LinkedIn notamment) gardent l'ancien titre et l'ancienne description jusqu'à ce qu'ils soient réexplorés. - Les mesures publiées sur
/(Lighthouse du 2026-04-22, captures d'écran) portent sur une page qui n'y est plus : elles sont à refaire. - L'accueil appelle
GET /energy/positioning(12 Ko, environ 1,7 s mesuré à froid) pour un seul chiffre. - Le Storybook compte une quatrième exclusion,
OSiteHeader(ADR-009, mise à jour du 2026-09-28).
Trade-offs assumés¶
- Pas de menu burger : la marque et les deux liens tiennent sur une ligne à 375 px de large (vérifié en rendu réel). Un troisième domaine obligerait à reconsidérer.
- Routes déclarées à plat : vue-router ne marque pas un lien parent comme actif sur une route plate ; une fonction pure (
isSectionActive) le fait, plutôt qu'une réorganisation du routeur en routes imbriquées. - Métadonnées communes à toutes les pages : une SPA ne sert aux robots que
index.html; des métadonnées par page demanderaient un rendu serveur ou un prérendu.
Alternatives écartées¶
Garder / sur l'hydrologie et ajouter seulement une barre de navigation¶
Rend l'énergie atteignable, mais la présente comme secondaire, garde Leaflet et D3 sur la page d'entrée et ne donne aucun endroit où énoncer la méthode commune.
Rediriger / vers /hydrologie côté serveur¶
Préserve la destination des liens diffusés, mais supprime l'accueil : la plateforme n'aurait toujours pas de point d'entrée commun aux deux domaines.
Menu burger en mobile¶
Un état ouvert/fermé, un piège de focus et leurs tests, pour trois liens qui tiennent sur une ligne.
Routes imbriquées (/energie parent de /energie/regroupement)¶
Donne l'état actif natif de vue-router, au prix d'une réorganisation du routeur et d'un composant parent de rendu pour un seul besoin, couvert par une fonction pure de deux lignes.
Chiffre énergie « 536 gestionnaires comparés »¶
Décrit la taille du jeu de données, pas ce que la méthode produit ; la répartition des verdicts montre le résultat de la règle de concordance.
Métadonnées par page par prérendu ou rendu serveur¶
Outillage disproportionné pour quatre pages, et un mode de déploiement différent du reste de l'application.
Références¶
- ADR-009 — exclusion d'
OSiteHeaderdu Storybook (mise à jour du 2026-09-28). - ADR-013 — domaine énergie, dont cette décision renverse l'absence de lien depuis l'accueil.
- §3.3 périmètre — non-scope révisé.
- §5.F.8 — composants et routes de la plateforme.