From 842641562b1165d3233f08fad578b60be3548907 Mon Sep 17 00:00:00 2001 From: claude-dev Date: Sat, 25 Jul 2026 19:16:21 +0000 Subject: [PATCH] feat(zugaenge): X-Zugang und Telegram-Zugang als gleichwertige Dienst-Karten Beide Dienste erscheinen als Karte mit Lucide-Icon im Titel (X-Kreuz, Telegram-Papierflieger) und derselben Tabellenstruktur (Benutzername, E-Mail bzw. Telefon, Status, Anfragen, Letzte Nutzung/Pruefung, Aktionen). Die nackte Konten-Zaehlung entfaellt, die X-Knoepfe ziehen in den Kartenkopf. Telegram-Zeile zeigt Konto, Telefonnummer (Monitor-Commit 5450fd2), Status und letzte Pruefung. Co-Authored-By: Claude Fable 5 --- src/static/dashboard.html | 40 +++++++++++++++++++++++++------------- src/static/js/x-scraper.js | 38 +++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 1a5dfde..910be7f 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -358,19 +358,13 @@
-

Telegram-Zugang

-
Lade…
-
-
-
- +
+

X-Zugang

+
+ + +
-
- - -
-
-
@@ -387,6 +381,26 @@
+
+
+

Telegram-Zugang

+
+
+ + + + + + + + + + + + +
BenutzernameTelefonStatusAnfragenLetzte PrüfungAktionen
Lade…
+
+
@@ -976,7 +990,7 @@ - +
diff --git a/src/static/js/x-scraper.js b/src/static/js/x-scraper.js index cde246a..42081a2 100644 --- a/src/static/js/x-scraper.js +++ b/src/static/js/x-scraper.js @@ -16,36 +16,38 @@ async function loadXScraperAccounts() { } } -// Telegram-Session-Status (vom Monitor in die geteilte DB gemeldet) +// Telegram-Session-Status (vom Monitor in die geteilte DB gemeldet), +// dargestellt als Tabellenzeile im selben Format wie die X-Konten async function loadTelegramStatus() { - const box = document.getElementById("telegramStatusBox"); - if (!box) return; + const tbody = document.getElementById("telegramStatusTable"); + if (!tbody) return; try { const st = await API.get("/api/x-scraper/telegram-status"); if (!st.available) { - box.innerHTML = 'Noch keine Statusmeldung vom Monitor vorhanden. ' - + 'Der Monitor meldet den Status beim Start und täglich um 04:30 Uhr.'; + tbody.innerHTML = 'Noch keine Statusmeldung vom Monitor vorhanden. Der Monitor meldet beim Start und täglich um 04:30 Uhr.'; return; } - const stand = `Stand ${formatDateTime(st.updated_at)}`; - if (st.ok) { - box.innerHTML = `Session gültig ` - + `Verbunden${st.account ? " als " + esc(st.account) : ""}. ` - + `Die Telegram-Anmeldung läuft nicht periodisch ab, hier ist normalerweise nichts zu tun.${stand}`; - } else { - box.innerHTML = `Problem ` - + `${esc(st.error || "Session nicht autorisiert")}. ` - + `Die Telegram-Recherche ist pausiert, bis auf dem Server neu eingeloggt wurde.${stand}`; - } + const status = st.ok + ? 'Aktiv' + : 'Problem ' + esc(st.error || "Session nicht autorisiert") + ''; + const aktion = st.ok + ? '' + : 'Neu-Login nur auf dem Server möglich'; + tbody.innerHTML = ` + ${esc(st.account || "—")} + ${esc(st.phone || "—")} + ${status} + — + ${formatDateTime(st.updated_at)} + ${aktion} + `; } catch (err) { - box.innerHTML = 'Status konnte nicht geladen werden. ' + esc(err.message || "") + ''; + tbody.innerHTML = 'Status konnte nicht geladen werden. ' + esc(err.message || "") + ''; } } function renderXScraperAccounts(list) { const tbody = document.getElementById("xScraperTable"); - const cnt = document.getElementById("xScraperCount"); - if (cnt) cnt.textContent = list.length + (list.length === 1 ? " Konto" : " Konten"); if (!list.length) { tbody.innerHTML = 'Keine X-Recherche-Konten. Mit „+ Konto hinzufügen" anlegen.'; return;