pipeline in linea single thread

This commit is contained in:
administrator
2026-05-19 08:52:44 +02:00
parent 98b43ce903
commit f728524ee6
43 changed files with 5245 additions and 154 deletions

View File

@@ -0,0 +1,62 @@
# 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.