front+api : le panneau de traçabilité nomme les deux grandeurs qu'il montre #224

Merged
lenaic merged 1 commit from lenaic/215-tracabilite-honnete into develop 2026-09-09 08:30:49 +00:00
Owner

Ferme le #215, rouvert ce matin après vérification.

Le défaut

La courbe a un pas d'une heure : chaque barre est la moyenne des soixante minutes, lue dans mesure_horaire. La route de traçabilité lit public.mesure à la clé exacte (site_id, horodatage) — donc la minute pile du haut de l'heure, une sur soixante. La ligne s'appelait « Valeur affichée ».

Relevé sur enervision_prod, SITE003, ce matin :

 heure    courbe      panneau     écart
 05:00   749,40 kW   744,11 kW    -5,29
 04:00   757,55 kW   810,26 kW   +52,71
 03:00   763,90 kW   773,61 kW    +9,71

Le mécanisme d'auditabilité est juste de bout en bout : la clé est commune de la zone bronze à la zone or, c'est vérifiable, c'est l'ENF-07. C'était son appariement à l'écran qui mentait. Et PanneauIdentite.vue affirme mot pour mot « Chaque valeur affichée remonte à sa lecture et à sa méthode ».

Le remède

Le panneau montre les deux, séparés et nommés :

  • Ce que la courbe affiche — la moyenne de l'heure, et sur combien de minutes elle porte
  • Lecture d'origine d'une de ces minutes — valeur retenue, valeur brute, méthode, qualité

Une phrase sous les deux blocs dit que l'écart est normal. C'est plus fort que l'ancien affichage, parce que c'est vrai : on voit la moyenne, on voit une des minutes qui la composent, et on voit le lien entre les deux.

Quand le point n'agrège rien, l'ancien affichage est conservé tel quel : pas de second bloc inventé pour une grandeur unique.

Un second défaut, dans le même sujet

La série porte désormais minutes_retenues et minutes_ecartees, sommes de releves_pris_en_compte et releves_exclus que la migration 0016 pose depuis toujours et que personne ne lisait.

Une heure dont la moyenne porte sur DEUX minutes s'affichait comme une heure pleine — vu le 08/09 à 08:00 sur SITE003. Le panneau le signale maintenant, en teinte de vigilance dès que la couverture tombe sous la moitié.

Vérifications

  • cinq cas neufs sur le panneau, trois assertions de GraphiqueSite mises à jour
  • 346 cas Python au vert, mypy --strict et ruff propres
  • la requête passée à la main sur enervision_prod : les sommes de minutes sont justes

Une assertion a failli partir fausse. formaterKw arrondit à l'entier (maximumFractionDigits: 0), donc 757,55 s'écrit « 758 » et non « 757,6 ». Vérifié avant de commettre plutôt qu'après une chaîne rouge.

Ce que ça débloque

Le chapitre 03 de la vidéo de démonstration, celui qui doit prouver l'auditabilité. En l'état précédent, le filmer montrait le contraire de la thèse.

Hors périmètre

Changer le pas de la courbe : 1 440 points par site sur 24 h n'est pas la réponse.

Changer mesure_horaire ou la traçabilité à la minute. Les deux sont justes chacune dans son grain.

