Le bilan groupe sur une colonne constante, et s affiche

Le panneau rendait sept « — » malgre trois tentatives : correction du selecteur
de champs, ajout des unites, bornes de l'axe tirees des donnees au lieu des
macros de temps. Verifie entre-temps que ce n'etait ni le cache du navigateur
ni le rechargement — le md5 du fichier servi par Grafana est identique a celui
du depot — et que le serveur ne journalisait aucune erreur de requete.

Il ne restait qu'une difference structurelle avec l'histogramme du meme
tableau, qui partage exactement les memes CTE et s'affiche sans probleme :
celui-ci groupe par heure, le bilan agregeait globalement. Le bilan groupe
desormais sur une colonne constante, masquee a l'affichage.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
Tallagrand Thierry
2026-09-07 23:57:00 +02:00
parent 686c2bad57
commit 41fa2c9b3b
2 changed files with 24 additions and 3 deletions

View File

@@ -1274,7 +1274,15 @@ report AS (
# Une seule ligne, six colonnes : c'est le resume que l'on lit en premier.
# L'autonomie se calcule sur la maison SANS la voiture, sinon une grosse charge
# solaire du vehicule gonfle artificiellement le taux.
# ⚠️ Le `GROUP BY 1` sur une colonne constante n'est pas cosmetique. Un agregat
# GLOBAL (sans GROUP BY) sur ces CTE rendait un panneau vide — sept « — » —
# alors que la meme requete donnait les bons totaux en psql, que le fichier
# servi par Grafana etait bien le dernier (md5 verifie) et que le serveur ne
# journalisait aucune erreur. L'histogramme, qui partage exactement les memes
# CTE mais groupe par heure, s'affichait lui sans probleme : le GROUP BY etait
# la derniere difference structurelle entre les deux.
BILAN_TOTAUX = BILAN_BASE + """SELECT
'Journee' AS "Periode",
round((sum(pv) / 60.0 / 1000.0)::numeric, 1) AS "Solaire produit",
round((sum(maison) / 60.0 / 1000.0)::numeric, 1) AS "Maison consommee",
round((sum(reseau) / 60.0 / 1000.0)::numeric, 1) AS "Reseau importe",
@@ -1283,7 +1291,7 @@ BILAN_TOTAUX = BILAN_BASE + """SELECT
round((sum(greatest(-batterie, 0)) / 60.0 / 1000.0)::numeric, 1) AS "Batterie rendue",
round((100.0 * greatest(sum(maison) - sum(reseau), 0)
/ nullif(sum(maison), 0))::numeric, 0) AS "Autonomie"
FROM report"""
FROM report GROUP BY 1"""
BILAN_FLUX = BILAN_BASE + """SELECT t AS time,
pv AS "Production solaire",
@@ -1305,7 +1313,8 @@ journee = dashboard(
"consommation de la maison qui n'est PAS venue du reseau. "
"« Batterie rendue » est ce qu'elle a restitue, donc du solaire "
"differe et non une consommation supplementaire.",
overrides=[sur(n, [{"id": "unit", "value": "kwatth"}]) for n in
overrides=[sur("Periode", [{"id": "custom.hidden", "value": True}])]
+ [sur(n, [{"id": "unit", "value": "kwatth"}]) for n in
("Solaire produit", "Maison consommee", "Voiture",
"Batterie chargee", "Batterie rendue")]
+ [sur("Reseau importe", [{"id": "unit", "value": "kwatth"},