# DearPyGUI UI Spec - Observer e WMS Server ## Scopo Rendere la demo piu' ordinata e leggibile spostando la presentazione visuale da OpenCV a DearPyGUI nei soli componenti esterni: - `flywms_navigation_observer.py` - `flywms_wms_server.py` La parte intelligente resta invariata: - `flywms_navigation.py` - tracking - snapshot logic - WMS client - logica OCR / FastAPI lato server ## Principio architetturale La UI non entra nel percorso critico. ### Observer - riceve gia' telemetria e preview dal core; - DearPyGUI sostituisce solo le finestre OpenCV; - il protocollo socket e il payload restano invariati. ### WMS Server - continua a ricevere upload e a fare OCR come oggi; - DearPyGUI sostituisce solo le finestre OpenCV di monitoraggio; - nessuna modifica al contratto HTTP. ## Layout Observer ### Colonna sinistra - preview principale `navigate` ### Colonna destra superiore - snapshot OCR payload - crop etichetta ### Colonna destra inferiore - stato / metriche - comando corrente - lista comandi ### Metriche minime - `frame_id` - `processed_frames` se presente - `loop_fps` - `yolo_fps` - `last_yolo_ms` - `det_count` - `track_count` - `snapshot_counter` - `yolo_mode` se disponibile - `motion_text` ## Layout WMS Server ### Colonna sinistra - ultima immagine ricevuta dal server ### Colonna destra - payload request corrente - esito OCR - esito ACK/NACK - contatore richieste ## Requisiti UI - finestre ridimensionabili - nessun blocco sul core/server - refresh periodico leggero - fallback a OpenCV se DearPyGUI non e' disponibile ## Strategia di implementazione ### Fase 1 - introdurre backend DearPyGUI opzionale per observer - introdurre backend DearPyGUI opzionale per WMS server - mantenere OpenCV come fallback ### Fase 2 - rifinire il layout - eventuali colori/stati piu' chiari - eventuali controlli aggiuntivi ## Criterio di successo 1. la demo risulta piu' ordinata; 2. il core intelligente non cambia comportamento; 3. observer e server possono essere lanciati senza finestre OpenCV; 4. il fallback OpenCV resta disponibile in caso di problema.