feat(widgets): 5s refresh, download first, chart from the first reading

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>
This commit is contained in:
zacharyandClaude Opus 5 committed 2026-09-13 22:21:43 +02:00
1 parent d5ae666c41
commit ff24a5b009
7 files changed
+63 -59

No files matched your search

+7 -1
View File
@@ -8,7 +8,13 @@ export const unifiOsRequestHandler = createIntegrationRequestHandler<UnifiOsSumm
const integrationInstance = await createIntegrationAsync(integration);
return await integrationInstance.getUnifiOsSummaryAsync();
},
cacheTtlMs: 60 * 1000,
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,