Trois demandes utilisateur, plus une adaptation rendue nécessaire par la première. - Ordre inversé : descendant avant montant. - Rafraîchissement porté de 60 s à 5 s. Il fallait le faire sur les DEUX couches locales : l'intervalle client seul aurait relu la même entrée de cache serveur douze fois. Le cache cloud reste à 5 min, ses métriques n'évoluant que par tranches de 5 min. - Le graphe est rendu dès la première mesure : vide plutôt qu'absent, ce qui évite un saut de mise en page et n'affirme rien de faux. Adaptation : la console ne rafraîchit ses statistiques que toutes les 30 s (mesuré — `lastHeartbeatAt` avance par pas de 30 s exacts, valeurs identiques entre deux battements). Interroger toutes les 5 s renvoie donc six fois la même mesure. Sans filtrage, le graphe deviendrait un escalier et 60 points ne couvriraient plus que 5 minutes. Une lecture identique à la précédente n'est donc pas enregistrée. Seuil de péremption locale recalibré de 150 s à 30 s : l'ancien était dimensionné pour 60 s + 60 s et ne signalait plus rien d'utile. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
23 lines
1.2 KiB
TypeScript
23 lines
1.2 KiB
TypeScript
import { createIntegrationAsync } from "@homarr/integrations";
|
|
import type { UnifiOsSummary } from "@homarr/integrations/types";
|
|
|
|
import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
|
|
|
|
export const unifiOsRequestHandler = createIntegrationRequestHandler<UnifiOsSummary, "unifiOs", Record<string, never>>({
|
|
async requestAsync(integration, _input) {
|
|
const integrationInstance = await createIntegrationAsync(integration);
|
|
return await integrationInstance.getUnifiOsSummaryAsync();
|
|
},
|
|
cacheTtlMs: 5 * 1000,
|
|
// Aligné sur l'intervalle du widget : un cache plus long qu'elle rendrait le
|
|
// rafraîchissement rapide inopérant, la requête relisant la même entrée.
|
|
// La console ne rafraîchit ses statistiques que toutes les 30 s (mesuré), donc
|
|
// interroger plus vite gagne en réactivité, pas en résolution.
|
|
// Le cache cloud reste à 5 min dans unifi-sm-api.ts : ses métriques n'évoluent
|
|
// que par tranches de 5 min et accusent ~30 min de retard.
|
|
// Une console momentanément injoignable doit afficher la dernière valeur connue
|
|
// plutôt qu'une tuile d'erreur ; le widget signale la péremption.
|
|
fallbackToStaleOnError: true,
|
|
staleIfErrorTtlMs: 10 * 60 * 1000,
|
|
});
|