Add telemetry dashboard and automatic server names; record Workshop 0.0.137
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-11-01 19:29:54 +01:00
parent b8dfa9184e
commit 6ba3036de6
23 changed files with 1509 additions and 16 deletions
@@ -0,0 +1,3 @@
-- Bounded per-server lookup of the last stored report, including late events
-- that did not change the authoritative mission snapshot.
CREATE INDEX events_server_receipt ON events(server_id, received_at DESC, id DESC);
@@ -0,0 +1,24 @@
-- Names describe an installation; its existing UUID remains the identity.
-- Operator-managed labels remain under operator control.
ALTER TABLE servers ADD COLUMN name_reported_at INTEGER;
UPDATE servers SET
name = (SELECT trim(json_extract(payload, '$.serverName')) FROM events
WHERE events.server_id = servers.server_id AND trim(json_extract(payload, '$.serverName')) != ''
ORDER BY json_extract(payload, '$.occurredAt') DESC, id DESC LIMIT 1),
name_reported_at = (SELECT json_extract(payload, '$.occurredAt') FROM events
WHERE events.server_id = servers.server_id AND trim(json_extract(payload, '$.serverName')) != ''
ORDER BY json_extract(payload, '$.occurredAt') DESC, id DESC LIMIT 1)
WHERE registration = 'automatic' AND EXISTS (
SELECT 1 FROM events WHERE events.server_id = servers.server_id
AND trim(json_extract(payload, '$.serverName')) != '');
-- This runs only for a newly accepted, authenticated event in its transaction.
-- Blank reports and old queued events must not erase/roll back a known name.
CREATE TRIGGER project_server_name AFTER INSERT ON events
WHEN trim(json_extract(NEW.payload, '$.serverName')) != '' BEGIN
UPDATE servers SET name = trim(json_extract(NEW.payload, '$.serverName')),
name_reported_at = json_extract(NEW.payload, '$.occurredAt')
WHERE server_id = NEW.server_id AND registration = 'automatic'
AND (name_reported_at IS NULL OR json_extract(NEW.payload, '$.occurredAt') >= name_reported_at);
END;