Note tecniche
Un modello dati per tracciare oggetti fisici
Un grande impianto in costruzione riceve migliaia di apparati IT: switch, access point, telecamere, display, server. Arrivano da più fornitori, in più consegne, passano da un magazzino di cantiere, vengono installati, collaudati e consegnati al committente. Un negozio di abbigliamento riceve capi, li espone, li manda in sartoria, li vende, a volte li riprende come reso.
In entrambi i casi servono le stesse informazioni: dove si trova ogni oggetto, in che stato è e cosa gli è successo. Questa nota descrive le scelte di modello dati che le rendono disponibili.
1. L'oggetto e la sua etichetta sono due cose diverse
Spesso l'identità di un oggetto coincide con il codice stampato sopra. Nella pratica le etichette si rovinano, si ristampano, arrivano già applicate dal fornitore, oppure vengono stampate in anticipo a blocchi e attaccate solo dopo.
Per questo il modello tiene separati:
- etichetta: un codice che esiste fisicamente, con la sua provenienza (generato internamente o di terzi) e il registro delle stampe;
- articolo: l'oggetto reale, che nasce quando un'etichetta viene applicata e letta per la prima volta.
Il registro delle stampe evita che lo stesso codice venga stampato due volte e applicato a due oggetti diversi.
2. Un codice corto, opaco e leggibile da una persona
Il codice non contiene informazioni sul prodotto. È una stringa di 8 caratteri casuali su un alfabeto di 32 simboli che esclude I, L, O e U, così si legge al telefono e si digita senza ambiguità quando il QR è danneggiato. Le combinazioni sono 328, circa mille miliardi: le collisioni sono trascurabili e comunque controllate in generazione.
Nel QR il codice è dentro un URL, https://dominio/i/DPQPRXN8. Qualsiasi fotocamera lo apre direttamente nel browser; l'app non serve. Quando è necessario un identificativo standard, lo stesso schema si estende a un URI GS1 Digital Link, come spiegato in un'altra nota.
3. La storia come registro di eventi
Ogni cosa che accade a un articolo è un evento in sola aggiunta: chi, quando, cosa. Un cambio di stato, una nota, una foto, un vocale, la modifica di un campo. Lo stato corrente è una conseguenza della storia, non un dato che si sovrascrive.
Entry
item_id → articolo
kind status | note | photo | video | audio | edit
text, media_path contenuto dell'evento
from_status, to_status per i cambi di stato
user_id chi
created_at quando
Il registro permette di ricostruire chi ha portato un capo in sartoria, quanto è rimasto in esposizione, quale apparato è stato sostituito dopo il collaudo. Avere stato di partenza e di arrivo in ogni evento permette anche di annullare l'ultima azione. Note e allegati possono essere rimossi da chi li ha inseriti; i cambi di stato restano.
All'utente si mostrano due viste diverse dello stesso registro: una storia semplice delle azioni, per il lavoro quotidiano, e il registro completo, per le verifiche.
4. Gli stati sono transizioni esplicite
Da ogni stato sono ammessi solo alcuni passaggi, e l'interfaccia mostra solo quelli: un capo consegnato può diventare un reso, non tornare "ricevuto".
| Negozio | ricevuto → in magazzino ⇄ in esposizione ⇄ in sartoria → consegnato → reso |
|---|---|
| Impianto IT | ordinato → ricevuto → consegnato all'installatore → installato → collaudato → in servizio |
Nel negozio venduto non è uno stato: un capo venduto può essere ancora in magazzino in attesa del ritiro, o in sartoria per l'orlo. È un'informazione separata dalla posizione, con un vincolo: "consegnato" richiede "venduto". Nell'impianto vale lo stesso per l'accettazione da parte del committente rispetto alla posizione fisica dell'apparato.
5. Atteso contro ricevuto
Al ricevimento il documento di trasporto dice cosa dovrebbe arrivare; la scansione dice cosa è arrivato davvero. Il confronto avviene su una chiave normalizzata (codice articolo, taglia, colore; nell'impianto: modello e numero di serie) e produce cinque esiti: corrisponde, mancante, non presente nel documento, quantità inferiore, quantità superiore.
Le righe del documento si possono inserire a mano o far leggere a un modello AI da un PDF o da una foto. In entrambi i casi il confronto segue regole fisse: il modello AI estrae le righe, non decide l'esito.
6. Cosa cambia tra cento e mille oggetti
Il modello è lo stesso. Cambiano i campi (nell'impianto: edificio, locale, armadio, indirizzo IP; in negozio: taglia, colore, punto vendita), gli stati e il supporto di lettura. Con qualche centinaio di articoli il QR letto uno alla volta è sufficiente. Con migliaia, e con inventari frequenti, serve l'RFID UHF, che legge decine di etichette al secondo senza vista diretta.
In sintesi: un identificativo per oggetto, separato dall'etichetta; una storia in forma di eventi; stati e transizioni definiti sul processo.