fix: correzioni critiche e checklist test manuali

CORREZIONI:
- Badge confrontato ESATTAMENTE come stringa (rimosso .lstrip("0"))
- Success modal si chiude quando arriva nuovo badge (fix dipendenze useCallback)
- Polling ogni 30s per invalidare sessione se server riparte
- Area carosello allargata per testi lunghi (es. russo)

DOCUMENTAZIONE:
- API_SPECIFICATION.md aggiornata: badge come stringa esatta
- Creata TEST_CHECKLIST.md con 22 test manuali
- Aggiornati piani backend e frontend

Badge sono STRINGHE, non numeri:
- "0008988288" != "8988288" (zeri iniziali significativi)
This commit is contained in:
2026-01-17 23:32:33 +01:00
parent e68f299feb
commit b467d4753d
11 changed files with 681 additions and 84 deletions

View File

@@ -71,7 +71,7 @@ Ottimizzata per tablet in orizzontale.
- [x] `RFIDStatus.tsx` - indicatore stato scanner
- [x] `UserCard.tsx` - card utente con foto e ruolo
- [x] `CountdownTimer.tsx` - timer con progress bar
- [x] `WelcomeCarousel.tsx` - carosello messaggi multilingua
- [x] `WelcomeCarousel.tsx` - carosello messaggi multilingua con **animazione smooth sliding**
- [x] `NumLockBanner.tsx` - avviso NumLock per desktop
### 7. Schermate (`screens/`)
@@ -80,10 +80,10 @@ Ottimizzata per tablet in orizzontale.
- [x] `ValidatorLoginScreen.tsx` - attesa badge + password + NumLockBanner
- [x] `ActiveGateScreen.tsx` - varco attivo:
- [x] Card utente (layout largo per tablet)
- [x] **Schermata "badge non trovato"** con countdown 30s
- [x] **Schermata "badge non trovato"** con countdown barra visiva (30s)
- [x] **Notifica badge validatore ignorato**
- [x] NumLockBanner
- [x] `SuccessModal.tsx` - conferma ingresso con carosello
- [x] `SuccessModal.tsx` - conferma ingresso con carosello (**durata aumentata 8s**)
- [x] `ErrorModal.tsx` - errore fullscreen
- [x] `DebugScreen.tsx` - pagina diagnostica RFID
@@ -95,10 +95,13 @@ Ottimizzata per tablet in orizzontale.
- [x] **Qualsiasi badge può essere validatore** (verificato con password)
- [x] Password salvata in sessione per conferme ingresso
- [x] **Invalidazione sessione se server riparte** (serverStartTime)
- [x] **Polling periodico (30s) per verificare server restart**
- [x] Timeout sessione 30 minuti
- [x] Timeout utente 60 secondi
- [x] **Timeout badge non trovato 30 secondi**
- [x] **Ignora stesso badge passato più volte** (no ricaricamento)
- [x] Cambio rapido badge partecipante
- [x] **Badge durante success modal chiude modal e carica nuovo utente** (fix dipendenze useCallback)
- [x] Conferma con badge validatore (quello della sessione)
- [x] **Notifica se badge validatore rippassato senza utente**
- [x] Logging transizioni con prefisso `[FLOW]`
@@ -107,9 +110,10 @@ Ottimizzata per tablet in orizzontale.
- [x] Componente `WelcomeCarousel.tsx`
- [x] 10 lingue supportate
- [x] Scorrimento automatico ogni 800ms
- [x] **Animazione smooth sliding** (slide up/down)
- [x] Scorrimento automatico (intervallo calcolato dinamicamente)
- [x] Modale fullscreen verde
- [x] Durata totale: 5 secondi
- [x] **Durata totale: 8 secondi** (più rilassato)
### 10. Debug & Diagnostica
@@ -135,4 +139,46 @@ Ottimizzata per tablet in orizzontale.
---
## 🧪 TODO: Test Automatici
### Test da Implementare
- [ ] **Test RFID Scanner:**
- [ ] Rilevamento pattern US (`;``?`)
- [ ] Rilevamento pattern IT (`ò``_`)
- [ ] Timeout scansione incompleta
- [ ] ESC annulla scansione
- [ ] Enter post-completamento ignorato
- [ ] **Test Flow Validatore:**
- [ ] Login con password corretta
- [ ] Login con password errata
- [ ] Sessione persistente in localStorage
- [ ] Invalidazione sessione al riavvio server
- [ ] Logout manuale
- [ ] **Test Flow Partecipante:**
- [ ] Badge trovato ammesso → mostra card verde
- [ ] Badge trovato non ammesso → mostra card rossa + warning
- [ ] Badge non trovato → mostra schermata errore con countdown
- [ ] Stesso badge passato più volte → ignorato
- [ ] Badge diverso passato → cambia utente visualizzato
- [ ] Timeout 60s → torna in attesa
- [ ] **Test Conferma Ingresso:**
- [ ] Badge validatore su utente ammesso → success modal
- [ ] Badge validatore su utente NON ammesso → notifica ignorato
- [ ] Badge validatore senza utente → notifica ignorato
- [ ] **⚠️ IMPORTANTE:** Simulare bug che bypassa frontend → backend DEVE bloccare
- [ ] **Test Success Modal:**
- [ ] Carosello scorre tutte le lingue
- [ ] Durata corretta (8s)
- [ ] Badge durante modal → chiude modal e carica nuovo utente
---
## ✅ FRONTEND COMPLETATO
Tutte le funzionalità principali sono state implementate. Rimangono da sviluppare i test automatici.