From bcd956d11a7a4949ff7d5d9012cd4c3c8a83c808 Mon Sep 17 00:00:00 2001 From: Andriy Oblivantsev Date: Wed, 8 Jul 2026 20:34:37 +0100 Subject: [PATCH] fix: wire live mode and Grafana to the generated data stream Use the real hive column name (`drone`) in the prototype's live query and pin the Grafana datasource uid to `swarm-prom` so provisioned dashboards resolve their Prometheus source in k3d. --- infra/terraform/sim-env/main.tf | 4 ++++ prototype/src/live.ts | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/infra/terraform/sim-env/main.tf b/infra/terraform/sim-env/main.tf index 9215ab3..5964d49 100644 --- a/infra/terraform/sim-env/main.tf +++ b/infra/terraform/sim-env/main.tf @@ -298,8 +298,12 @@ resource "kubernetes_config_map" "grafana_provisioning" { data = { "datasource.yml" = <<-EOT apiVersion: 1 + deleteDatasources: + - name: Prometheus + orgId: 1 datasources: - name: Prometheus + uid: swarm-prom type: prometheus access: proxy url: http://prometheus:9090 diff --git a/prototype/src/live.ts b/prototype/src/live.ts index 152ad70..fe723b4 100644 --- a/prototype/src/live.ts +++ b/prototype/src/live.ts @@ -20,24 +20,24 @@ export interface LivePose { // latest battery reading from telemetry. arg_max keeps it a single scan. const LIVE_SQL = ` WITH pose AS ( - SELECT drone_id, + SELECT drone, arg_max(pos_x, ts_ns) AS x, arg_max(pos_y, ts_ns) AS y, arg_max(yaw, ts_ns) AS yaw, max(ts_ns) AS ts_ns FROM state WHERE direction = 'sent' - GROUP BY drone_id + GROUP BY drone ), batt AS ( - SELECT drone_id, arg_max(level_pct, ts_ns) AS battery + SELECT drone, arg_max(level_pct, ts_ns) AS battery FROM telemetry WHERE sensor = 'battery' - GROUP BY drone_id + GROUP BY drone ) -SELECT p.drone_id, p.x, p.y, p.yaw, p.ts_ns, b.battery -FROM pose p LEFT JOIN batt b USING (drone_id) -ORDER BY p.drone_id`; +SELECT p.drone, p.x, p.y, p.yaw, p.ts_ns, b.battery +FROM pose p LEFT JOIN batt b USING (drone) +ORDER BY p.drone`; interface QueryResponse { columns?: string[];