Freeze 2.0 warehouse monolista e documento fisso F1/F2

This commit is contained in:
2026-10-02 10:09:44 +02:00
parent 3a2893dc3d
commit a60610c03e
10 changed files with 1019 additions and 20 deletions

View File

@@ -0,0 +1,65 @@
# Documento fisso durante il ciclo barcode F1/F2
## Difetto e requisito
Prima della correzione ogni avanzamento interrogava tutte le UDC con IDStato
uguale alla priorita' richiesta. Per F2, che include tutte le liste non
prenotate, il documento poteva quindi cambiare senza intervento dell'operatore.
Una volta proposta una lista, ogni successiva UDC del ciclo deve appartenere
a quel documento. F1 e F2 ricordano ciascuno la propria lista: F2 -> F1 -> F2
deve riportare al documento inizialmente assegnato a F2, anche se cambia
l'ordine globale delle UDC disponibili.
## Implementazione locale
- BarcodeService conserva un documento per priorita', separato dallo stato
visuale temporaneo di conferma o pausa.
- La prima richiesta senza documento usa il criterio di ordinamento vigente.
Non viene introdotta una selezione per data del documento.
- Le successive richieste applicano il filtro Documento nelle query di
avanzamento, ricerca skip e ricerca della UDC per conferma del movimento.
- Un documento differente ricevuto dal repository causa un errore esplicito.
- La pausa per movimenti liberi e il passaggio tra F1/F2 conservano i documenti.
- Quando termina il documento, il ciclo si ferma e mostra il relativo messaggio.
Una successiva pressione esplicita di un tasto priorita' puo' avviare un nuovo
ciclo; la fine del precedente non attiva automaticamente un altro documento.
- Quando rimangono soltanto UDC saltate, viene gestita la sospensione della
lista corrente senza passare a un'altra lista disponibile nella coda.
- Se cambiano prenotazione o visibilita' e ci sono ancora residui nello storico,
compare un messaggio di verifica e il documento viene mantenuto in memoria.
- Un errore della query non cancella il documento memorizzato.
Gli skip sono conteggiati soltanto se la relativa UDC e' ancora residua.
Le movimentazioni libere mantengono la loro logica; il filtro Documento e'
applicato soltanto alle ricerche nel contesto del picking.
## Limiti e installazione
Questa correzione riguarda la sessione del terminalino. La memoria dei documenti
viene azzerata con reset del servizio o riavvio del programma. Non introduce
ancora due prenotazioni persistenti o un percorso automatico comune per colonna:
questi appartengono alla successiva modifica funzionale da specificare.
Non serve una patch SQL: cambiano le SELECT eseguite dal codice Python, non gli
oggetti del database. Versioni: barcode_client 1.0.27 (titolo visibile),
barcode_repository 1.0.14, barcode_service 1.0.25.
## Verifiche
Esecuzione senza GUI e senza movimentazioni reali:
```bat
python -m unittest discover -s tests -p test_barcode_document_binding.py -v
```
Gli 11 test coprono avanzamento con documenti intercalati, passaggi ripetuti
F2/F1/F2, pausa con movimento libero, salto UDC, sospensione con soli skip,
fine lista, cambio prenotazione, errore query, rifiuto di documento inatteso,
isolamento della conferma e passaggio del parametro al repository.
Ulteriori 5 verifiche SELECT su SQL Server, con righe sintetiche in CTE,
hanno controllato selezione iniziale, filtro documento, assenza di fallback,
skip effettivamente residui e isolamento della conferma. Nessun dato reale
e' stato aggiornato per questi test. Il collaudo fisico sul terminalino resta
da effettuare.