Jalon : le tableau de bord sur données réelles, et la prévision qui écrit enfin #193
No reviewers
Labels
No labels
Compat/Breaking
EC01
EC02
EC03
EC04
EC05
EC06
Kind/BDD
Kind/Back
Kind/Bug
Kind/CICD
Kind/Cloud
Kind/Contenu
Kind/Data
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Front
Kind/IA
Kind/Infra
Kind/Monitoring
Kind/Security
Kind/Testing
Portée/Post-jury
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
ops/alerte
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
g2/enervision!193
Loading…
Reference in a new issue
No description provided.
Delete branch "develop"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
20 commits. Deux d'entre eux lèvent les deux points bloquants du pack de liens demandé par le formateur pour EC05 et EC06.
Ce que ça change sur le serveur
Le tableau de bord quitte les données inventées (#182). Cinq lectures sur huit lisent PostgreSQL : les alertes, la traçabilité d'une valeur, le journal de collecte et les deux courbes. L'écran Qualité servira les 14 431 alertes réelles de la base au lieu des quatre écrites en dur.
Le job de prévision se met à écrire (#192). Il exigeait ses vingt-quatre retards jusqu'à l'heure précédente, que
mesure_horairene matérialise jamais à temps : sept sites écartés, zéro ligne, à chaque passe. Éprouvé contreenervision_prodavant d'approuver :Les sept sites trouvent leurs vingt-quatre heures consécutives, avec trois heures de marge.
public.previsioncessera d'être vide, et R1 cessera de rendre sept indécisions par passe faute de prévision.La socket Docker ne fuit plus dans les conteneurs de tâche (#189). Le serveur tourne encore avec
docker_host: "unix:///var/run/docker.sock", qui donne un accès root à n'importe quelle poussée. Attention : ce correctif demande--tags ci, que le déploiement continu ne joue jamais, et c'est délibéré — la chaîne tourne sur cet exécuteur. C'est donc un geste manuel à faire après.Deux manuels d'exploitation (#187, #191) : le réentraînement, quatrième geste sensible d'ENF-16 qui n'existait pas, et la correction du rejeu du collecteur trouvée par Justine en le rejouant sans aide.
Ce que ça ne pose pas
Déploiement court, cinq minutes environ. PostgreSQL n'est pas recréé pour cause de montage de fichier ; il l'est de toute façon par
build: true, comportement inchangé.Critères de sortie
failed=0https://app.g2.enervisionse charge et l'écran Qualité montre des alertes issues de la base:35,public.previsionn'est plus vide:45, R1 ne rend plus « grandeurs absentes : prevision_kw »Ce qui reste après
--tags cià jouer à la main pour le #103. Et la #190, les sections « quand ça échoue » dereprise.mdetdeploiement.md, qui attend un relecteur.La chaîne a rougi sur quatre cas du tableau de bord : `glossaire.js` a gagné `measured` et rendu à `none` son sens de trou assumé, mais les cas qui l'exercent affirmaient encore l'ancien. Faute de ma part — j'ai modifié le glossaire sans rejouer la suite du tableau de bord derrière. DEUX JEUX D'ESSAI SE CONTREDISAIENT, et c'est plus intéressant qu'un simple renommage. `JournalCollecte` posait `repartition_methode: { none: 1050, interpolated: 147 }` avec `releves_manquants: 243` et `releves_attendus: 1440`. Sous le sens de la migration 0010, `none` est le trou assumé : la somme aurait dû faire les attendus, et `none` valoir les manquants. La forme juste est donc `{ measured: 1050, interpolated: 147, none: 243 }` — 1050 + 147 + 243 = 1440, et `none` = 243 = les manquants. C'est exactement l'invariant relevé sur SITE006 en production, qui est justement le site de ce jeu. `TracabiliteDetail` posait `methode: 'none'` avec `valeur_brute_kw: 104`. Un trou assumé n'a par définition aucune valeur : la fixture décrivait une ligne qui ne peut pas exister. C'est `measured`. Les deux ne « passaient » que parce que le front traduisait `none` par « mesure directe ». Corriger le glossaire les a mis à nu, ce qui est le comportement attendu d'un jeu d'essai qui dit la vérité de la donnée. `descriptionMethode('measured')` garde la formulation que l'équipe avait écrite — « mesure directe, aucune reconstitution » — déplacée sur la bonne clé plutôt que réécrite : elle s'accorde avec le libellé court. 373 cas du tableau de bord, 915 unitaires Python, ruff check et format. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>