+
+
Wartung
+
+ Werkzeuge für wiederkehrende Wartungsaufgaben. Entfernt derzeit doppelte Stack-Einträge.
+
+
+
+
+ Dieses Wartungsfeature ist noch nicht getestet. Bitte nicht in Produktivumgebungen einsetzen.
+
+
+
+
+
+
Doppelte Stacks
+
+ {loading
+ ? "Analyse läuft…"
+ : totals.groups === 0
+ ? "Keine Duplikate gefunden"
+ : `${totals.groups} Stack-Namen mit insgesamt ${totals.duplicateCount} Duplikaten gefunden`}
+
+ {lastUpdated && (
+
+ Stand: {lastUpdated.toLocaleString("de-DE", {
+ hour: "2-digit",
+ minute: "2-digit",
+ second: "2-digit"
+ })}
+
+ )}
+
+
+
+
+
+
+
+ {error && (
+
+ {error}
+
+ )}
+
+ {loading ? (
+
+ Daten werden geladen…
+
+ ) : isEmpty ? (
+
+ Es wurden keine doppelten Stacks gefunden.
+
+ ) : (
+
+ {duplicates.map((entry) => {
+ const canonicalId = entry?.canonical?.Id;
+ const duplicatesForEntry = entry?.duplicates || [];
+ const isProcessing = activeCleanupId === String(canonicalId);
+
+ return (
+
+
+
+
+
{entry.name}
+
+ {duplicatesForEntry.length} Duplikat{duplicatesForEntry.length === 1 ? "" : "e"}
+
+
+
+ Behaltener Stack: ID {canonicalId} (Endpoint {entry?.canonical?.EndpointId ?? "-"})
+
+
+ Typ: {resolveStackType(entry?.canonical?.Type)} • Erstellt: {formatCreatedAt(entry?.canonical?.Created)}
+
+
+
+
+
+
+
+ {duplicatesForEntry.map((duplicate) => (
+
+
+ ID: {duplicate.Id}
+ Endpoint: {duplicate.EndpointId ?? "-"}
+ Typ: {resolveStackType(duplicate.Type)}
+ Erstellt: {formatCreatedAt(duplicate.Created)}
+
+
+ ))}
+
+
+ );
+ })}
+
+ )}
+
+ );
+}