Le bilan tire ses bornes des donnees, plus des macros de temps

Le panneau rendait sept « — » alors que sa requete donnait les bons totaux en
psql, avec la substitution exacte que Grafana applique, et que le serveur ne
journalisait aucune erreur : une ligne de NULL, donc un axe de minutes vide
cote Grafana.

Les bornes de generate_series venaient de $__timeFrom() et $__timeTo(). Elles
viennent desormais du min et du max de la table sur la fenetre, et la seule
macro restante est $__timeFilter(ts) — exactement la forme du panneau « Sur la
periode » des vehicules, qui lui a toujours fonctionne.

C'est aussi plus juste physiquement : on n'extrapole plus au-dela de la
derniere mesure observee.

Note d'exploitation : le GRAFANA_ADMIN_PASSWORD du .env n'est pas celui en
service. Grafana n'applique cette variable qu'a la creation initiale de
l'admin, jamais a un compte deja existant — l'API refuse donc ce mot de passe.

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:49:47 +02:00
parent 44eb415cb8
commit 686c2bad57
2 changed files with 16 additions and 5 deletions

View File

@@ -1228,9 +1228,20 @@ BILAN_CLES = [
]
_bn = [n for _, n in BILAN_CLES]
BILAN_BASE = ("""WITH axe AS (
SELECT generate_series(date_trunc('minute', $__timeFrom()::timestamptz),
date_trunc('minute', $__timeTo()::timestamptz),
# ⚠️ Les bornes de l'axe viennent des DONNEES (min/max de `mesure` dans la
# fenetre), pas des macros `$__timeFrom()` / `$__timeTo()`. Ce panneau rendait
# sept « — » a l'ecran alors que la requete donnait les bons totaux en psql et
# que Grafana ne journalisait aucune erreur : une ligne de NULL, donc un axe
# vide cote serveur. La seule macro utilisee ici est `$__timeFilter(ts)`, comme
# dans le panneau « Sur la periode » des vehicules, qui lui a toujours marche.
# C'est aussi plus juste physiquement : on n'extrapole pas au-dela de la
# derniere mesure observee.
BILAN_BASE = ("""WITH bornes AS (
SELECT min(ts) AS d, max(ts) AS f FROM mesure WHERE $__timeFilter(ts)
),
axe AS (
SELECT generate_series(date_trunc('minute', (SELECT d FROM bornes)),
date_trunc('minute', (SELECT f FROM bornes)),
interval '1 minute') AS t
),
releve AS (