round60: Delta-Vergleich zum vorherigen Scan (FritzBox + Sammel-Scan) statt statischer Zahlen

This commit is contained in:
2026-07-26 14:09:11 +02:00
parent a7036849b1
commit eef4ddc775
2 changed files with 103 additions and 12 deletions

View File

@@ -551,7 +551,7 @@ export function ScannerPage() {
[]
);
const [fritzboxSummary, setFritzboxSummary] = usePersistedState<
{ found: number; uniqueDevices: number } | null
{ found: number; uniqueDevices: number; changesSinceLastScan?: string } | null
>("scanner:fritzboxSummary", null);
const [fritzboxError, setFritzboxError] = usePersistedState<string | null>(
"scanner:fritzboxError",
@@ -573,7 +573,11 @@ export function ScannerPage() {
if (!s.running && s.lastResult && s.startedAt !== getHandledResultId("scanner:fritzboxLastHandledAt")) {
setHandledResultId("scanner:fritzboxLastHandledAt", s.startedAt);
setFritzboxSummary({ found: s.lastResult.found, uniqueDevices: s.lastResult.uniqueDevices });
setFritzboxSummary({
found: s.lastResult.found,
uniqueDevices: s.lastResult.uniqueDevices,
changesSinceLastScan: s.lastResult.changesSinceLastScan,
});
setFritzboxError(null);
setStaleDevices(s.lastResult.staleDevices);
setDeviceChanges(s.lastResult.deviceChanges);
@@ -650,7 +654,8 @@ export function ScannerPage() {
`${r.created} neue(r) Dienst(e) gefunden.` +
(pending > 0
? ` ${pending} Änderung(en) warten unten auf deine Bestätigung.`
: " Keine Änderungen an bestehenden Diensten vorgeschlagen.")
: " Keine Änderungen an bestehenden Diensten vorgeschlagen.") +
(r.changesSinceLastScan ? ` ${r.changesSinceLastScan}` : "")
);
setBulkStaleServices(r.staleServices);
setBulkNameChanges(r.nameChanges);
@@ -730,14 +735,27 @@ export function ScannerPage() {
{fritzboxRunning ? "Scanne …" : "FritzBox jetzt scannen"}
</Button>
{fritzboxSummary ? (
<p className="mt-2 text-sm text-emerald-600 dark:text-emerald-400">
{fritzboxSummary.found} Eintrag/Einträge von der FritzBox,{" "}
{fritzboxSummary.uniqueDevices} eindeutige Geräte
{fritzboxSummary.found !== fritzboxSummary.uniqueDevices
? " (mehrere Einträge desselben Geräts wurden zusammengeführt)"
: ""}
.
</p>
<div className="mt-2 text-sm">
{fritzboxSummary.changesSinceLastScan ? (
<p
className={
fritzboxSummary.changesSinceLastScan.startsWith("Keine Änderungen")
? "text-black/50 dark:text-white/50"
: "font-medium text-emerald-600 dark:text-emerald-400"
}
>
{fritzboxSummary.changesSinceLastScan}
</p>
) : null}
<p className="text-black/50 dark:text-white/50">
{fritzboxSummary.found} Eintrag/Einträge von der FritzBox,{" "}
{fritzboxSummary.uniqueDevices} eindeutige Geräte
{fritzboxSummary.found !== fritzboxSummary.uniqueDevices
? " (mehrere Einträge desselben Geräts wurden zusammengeführt)"
: ""}
.
</p>
</div>
) : null}
{fritzboxError ? <p className="mt-2 text-sm text-red-500">{fritzboxError}</p> : null}
<DeviceChangesReview