Ferme le #215, rouvert ce matin après vérification. ### Le défaut La courbe a un pas d'une heure : chaque barre est la moyenne des soixante minutes, lue dans `mesure_horaire`. La route de traçabilité lit `public.mesure` à la clé exacte `(site_id, horodatage)` — donc **la minute pile du haut de l'heure, une sur soixante**. La ligne s'appelait « Valeur affichée ». Relevé sur `enervision_prod`, SITE003, ce matin : ``` heure courbe panneau écart 05:00 749,40 kW 744,11 kW -5,29 04:00 757,55 kW 810,26 kW +52,71 03:00 763,90 kW 773,61 kW +9,71 ``` Le mécanisme d'auditabilité est **juste de bout en bout** : la clé est commune de la zone bronze à la zone or, c'est vérifiable, c'est l'ENF-07. C'était son **appariement à l'écran** qui mentait. Et `PanneauIdentite.vue` affirme mot pour mot « Chaque valeur affichée remonte à sa lecture et à sa méthode ». ### Le remède Le panneau montre les deux, séparés et nommés : - **Ce que la courbe affiche** — la moyenne de l'heure, et sur combien de minutes elle porte - **Lecture d'origine d'une de ces minutes** — valeur retenue, valeur brute, méthode, qualité Une phrase sous les deux blocs dit que l'écart est normal. C'est **plus fort que l'ancien affichage, parce que c'est vrai** : on voit la moyenne, on voit une des minutes qui la composent, et on voit le lien entre les deux. Quand le point n'agrège rien, l'ancien affichage est conservé tel quel : pas de second bloc inventé pour une grandeur unique. ### Un second défaut, dans le même sujet La série porte désormais `minutes_retenues` et `minutes_ecartees`, sommes de `releves_pris_en_compte` et `releves_exclus` que la migration 0016 pose depuis toujours et que **personne ne lisait**. Une heure dont la moyenne porte sur DEUX minutes s'affichait comme une heure pleine — vu le 08/09 à 08:00 sur SITE003. Le panneau le signale maintenant, en teinte de vigilance dès que la couverture tombe sous la moitié. ### Vérifications - cinq cas neufs sur le panneau, trois assertions de `GraphiqueSite` mises à jour - 346 cas Python au vert, `mypy --strict` et `ruff` propres - la requête passée à la main sur `enervision_prod` : les sommes de minutes sont justes **Une assertion a failli partir fausse.** `formaterKw` arrondit à l'entier (`maximumFractionDigits: 0`), donc 757,55 s'écrit « 758 » et non « 757,6 ». Vérifié avant de commettre plutôt qu'après une chaîne rouge. ### Ce que ça débloque Le chapitre 03 de la vidéo de démonstration, celui qui doit prouver l'auditabilité. En l'état précédent, le filmer montrait le contraire de la thèse. ### Hors périmètre Changer le pas de la courbe : 1 440 points par site sur 24 h n'est pas la réponse. Changer `mesure_horaire` ou la traçabilité à la minute. Les deux sont justes chacune dans son grain.
lenaic self-assigned this 2026-09-09 07:54:56 +00:00
front+api: le panneau de tracabilite nomme les deux grandeurs qu'il montre (#215)
All checks were successful
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 8s
Intégration / Workflows — lint et audit de sécurité (pull_request) Successful in 22s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 40s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 5m41s
e7254aec8c
La courbe a un pas d'une heure : chaque barre est la moyenne des soixante
minutes, lue dans mesure_horaire. La route de tracabilite lit public.mesure a la
cle exacte (site_id, horodatage), donc la minute PILE du haut de l'heure, une
sur soixante. La ligne s'appelait « Valeur affichee ». Elle ne l'etait pas.

Releve sur enervision_prod, SITE003, le 09/09 :

    heure    courbe      panneau     ecart
    05:00   749,40 kW   744,11 kW    -5,29
    04:00   757,55 kW   810,26 kW   +52,71
    03:00   763,90 kW   773,61 kW    +9,71

Le mecanisme d'auditabilite est juste de bout en bout : la cle est commune de la
zone bronze a la zone or, c'est verifiable et c'est l'ENF-07. C'etait son
APPARIEMENT a l'ecran qui mentait, et PanneauIdentite.vue affirme mot pour mot
« Chaque valeur affichee remonte a sa lecture et a sa methode ».

Le panneau montre desormais les deux, separes et nommes. « Ce que la courbe
affiche » : la moyenne de l'heure, et sur combien de minutes elle porte. « Lecture
d'origine d'une de ces minutes » : valeur retenue, valeur brute, methode,
qualite. Une phrase sous les deux blocs dit que l'ecart est normal.

C'est plus fort que l'ancien affichage, parce que c'est vrai : on voit la
moyenne, on voit une des minutes qui la composent, et on voit le lien.

La serie porte donc minutes_retenues et minutes_ecartees, sommes de
releves_pris_en_compte et releves_exclus que la migration 0016 pose depuis
toujours et que personne ne lisait. Second usage, dans le meme sujet : une heure
dont la moyenne porte sur DEUX minutes s'affichait comme une heure pleine — vu le
08/09 a 08:00 sur SITE003. Le panneau le signale maintenant.

chargerTracabilite prend le point entier et non son seul horodatage. Il reste
compatible avec un horodatage nu, que les cas d'essai et la vue site lui passent.

Eprouve : cinq cas neufs sur le panneau, trois assertions de GraphiqueSite mises
a jour, 346 cas Python au vert, mypy --strict et ruff propres. La requete a ete
passee a la main sur enervision_prod.

Une assertion de test a failli partir fausse : formaterKw arrondit a l'entier
(maximumFractionDigits: 0), 757,55 s'ecrit donc « 758 » et non « 757,6 ».
Verifie avant de commettre, pas apres la chaine rouge.
gabriel approved these changes 2026-09-09 08:30:30 +00:00
lenaic merged commit 4446236eec into develop 2026-09-09 08:30:49 +00:00
lenaic deleted branch lenaic/215-tracabilite-honnete 2026-09-09 08:30:49 +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!224
No description provided.