Menu

#38 Consolidamento robustezza, performance e retry login pre-produzione

open
nobody
2026-05-15
2026-05-15
Anonymous
No

Originally created by: zornade

Contesto

Il branch feat/sister-direct-login (già su main con [#36]) ha lasciato una serie di follow-up necessari per portare il servizio a uno stato pronto per uso quotidiano da self-hoster. Questa issue traccia i miglioramenti raggruppati in un'unica PR di consolidamento.

Obiettivi

Robustezza login & sessione (P0)

  • [x] Fix TOCTOU race su disponibilità browser (controllo+claim atomico)
  • [x] Lock single-flight su sessione SISTER concorrente
  • [x] Pulsante "Autorizza" Sielte: retry + attesa visibilità
  • [x] Attesa robusta del redirect post-push Poste
  • [x] Fail-fast su credenziali SPID errate (15s) per evitare timeout 120s inutili
  • [x] Retry automatico del login su timeout della push SPID — fino a LOGIN_MAX_ATTEMPTS (default 3), pausa LOGIN_RETRY_DELAY_S (default 5s)

Compatibilità nomi (P0)

  • [x] Normalizzazione nomi province (alias map per quirks SISTER, incl. Reggio nell'EmiliaReggio Emilia, Valle d'Aosta/Vallée d'Aoste, Monza e della Brianza)
  • [x] Normalizzazione nomi comuni (case-insensitive, accent-fold)
  • [x] Fail-fast esplicito su province con catasto autonomo (Trento/Bolzano)
  • [x] codice_belfiore opzionale in VisuraInput/VisuraIntestatiInput → match nativo SISTER tramite chiave CB#…

Latenza (P1)

  • [x] MVP: -34% latenza media (-3.4s/req)
  • [x] MVP-2: resource blocking + dropdown cache + fast options
  • [x] MVP-2.1: cache comuni provincia-scoped (fix poisoning cross-provincia)
  • [x] Hot path wait_for_selector(state="attached") invece di wait_for_load_state (Option D)
  • [x] Risultato live: 6.7s avg / 91.8% success / 0 timeout su bulk test 97 particelle

Resilienza dati (P1)

  • [x] TTLCache su risultati visura (cachetools 7.x)
  • [x] Fallback T↔F catasto opzionale per particelle classificate diversamente in WFS vs catasto
  • [x] Rate-limit (HTTP 429) su richieste concorrenti

Out-of-scope (tracciato a parte)

Vedi roadmap pre-produzione self-hoster:

  • Storage state SPID persistente in volume Docker
  • Browser watchdog (riavvio Playwright senza container restart)
  • /health con stati discriminanti (starting/logging_in/ready/degraded/auth_failed_permanent)
  • README end-user (compatibilità IDP, troubleshooting, .env.example)

Related

Tickets: #36
Tickets: #39

Discussion


Log in to post a comment.