round62: Ueberfluessigen Delta-Satz unterdruecken, wenn er nichts Neues gegenueber der Standard-Zusammenfassung aussagt

This commit is contained in:
2026-07-26 16:28:01 +02:00
parent fb5874d7d0
commit 9abfdba707

View File

@@ -632,7 +632,7 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
const currentServiceIds = serviceRepo.listServices().map((s) => s.id); const currentServiceIds = serviceRepo.listServices().map((s) => s.id);
const currentServiceIdSet = new Set(currentServiceIds); const currentServiceIdSet = new Set(currentServiceIds);
let changesSinceLastScan: string; let changesSinceLastScan: string | null;
if (cancelled) { if (cancelled) {
changesSinceLastScan = "Abgebrochen - kein vollständiger Vergleich möglich."; changesSinceLastScan = "Abgebrochen - kein vollständiger Vergleich möglich.";
} else if (previousServiceIds === null) { } else if (previousServiceIds === null) {
@@ -641,7 +641,18 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
const previousSet = new Set(previousServiceIds); const previousSet = new Set(previousServiceIds);
const newlyAppeared = currentServiceIds.filter((id) => !previousSet.has(id)); const newlyAppeared = currentServiceIds.filter((id) => !previousSet.has(id));
const deletedSinceLastScan = previousServiceIds.filter((id) => !currentServiceIdSet.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."; changesSinceLastScan = "Keine Änderungen seit dem letzten Sammel-Scan.";
} else { } else {
const parts: string[] = []; const parts: string[] = [];