From 9abfdba707fe1001acb68f9ed539b39043157ed8 Mon Sep 17 00:00:00 2001 From: Dicken Date: Sun, 26 Jul 2026 16:28:01 +0200 Subject: [PATCH] round62: Ueberfluessigen Delta-Satz unterdruecken, wenn er nichts Neues gegenueber der Standard-Zusammenfassung aussagt --- apps/backend/src/routes/scan.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/backend/src/routes/scan.ts b/apps/backend/src/routes/scan.ts index 076cf79..24aa029 100644 --- a/apps/backend/src/routes/scan.ts +++ b/apps/backend/src/routes/scan.ts @@ -632,7 +632,7 @@ export async function scanRoutes(app: FastifyInstance): Promise { const currentServiceIds = serviceRepo.listServices().map((s) => s.id); const currentServiceIdSet = new Set(currentServiceIds); - let changesSinceLastScan: string; + let changesSinceLastScan: string | null; if (cancelled) { changesSinceLastScan = "Abgebrochen - kein vollständiger Vergleich möglich."; } else if (previousServiceIds === null) { @@ -641,7 +641,18 @@ export async function scanRoutes(app: FastifyInstance): Promise { const previousSet = new Set(previousServiceIds); const newlyAppeared = currentServiceIds.filter((id) => !previousSet.has(id)); const deletedSinceLastScan = previousServiceIds.filter((id) => !currentServiceIdSet.has(id)); - if (newlyAppeared.length === 0 && deletedSinceLastScan.length === 0) { + // Der Satz ist reine Wiederholung, wenn er GENAU dasselbe aussagt + // wie die Standard-Zusammenfassung ("X neue(r) Dienst(e) gefunden") + // ohnehin schon (newlyAppeared === created, nichts gelöscht) - dann + // komplett weglassen statt zweimal dasselbe zu sagen. Weicht die + // Zahl dagegen ab (z. B. weil zwischen zwei Sammel-Scans ein + // Einzelgeräte-Scan lief, oder weil ein vorheriger Lauf + // abgebrochen wurde und die Vergleichsbasis dadurch älter ist), + // ist das selbst eine nützliche Information und bleibt sichtbar. + const isRedundant = newlyAppeared.length === created && deletedSinceLastScan.length === 0; + if (isRedundant) { + changesSinceLastScan = null; + } else if (newlyAppeared.length === 0 && deletedSinceLastScan.length === 0) { changesSinceLastScan = "Keine Änderungen seit dem letzten Sammel-Scan."; } else { const parts: string[] = [];