# Aggiornamento 2026-05-16 12:04 ## Milestone prima implementazione OCR lato WMS server ## Obiettivo Evolvere `flywms_wms_server.py` da server demo ACK/NACK a server WMS demo con pipeline remota: 1. riceve crop etichetta e metadati dal client navigazione; 2. mostra l'immagine ricevuta in una finestra server; 3. esegue OCR sul crop etichetta; 4. prepara payload WMS finale; 5. salva payload WMS su disco; 6. simula verifica WMS con risposta `ACK`/`NACK`; 7. risponde realmente al client. ## Decisioni concordate - Il codice OCR deve idealmente essere il codice numerico reale sull'etichetta. - Se OCR reale non e' disponibile o non legge nulla, usare fallback demo configurabile. - Il server deve rispondere realmente al client. - Il client, per ora, continua a mostrare la risposta ma mantiene la logica di attesa demo gia' configurata. - In futuro il tempo di attesa verra' spostato completamente lato server e il client si adeguera' alla risposta. - La finestra payload server mostra solo l'ultimo gaylord ricevuto. - Il server salva anche il payload WMS finale in JSON, oltre al metadata originale. - L'esito `ACK/NACK` resta governato da `wms_fake_ack_mode`. ## Finestre server previste - `wms immagine ricevuta`: crop etichetta ricevuto dal client. - `wms payload`: ultimo payload WMS con informazioni utili: - request id; - client id / drone; - snapshot id; - posizione; - codice OCR; - esito WMS; - data/ora ricezione; - track id; - bbox etichetta; - vettore movimento. ## Configurazione prevista Da aggiungere in `flywms_navigation.ini`: ```ini wms_ui_enabled = true wms_ocr_enabled = true wms_ocr_mode = auto wms_fake_ocr_prefix = UDC wms_fake_ocr_delay_sec = 0.2 wms_fake_wms_delay_sec = 1.0 wms_operator = udrone wms_site = demo-magazzino ``` ## Note tecniche La GUI OpenCV del server non deve essere aggiornata direttamente dall'handler HTTP. L'handler aggiorna stato condiviso thread-safe; un thread UI separato aggiorna le finestre OpenCV. L'OCR reale verra' implementato cercando prima le opzioni gia' disponibili nell'ambiente/progetto. Se non disponibili, il server resta funzionante con fallback demo e lo segnala nel payload.