diff --git a/app/store.py b/app/store.py index aeb68d2..6a1dcd6 100644 --- a/app/store.py +++ b/app/store.py @@ -618,6 +618,7 @@ class SQLiteStore(Store): "messages": conn.execute("DELETE FROM messages").rowcount, "sessions": conn.execute("DELETE FROM sessions").rowcount, "memories": conn.execute("DELETE FROM memories").rowcount, + "emergencies": conn.execute("DELETE FROM emergency_events").rowcount, } stats = 0 for tbl in ("usage", "web_search_usage", "cost_usage"): diff --git a/app/web/app.js b/app/web/app.js index c36a1ba..036133f 100644 --- a/app/web/app.js +++ b/app/web/app.js @@ -1182,7 +1182,7 @@ $("#btn-wipe-all").addEventListener("click", async () => { if (!confirm("Letzte Warnung: Alle Nutzerdaten werden jetzt gelöscht. Fortfahren?")) return; const res = await adminFetch("/api/admin/user-data", "DELETE"); if (res) { - alert(`Gelöscht: ${res.messages ?? 0} Nachrichten, ${res.sessions ?? 0} Sessions, ${res.stats ?? 0} Statistik-Zeilen, ${res.memories ?? 0} Erinnerungen.`); + alert(`Gelöscht: ${res.messages ?? 0} Nachrichten, ${res.sessions ?? 0} Sessions, ${res.stats ?? 0} Statistik-Zeilen, ${res.memories ?? 0} Erinnerungen, ${res.emergencies ?? 0} Notruf-Protokolle.`); loadAdminUsers(); } }); @@ -1881,6 +1881,9 @@ async function loadMetrics() { const totalEstimated = data.reduce((s, u) => s + (u.month_cost_estimated_usd || 0), 0); const fmtUsd = (n) => "$" + (Number(n) || 0).toFixed(4); const maxReq = Math.max(...data.map((u) => u.total_requests || 0), 1); + // Tabelle alphabetisch (case-insensitive); die Balken bleiben nach Aktivität. + const tableData = [...data].sort((a, b) => + (a.display_name || "").toLowerCase().localeCompare((b.display_name || "").toLowerCase())); const bars = data.map((u) => { const pct = Math.round(((u.total_requests || 0) / maxReq) * 100); @@ -1909,7 +1912,7 @@ async function loadMetrics() { - ${data.map((u) => ` + ${tableData.map((u) => ` ${escHtml(u.display_name)} ${u.total_requests ?? 0} diff --git a/app/web/index.html b/app/web/index.html index 6a0017b..bda4cb7 100644 --- a/app/web/index.html +++ b/app/web/index.html @@ -88,7 +88,7 @@

Alle Nutzerdaten löschen

-

Löscht für alle Nutzer Verlauf, Statistik (Anfragen/Web-Suchen/Kosten) und Erinnerungen. Die Konten selbst bleiben erhalten. Nicht umkehrbar.

+

Löscht für alle Nutzer Verlauf, Statistik (Anfragen/Web-Suchen/Kosten), Erinnerungen und Notruf-Protokolle. Die Konten selbst bleiben erhalten. Nicht umkehrbar. (Das Audit-Log liegt in den System-Logs und bleibt unberührt.)