Skip to content

Latest commit

 

History

History
141 lines (111 loc) · 5.76 KB

File metadata and controls

141 lines (111 loc) · 5.76 KB

Implementazione Comportamento Prodotto Non Trovato

Panoramica

Questa implementazione gestisce il caso in cui un utente cerca un codice EAN non presente nel database di PetScan, fornendo un'esperienza utente fluida e coinvolgente.

Componenti Creati

1. ProductNotFoundModal (src/components/ProductNotFoundModal.tsx)

  • Scopo: Primo modal che appare quando un prodotto non viene trovato
  • Caratteristiche:
    • Titolo: "Prodotto non trovato"
    • Messaggio: "Il prodotto cercato non è presente nel nostro database. Aiutaci a migliorare PetScan."
    • Due pulsanti:
      • 🟢 "Effettua un'altra ricerca" → chiude il modal e riporta alla home con focus sulla barra di ricerca
      • 🟠 "Inserisci il prodotto mancante" → apre il secondo modal

2. AddProductModal (src/components/AddProductModal.tsx)

  • Scopo: Secondo modal per l'inserimento di un prodotto mancante
  • Caratteristiche:
    • Form con validazione
    • Codice EAN precompilato (non modificabile)
    • Campo obbligatorio: "Nome del brand"
    • Campo obbligatorio: "Nome del prodotto"
    • Campo opzionale: "Email" (con placeholder informativo)
    • Pulsante "Invia richiesta" che invia automaticamente una mail

3. ProductRequestService (src/utils/productRequestService.ts)

  • Scopo: Gestisce l'invio delle richieste di prodotto mancante
  • Caratteristiche:
    • Utilizza EmailJS per l'invio email
    • Limite giornaliero di 500 richieste per utente
    • Tracking delle richieste nel localStorage
    • Email inviata a alessandro.miu@gmail.com
    • Oggetto: "Richiesta Aggiunta PetScan"
    • Configurazione centralizzata in src/config/emailjs.ts

Modifiche ai Componenti Esistenti

1. useProductAnalysis Hook (src/hooks/useProductAnalysis.ts)

  • Nuovi stati aggiunti:
    • showProductNotFoundModal: controlla la visibilità del primo modal
    • showAddProductModal: controlla la visibilità del secondo modal
    • lastSearchedEan: memorizza l'ultimo codice EAN cercato
  • Nuove funzioni:
    • handleNewSearch(): resetta completamente lo stato e riporta alla home page con focus sulla barra di ricerca
    • handleAddProduct(): apre il modal di inserimento prodotto
    • handleCloseAddProductModal(): resetta completamente lo stato e riporta alla home page con focus sulla barra di ricerca

2. HeroSection (src/components/HeroSection.tsx)

  • Modifiche:
    • Rimossa la sezione "Nessun prodotto trovato"
    • Aggiunti i nuovi modali
    • Integrazione con il hook aggiornato
    • Correzione importante: Aggiunte funzioni wrapper per resettare anche lo stato isLoading locale del componente

3. InserisciProd (src/pages/InserisciProd.tsx)

  • Modifiche:
    • Rimossa la sezione "Nessun prodotto trovato"
    • Aggiunti i nuovi modali
    • Integrazione con il nuovo comportamento
    • Reset del campo di ricerca: Aggiunto resetTrigger per pulire il campo del BarcodeScanner

4. BarcodeScanner (src/components/BarcodeScanner.tsx)

  • Modifiche:
    • Aggiunta prop resetTrigger per resettare il campo di input manuale
    • useEffect per pulire automaticamente il campo quando cambia il trigger

Flusso Utente

  1. Ricerca Prodotto: L'utente cerca un codice EAN non presente nel database
  2. Spinner di Caricamento: Viene mostrato durante la ricerca
  3. Primo Modal: Appare "Prodotto non trovato" con due opzioni
  4. Opzione 1 - Nuova Ricerca: Resetta completamente lo stato e riporta alla home page pulita con focus sulla barra di ricerca
  5. Opzione 2 - Inserisci Prodotto: Apre il secondo modal con il form
  6. Form di Inserimento: L'utente compila i campi richiesti
  7. Invio Richiesta: Viene inviata automaticamente una mail all'amministratore
  8. Conferma: Messaggio di successo e chiusura automatica del modal con reset completo dello stato
  9. Reset campo ricerca: Il campo di ricerca viene pulito automaticamente

Email Inviata

L'email contiene:

Oggetto: Richiesta Aggiunta PetScan

NUOVA RICHIESTA DI AGGIUNTA PRODOTTO PETSCAN

=== INFORMAZIONI PRODOTTO ===
EAN: [codice ean]
Brand: [nome brand]
Nome prodotto: [nome prodotto]

=== CONTATTO ===
Email del richiedente: [email se fornita]

=== LIMITE RICHIESTE ===
Richieste rimanenti oggi: [numero]

---
Richiesta inviata automaticamente da PetScan
Data: [data e ora]

Limitazioni e Sicurezza

  • Limite giornaliero: 500 richieste per utente (resettato ogni giorno)
  • Validazione: Campi obbligatori e validazione email
  • Tracking: Le richieste sono tracciate nel localStorage per evitare abusi
  • Email: Utilizzo di FormSubmit per l'invio sicuro delle email

Tecnologie Utilizzate

  • React: Per i componenti modali
  • TypeScript: Per il type safety
  • EmailJS: Per l'invio delle email
  • localStorage: Per il tracking delle richieste
  • Tailwind CSS: Per lo styling coerente con PetScan

Test e Verifica

Per testare l'implementazione:

  1. Cerca un codice EAN non presente nel database (es. "1234567890123")
  2. Verifica che appaia il primo modal
  3. Testa "Effettua un'altra ricerca": verifica che la scheda "Analizzando il prodotto..." scompaia completamente
  4. Testa l'opzione "Inserisci prodotto mancante"
  5. Verifica che il form funzioni correttamente
  6. Controlla che l'email venga inviata all'amministratore
  7. Verifica che dopo l'invio del form la pagina torni pulita alla home
  8. Verifica che il campo di ricerca sia pulito dopo la chiusura dei modali

Manutenzione

  • Il limite giornaliero può essere modificato in src/utils/productRequestService.ts
  • L'indirizzo email può essere cambiato nel file src/utils/productRequestService.ts
  • I testi dei modali possono essere personalizzati nei rispettivi componenti
  • La configurazione EmailJS può essere modificata in src/config/emailjs.ts

Configurazione EmailJS

Per configurare EmailJS, segui le istruzioni nel file EMAILJS_SETUP.md.