pipeline in linea single thread
This commit is contained in:
110
aggiornamento-2026-05-16-11-04.md
Normal file
110
aggiornamento-2026-05-16-11-04.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# Aggiornamento 2026-05-16 11:04
|
||||
|
||||
## Milestone prima implementazione comunicazione WMS
|
||||
|
||||
Questa milestone documenta la specifica concordata prima di completare la parte client-server reale tra `flywms_navigation.py` e un server WMS demo.
|
||||
|
||||
## Obiettivo
|
||||
|
||||
Implementare una comunicazione reale, asincrona e configurabile tra:
|
||||
|
||||
- client navigazione: `flywms_navigation.py`;
|
||||
- server WMS demo: nuovo script FastAPI.
|
||||
|
||||
Il client deve inviare il crop etichetta e i metadati dello snapshot. Il server deve ricevere, salvare i payload per debug, simulare OCR/WMS e rispondere `ACK` o `NACK`.
|
||||
|
||||
## Decisioni concordate
|
||||
|
||||
- Server demo basato su FastAPI.
|
||||
- Dipendenze installate:
|
||||
- `fastapi`;
|
||||
- `uvicorn`;
|
||||
- `python-multipart`.
|
||||
- Il server deve salvare fisicamente le immagini ricevute in una cartella di debug.
|
||||
- Modalita' risposta configurabili:
|
||||
- `always-ack`;
|
||||
- `always-nack`;
|
||||
- `alternate`;
|
||||
- `random`.
|
||||
- Il client deve poter inviare a un server su altro computer tramite IP/porta configurabili.
|
||||
- Il loop video/navigazione non deve fare la POST direttamente: invio tramite worker asincrono.
|
||||
- La sequenza logica rimane:
|
||||
- stop;
|
||||
- scatta etichetta;
|
||||
- invia WMS;
|
||||
- attende risposta o timeout;
|
||||
- riparte.
|
||||
- L'attesa della risposta deve essere gestita senza congelare brutalmente il rendering.
|
||||
|
||||
## Configurazione prevista lato navigazione
|
||||
|
||||
Da aggiungere/validare in `flywms_navigation.ini`:
|
||||
|
||||
```ini
|
||||
wms_enabled = false
|
||||
wms_server_url = http://127.0.0.1:8088/api/v1/navigation-snapshot
|
||||
wms_client_id = flywms-demo-01
|
||||
wms_timeout_sec = 2.0
|
||||
wms_queue_max_size = 8
|
||||
wms_send_gaylord_debug = true
|
||||
```
|
||||
|
||||
Per server remoto:
|
||||
|
||||
```ini
|
||||
wms_server_url = http://192.168.1.50:8088/api/v1/navigation-snapshot
|
||||
```
|
||||
|
||||
## Configurazione prevista lato server
|
||||
|
||||
Da implementare in `flywms_wms_server.py`:
|
||||
|
||||
```text
|
||||
host = 0.0.0.0
|
||||
port = 8088
|
||||
fake_ack_mode = always-ack
|
||||
fake_processing_sec = 0.5
|
||||
received_dir = wms_received
|
||||
```
|
||||
|
||||
## Protocollo previsto
|
||||
|
||||
Endpoint:
|
||||
|
||||
```text
|
||||
POST /api/v1/navigation-snapshot
|
||||
```
|
||||
|
||||
Payload multipart:
|
||||
|
||||
- `metadata`: JSON;
|
||||
- `label_image`: JPEG crop etichetta;
|
||||
- `gaylord_image`: JPEG opzionale/debug.
|
||||
|
||||
Risposta:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "ACK",
|
||||
"request_id": "...",
|
||||
"message": "codice valido su WMS",
|
||||
"fake_ocr_text": "DEMO-0001",
|
||||
"processing_ms": 120
|
||||
}
|
||||
```
|
||||
|
||||
Oppure:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "NACK",
|
||||
"request_id": "...",
|
||||
"message": "codice non riconosciuto",
|
||||
"fake_ocr_text": "",
|
||||
"processing_ms": 120
|
||||
}
|
||||
```
|
||||
|
||||
## Nota operativa
|
||||
|
||||
Al momento della creazione di questa milestone erano gia' stati installati i pacchetti FastAPI e iniziati i primi campi/config del client WMS. La milestone serve a fissare la specifica prima di proseguire con il completamento.
|
||||
Reference in New Issue
Block a user