Files
flywms/aggiornamento-2026-05-16-11-04.md
2026-05-19 08:52:44 +02:00

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.