Erreichbarkeits-Balken auf der Server-Seite
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

Ein Strich pro Stunde ueber 7 Tage, gruen/gelb/rot je nachdem, ob in der Stunde
alle, ein Teil oder keine Messung erreichbar war.

Die Daten lagen laengst da: player_history haelt 7 Tage vor, die API schnitt
aber auf 24 Stunden ab. Statt Rohdaten (ueber eine Woche rund 5000 Zeilen pro
Server) fasst uptimeBuckets() in SQL stundenweise zusammen — hoechstens 168
Zeilen.

- Stunden ohne Messung werden als Luecke gezeichnet, nicht als "online". Sonst
  saehe eine Bot-Auszeit aus wie ein einwandfrei laufender Server.
- Die alte 24h-Uptime-Zahl neben dem Peak ist raus: zweimal dieselbe Groesse
  ueber verschiedene Zeitraeume verwirrt nur.
- Tooltip zeigt Ortszeit. Die Eimer werden in UTC abgeglichen (SQLite rechnet
  so), angezeigt wird lokal — sonst stuende dort eine Stunde, die niemand
  wiedererkennt.

Zwei Fehler beim Bauen gefunden und behoben:
- .srv-card ist ein Grid-Item mit min-width:auto und wuchs durch die 168
  Striche auf 724 statt 335 px, die Karte sprengte auf dem Handy das Raster.
- "Uhr" stand hart deutsch im Tooltip.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-01 04:09:19 +02:00
co-authored by Claude Fable 5
parent c0a56c1eb5
commit 1e2d295665
6 changed files with 126 additions and 13 deletions
+4 -1
View File
@@ -15,7 +15,7 @@ import {
saveWebAdmin, webAdminScopes, listWebAdmins, deleteWebAdmin,
saveTemplate, listTemplates, deleteTemplate,
getLevelRow, isPlaytester, saveWish, toggleWishVote, myWishVotes,
logAudit, listAudit, playerHistory, deleteUserData,
logAudit, listAudit, playerHistory, uptimeBuckets, deleteUserData,
saveSsoApp, listSsoApps, deleteSsoApp, getSsoApp,
createService, updateService, listServices, deleteService,
savePage, getPage, listPages, listPublishedPages, deletePage,
@@ -182,6 +182,9 @@ export function registerApiRoutes(app, client) {
ping: r?.ping ?? null,
checkedAt: r?.checkedAt ?? null,
history: playerHistory(s.id, 24),
// Erreichbarkeit der letzten 7 Tage, stundenweise. Länger geht
// nicht: prunePlayerHistory räumt alles Ältere weg.
uptime: uptimeBuckets(s.id, 168),
};
}),
}));