111 lines
2.6 KiB
Markdown
111 lines
2.6 KiB
Markdown
# 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.
|