generated from Dicken/dickendock
round22: Startseite kompakter, Ping-Zeitstempel-Bug behoben, echte Favicon-Deduplizierung per Bildinhalt, automatischer Favicon-Abgleich aus Icon-Datenbank + Nachruest-Button
This commit is contained in:
@@ -2,6 +2,7 @@ import type { FastifyInstance } from "fastify";
|
||||
import { ServiceCreateSchema, ServiceReorderSchema, ServiceUpdateSchema } from "@launchpad/shared";
|
||||
import * as deviceRepo from "../db/repositories/devices.js";
|
||||
import * as serviceRepo from "../db/repositories/services.js";
|
||||
import { findBestIconMatch } from "../scanner/iconDb.js";
|
||||
|
||||
interface ServiceListQuery {
|
||||
deviceId?: string;
|
||||
@@ -73,4 +74,24 @@ export async function serviceRoutes(app: FastifyInstance): Promise<void> {
|
||||
}
|
||||
return reply.code(204).send();
|
||||
});
|
||||
|
||||
// Nachträgliches Ergänzen fehlender Favicons für bereits bestehende
|
||||
// Dienste (z. B. von vor diesem Feature) - versucht für jeden Dienst OHNE
|
||||
// Favicon einen passenden Treffer in der externen Icon-Datenbank zu
|
||||
// finden (siehe scanner/iconDb.ts), anhand des aktuellen Anzeigenamens.
|
||||
// Rein additiv: bestehende Favicons werden nie überschrieben, nur leere
|
||||
// Felder aufgefüllt.
|
||||
app.post("/api/services/backfill-favicons", async () => {
|
||||
const services = serviceRepo.listServices();
|
||||
let updated = 0;
|
||||
for (const service of services) {
|
||||
if (service.favicon) continue;
|
||||
const match = await findBestIconMatch(service.displayName);
|
||||
if (match) {
|
||||
serviceRepo.updateService(service.id, { favicon: match });
|
||||
updated++;
|
||||
}
|
||||
}
|
||||
return { checked: services.length, updated };
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user