dashboard : écran Site — fiche, courbe, recommandations, traçabilité (#24) #140

Merged
justine merged 4 commits from marvin/24-ecran-site into develop 2026-09-07 09:01:43 +00:00
Member

Ce que ça change

L'écran d'un seul site sur /sites/:id : fiche (référentiel et état courant), courbe avec sa référence en pointillé et la prévision H+1, recommandations, et traçabilité d'un point jusqu'à la lecture bronze (EF-04) en cliquant une barre du graphique. Quatre widgets, quatre statuts indépendants — une fiche en échec ne bloque ni la courbe ni les recommandations.

Les points imputés se distinguent en permanence sur la courbe (teinte allégée + légende), pas seulement au survol : c'est le manque laissé sur l'écran Parc, corrigé ici.

Base : marvin/24-ecran-parc (PR #139), dont cet écran dépend. Dernier des trois lots front extraits de #127, à merger en dernier.

Refs #24

Preuve

207 tests vitest passes (43 neufs)
build de production propre

Ecran Site -- fiche du site, courbe 24 h avec sa ligne de reference en pointille
(758 kW), legende mesure / reconstitue (EF-04), prevision de l'heure suivante et
son ecart, recommandations a droite.

Ecran Site

Tracabilite au clic -- cliquer une barre remonte la valeur jusqu'a sa lecture
bronze (EF-04) : instant, valeur affichee, valeur lue, methode de reconstitution et
qualite. Ici une mesure directe, sans reconstitution.

Tracabilite d'un point

Relecture

  • Un pair a relu et laissé un commentaire, même court
  • Ses remarques sont traitées, ou une réponse explique pourquoi elles ne le sont pas

Ce qui suit le code

(rien de coché : aucun runbook, ADR, incident ni variable d'environnement nouvelle)

Où regarder en priorité

  • La traçabilité est branchée sur le point qu'on regarde déjà, pas sur une route à deviner : chaque barre est cliquable et charge /v1/sites/{id}/tracabilite pour son horodatage. L'API rend 404 sur un instant qui ne correspond à aucun point de la fenêtre 24 h — à vérifier que le comportement au clic reste lisible dans ce cas.
  • SiteView recharge tout au changement de :id via un watch, pas seulement onMounted : vue-router réutilise l'instance du composant entre deux sites de la même route nommée.
  • Les trois routes ajoutées ici visent /v1/… comme les précédentes (voir PR #139 pour le pourquoi du préfixe).

Après cette PR, il reste à #24 : l'écran Qualité (ses routes existent, PR #137), l'affichage des alertes, la garde de route sur 401, axe-core, les tests e2e et la vérification aux trois largeurs.

## Ce que ça change L'écran d'un seul site sur `/sites/:id` : fiche (référentiel et état courant), courbe avec sa référence en pointillé et la prévision H+1, recommandations, et traçabilité d'un point jusqu'à la lecture bronze (EF-04) en cliquant une barre du graphique. Quatre widgets, quatre statuts indépendants — une fiche en échec ne bloque ni la courbe ni les recommandations. Les points imputés se distinguent **en permanence** sur la courbe (teinte allégée + légende), pas seulement au survol : c'est le manque laissé sur l'écran Parc, corrigé ici. **Base : `marvin/24-ecran-parc`** (PR #139), dont cet écran dépend. Dernier des trois lots front extraits de #127, à merger en dernier. Refs #24 ## Preuve ``` 207 tests vitest passes (43 neufs) build de production propre ``` **Ecran Site** -- fiche du site, courbe 24 h avec sa ligne de reference en pointille (758 kW), legende `mesure` / `reconstitue (EF-04)`, prevision de l'heure suivante et son ecart, recommandations a droite. ![Ecran Site](https://10.105.200.41/attachments/c1ac9aae-de62-4043-86d9-e3fd1fe5c6b5) **Tracabilite au clic** -- cliquer une barre remonte la valeur jusqu'a sa lecture bronze (EF-04) : instant, valeur affichee, valeur lue, methode de reconstitution et qualite. Ici une mesure directe, sans reconstitution. ![Tracabilite d'un point](https://10.105.200.41/attachments/02df8fd8-4898-4a83-be15-80e4e0211a2a) ## Relecture - [ ] Un pair a relu et laissé un commentaire, même court - [ ] Ses remarques sont traitées, ou une réponse explique pourquoi elles ne le sont pas ## Ce qui suit le code (rien de coché : aucun runbook, ADR, incident ni variable d'environnement nouvelle) ## Où regarder en priorité - **La traçabilité est branchée sur le point qu'on regarde déjà**, pas sur une route à deviner : chaque barre est cliquable et charge `/v1/sites/{id}/tracabilite` pour son horodatage. L'API rend 404 sur un instant qui ne correspond à aucun point de la fenêtre 24 h — à vérifier que le comportement au clic reste lisible dans ce cas. - `SiteView` recharge tout au changement de `:id` via un `watch`, pas seulement `onMounted` : vue-router réutilise l'instance du composant entre deux sites de la même route nommée. - Les trois routes ajoutées ici visent `/v1/…` comme les précédentes (voir PR #139 pour le pourquoi du préfixe). **Après cette PR, il reste à #24** : l'écran Qualité (ses routes existent, PR #137), l'affichage des alertes, la garde de route sur 401, axe-core, les tests e2e et la vérification aux trois largeurs.
dashboard : écran Site — fiche, courbe, recommandations, traçabilité (ticket #24)
Some checks failed
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m8s
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 4s
Intégration / Aucun secret commité (pull_request) Successful in 3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Failing after 7m14s
8dad3c2b63
Nouvel écran sur /sites/:id : FicheSite (référentiel et état courant),
GraphiqueSite (une série, sa référence en pointillé, prévision H+1 et son
écart), RecommandationsSite, TracabiliteDetail. Quatre widgets, quatre
statuts indépendants (stores/site.js) — une fiche en échec ne bloque pas
la courbe ni les recommandations.

Chaque barre de GraphiqueSite est cliquable : elle charge la traçabilité
de ce point (EF-04, « une valeur jusqu'à la lecture bronze »), affichée
par TracabiliteDetail à côté — pas une route à deviner, le point qu'on
regarde déjà. Les points imputés se distinguent en permanence sur la
courbe (teinte allégée + légende), pas seulement au survol : le manque
laissé sur l'écran Parc est corrigé ici.

Intégration : le nom d'un site dans le tableau du Parc mène désormais à
sa fiche.

Les trois routes ajoutées ici (fiche, recommandations, traçabilité) visent
« /v1/… » comme les précédentes : le préfixe « /api » appartient à Caddy, qui
le retire avant de relayer, et c'est VITE_API_BASE qui le pose.

43 tests neufs (207 au total pour le front), build de production propre.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P6BwMkMyRBYJJYaHheLwGY
marvin force-pushed marvin/24-ecran-site from 8dad3c2b63
Some checks failed
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m8s
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 4s
Intégration / Aucun secret commité (pull_request) Successful in 3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Failing after 7m14s
to c49b00821f
All checks were successful
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 1m28s
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 3s
Intégration / Aucun secret commité (pull_request) Successful in 2s
2026-09-04 08:02:07 +00:00
Compare
marvin changed title from dashboard : �cran Site � fiche, courbe, recommandations, tra�abilit� (#24) to dashboard : écran Site — fiche, courbe, recommandations, traçabilité (#24) 2026-09-04 08:04:04 +00:00
marvin self-assigned this 2026-09-04 08:35:48 +00:00
marvin requested review from justine 2026-09-04 08:52:57 +00:00
Merge branch 'marvin/24-ecran-parc' into marvin/24-ecran-site
All checks were successful
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 5s
Intégration / Aucun secret commité (pull_request) Successful in 3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 28s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m54s
6fbf3e5c3a
Member

Les critères de l'écran "site" sont validés par contre quelques petits soucis sur le RGAA :

  • on ne peut pas atteindre la traçabilité juste avec le clavier (onClick: surClicBarre -> .toile-conteneur est tabindex="0")
  • les couleurs trop similaires entre la valeur et la valeur imputée -> COULEUR_SERIE_IMPUTEE = COULEUR_SERIE avec juste 40% + la légende utilise les 2 mêmes pastilles

Autres petits bugs :

  • le clic hors "24h" va donner un 404 sur toutes les barres sauf la dernière
  • petite incohérence sur l'emplacement des traductions entre LIBELLE_METHODE, LIBELLE_QUALITE et glossaire.js
  • comme pour la #139 on utilise pas la bonne unité sur le kw : Consommation -> kWh avec des valeur_kw
Les critères de l'écran "site" sont validés par contre quelques petits soucis sur le RGAA : - on ne peut pas atteindre la traçabilité juste avec le clavier (onClick: surClicBarre -> .toile-conteneur est tabindex="0") - les couleurs trop similaires entre la valeur et la valeur imputée -> COULEUR_SERIE_IMPUTEE = COULEUR_SERIE avec juste 40% + la légende utilise les 2 mêmes pastilles Autres petits bugs : - le clic hors "24h" va donner un 404 sur toutes les barres sauf la dernière - petite incohérence sur l'emplacement des traductions entre LIBELLE_METHODE, LIBELLE_QUALITE et glossaire.js - comme pour la #139 on utilise pas la bonne unité sur le kw : Consommation -> kWh avec des valeur_kw
marvin changed target branch from marvin/24-ecran-parc to develop 2026-09-07 07:37:11 +00:00
dashboard: la traçabilité s'atteint au clavier, et se distingue à l'œil (#24)
All checks were successful
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 6s
Intégration / Aucun secret commité (pull_request) Successful in 3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 34s
Infra Ansible / Playbooks Ansible valides (pull_request) Successful in 59s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m58s
3bbc9d28b6
Relecture de la #140.

Accès clavier. La traçabilité se prenait au clic seul. Le conteneur portait
déjà « tabindex="0" » — l'intention était là — mais aucune touche n'était
écoutée : au clavier, la traçabilité était hors d'atteinte. Les flèches
parcourent les barres, Home et Fin mènent aux bouts, Entrée ouvre la
traçabilité de la barre désignée. Un anneau la marque sur le canevas, et une
ligne sous le graphique dit ce qu'elle vaut — l'anneau dit laquelle, jamais
combien.

Valeur reconstituée. Elle se distinguait par la même teinte à 40 %, que la
légende répétait à l'identique. Deux nuances d'une même teinte se distinguent
mal sous faible contraste, et l'aplat clair ne tenait pas les 3:1 attendus
d'un élément graphique. La barre porte maintenant des hachures et un contour :
la forme dit la différence, la couleur ne fait que la redoubler. La pastille
de légende reprend les mêmes hachures.

Traçabilité hors 24 h. L'API ne trace qu'un point de la fenêtre 24 h ; au-delà
le pas est journalier et une barre agrège vingt-quatre relevés. Le clic
partait quand même, et rendait 404 sur toutes les barres sauf la dernière —
son début de journée tombant encore dans les vingt-quatre dernières heures.
On ne le propose plus, et on dit pourquoi, au lieu de le faire découvrir par
une erreur. La condition porte sur le pas rendu par l'API, pas sur la valeur
du sélecteur.

Traductions. LIBELLE_METHODE et LIBELLE_QUALITE vivaient dans
TracabiliteDetail.vue, alors que glossaire.js dit porter la traduction des
valeurs d'énumération « et nulle part ailleurs dans le front ». Elles y
rejoignent les autres, avec le repli des voisines.

Unité. Le titre annonçait des kWh sur des valeur_kw. GraphiqueConsommation.vue
porte la même faute mais n'est pas touché ici : elle est déjà corrigée sur la
branche de la #139, et la corriger deux fois est exactement ce qui a produit
les conflits sur App.vue.

224 tests vitest passent, la construction est propre.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFGp2MvuHVuoJEss2G5nn1
Author
Member

corrigé !

corrigé !
Merge branch 'develop' into marvin/24-ecran-site
All checks were successful
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 33s
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 4s
Intégration / Aucun secret commité (pull_request) Successful in 2s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 3m33s
82de219c22
justine approved these changes 2026-09-07 09:01:36 +00:00
justine merged commit ce58c07e36 into develop 2026-09-07 09:01:43 +00:00
justine deleted branch marvin/24-ecran-site 2026-09-07 09:01:44 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
g2/enervision!140
No description provided.