fix(squid): récupération auto d'un indexeur silencieusement hors-service

Problème

Le statut de connexion Squid n'était fixé qu'à la connexion initiale et ne changeait que sur un déclencheur de reconnexion explicite. Si l'endpoint indexeur actif mourait en cours d'usage, le statut restait « connecté » : la vue activité continuait d'interroger un endpoint mort et seul un redémarrage de l'app récupérait.

Correctif

  • Moniteur de vitalité périodique dans ConnectionOrchestrator : sonde l'endpoint actif (SquidClientManager.pingActiveClient, requête block-height légère) toutes les 30 s, et retente aussi un Squid déconnecté tant que l'appareil est en ligne.
  • Sur échec → reconnexion via Durt.reconnectSquid : transitions de statut correctes + notification de changement d'endpoint (les clients se rafraîchissent automatiquement).
  • Garde anti-réentrance sur reconnectSquid : failover réactif, moniteur et bascule manuelle se collapsent en une seule reconnexion.
  • Récupération-à-vide avec back-off exponentiel (plafonné 5 min) pour ne pas marteler l'auto-discovery quand aucun indexeur n'est joignable.

Tests

  • test/services/squid/squid_client_manager_test.dart ; flutter analyze clean ; suite connexion/squid verte.
  • Validé en conditions réelles sur Windows (mort d'endpoint simulée → détection → bascule → récupération sans redémarrage).

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Merge request reports

Loading