Watchdog: Embeds statt Textzeilen, dazu eine Uebersicht im Panel
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

Die DM-Alarme waren als einzige Meldung noch reiner Text — direkt neben dem
Raid-Alarm, der ein Embed ist. Jetzt beide im selben Look, mit Ausfalldauer
bzw. Fehlergrund und Antwortzeit als Felder.

Uebersicht im Panel (System, unter den Watchdog-URLs): je Adresse ein
Erreichbarkeits-Balken ueber 7 Tage, gruen/rot/grau wie bei den Game-Servern,
dazu Status, Antwortzeit und seit wann etwas weg ist.

Dafuer schreibt der Waechter jetzt mit — vorher lebte sein Zustand nur im
Speicher und war nach jedem Neustart weg. Neue Tabelle watchdog_history,
gleiche Bauart und gleiche 7-Tage-Aufbewahrung wie player_history, stundenweise
zusammengefasst statt roh ausgeliefert.

Wichtig dabei: aufgezeichnet wird jeder Check, nicht nur die Wechsel. Sonst
saehen ruhige Stunden im Balken aus wie Messluecken.

Der Balken ist aus Server.jsx in components/UptimeTrack.jsx gewandert, damit
oeffentliche Seite und Panel denselben benutzen. Er zeigt die Antwortzeit im
Tooltip nur, wo sie erhoben wird — bei Game-Servern gibt es keine.

Der Endpunkt /api/watchdog liegt hinter der Rechtepruefung, nicht oeffentlich:
in der Adressliste koennen interne Dienste stehen.

Zwei fehlende Importe in api.js gefunden und ergaenzt (moduleEnabled, tuning) —
der erste Aufruf der Route waere sonst mit ReferenceError gestorben.

Geprueft: alle 171 SQL-Abfragen gegen das Schema, die drei neuen inklusive.
Im Browser mit drei Faellen — laeuft, ist weg, noch nie geprueft: Punktfarbe,
Quote, Ausfallstunden und Messluecken stimmen, die ungepruefte Adresse zeigt
korrekt gar keinen Balken. Oeffentliche Server-Seite nach dem Umbau
gegengeprueft.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-01 05:28:22 +02:00
co-authored by Claude Fable 5
parent 2d4afad3cb
commit fd2d31f07f
7 changed files with 222 additions and 78 deletions
+18
View File
@@ -1815,6 +1815,24 @@ label.toggle {
.dash-group-name { flex-basis: 7rem; }
}
/* ── WATCHDOG-ÜBERSICHT ────────────────────────────── */
.wd-card { padding: .9rem 1.1rem; margin-bottom: .7rem; min-width: 0; }
.wd-head { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.wd-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.wd-dot.an { background: var(--success, #3ba55d); }
.wd-dot.aus { background: #f23f43; }
.wd-dot.wartet { background: var(--muted2); }
.wd-url {
font-family: var(--mono); font-size: .74rem;
color: var(--text); text-decoration: none;
overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
}
.wd-url:hover { color: var(--neon); }
.wd-meta {
margin-left: auto; font-family: var(--mono);
font-size: .62rem; letter-spacing: .06em; color: var(--muted2); white-space: nowrap;
}
/* ── ERREICHBARKEITS-BALKEN ────────────────────────── */
/* Ein Strich pro Stunde, 168 Stück. Auf schmalen Schirmen werden die Striche
dünner als ein Pixel — deshalb scrollt der Balken dort lieber, statt zu