Salta al contenuto principale

Domain Knowledge Base - Logistica

Come funziona il dominio, prima di scrivere una riga di codice? Scegli un documento dall'albero a sinistra: ogni pagina spiega una parte del modello.

Regole di Business - Logistica

Questo documento elenca le regole di business fondamentali del dominio logistico, identificate con codice univoco BR-NNN. Ogni regola è technology-independent e descrive un vincolo invariante sul comportamento del sistema.

---

BR-001 - Il peso tariffabile è il maggiore tra peso reale e peso volumetrico

Codice: BR-001 Nome: Chargeable Weight rule Descrizione: Per la tariffazione del trasporto aereo ed espresso, il peso su cui viene calcolato il nolo è il chargeable weight = max(pesoRealeKg, pesoVolumeKg). Il peso volumetrico si calcola come (L × P × H cm) / divisore tariffario (5.000 per IATA aereo; verificare contratto per espresso). Se il peso volumetrico supera il peso reale, il vettore addebiterà il peso volumetrico. Motivazione: Compensare il vettore per il volume occupato nel mezzo anche quando la merce è leggera. Incentiva l'ottimizzazione degli imballaggi. Priorità: ALTA Attori: Sistema tariffario TMS, Vettore Eccezioni: Per trasporto su strada FTL la tariffa è fissa per veicolo; per mare FCL è per container. La regola si applica principalmente a aereo e LTL/espresso. Tracciabilità: glossary.md § Dimensional Weight; eval.jsonl log-eval-002.

---

BR-002 - Gli eventi di tracking sono append-only e immutabili

Codice: BR-002 Nome: Tracking Events Immutability Descrizione: Ogni evento di tracking registrato (scan in un hub, presa in carico, consegna) è immutabile: non può essere modificato né cancellato. Nuovi eventi si aggiungono sempre in coda. Lo stato corrente della spedizione è derivato dall'ultimo evento pertinente. Questa regola garantisce l'integrità dell'audit trail logistico e la fedeltà al contratto di trasporto. Motivazione: Il tracking è prova legale dell'esecuzione del contratto di trasporto. Modificare un evento sarebbe equivalente a falsificare una lettera di vettura CMR. Priorità: CRITICA Attori: Sistema TMS, Operatori hub Violazione: Qualsiasi UPDATE/DELETE sulla tabella tracking_eventi. Tracciabilità: schema.sql tabella tracking_eventi; state machine spedizione-lifecycle.md.

---

BR-003 - Una spedizione Cold Chain deve avere temperatura documentata per ogni segmento

Codice: BR-003 Nome: Cold Chain Continuity Descrizione: Per ogni spedizione con flag isColdChain = true, deve esistere documentazione di temperatura per ogni tratta: il data logger del mezzo deve registrare la temperatura per tutta la durata del trasporto, e la documentazione deve essere allegata alla POD. Per spedizioni farmaceutiche GDP, il report di temperatura deve essere firmato digitalmente e archiviato per 5 anni. Motivazione: Garanzia della qualità del prodotto e conformità normativa GDP (EMA) / HACCP (alimentare). La mancanza di documentazione equivale a rottura presunta della catena del freddo. Priorità: CRITICA Attori: Vettore, QPD (per GDP), Sistema IoT cold chain Violazione: Consegna di merce cold chain senza report di temperatura → merce in quarantena automatica. Tracciabilità: business-processes.md Processo 6; faq.md § cold chain.

---

BR-004 - L'Incoterm determina chi paga il trasporto e dove passa il rischio

Codice: BR-004 Nome: Incoterm Risk Transfer Point Descrizione: L'Incoterm applicato al contratto di vendita (EXW, FCA, FOB, CIF, DAP, DDP, ecc.) determina univocamente: (a) chi assume i costi di trasporto e assicurazione per ogni segmento, e (b) il luogo geografico preciso in cui il rischio di perdita o danno passa dal venditore all'acquirente. Il sistema deve memorizzare solo il codice del termine (3 lettere) e non testo verbatim ICC. Motivazione: Evitare ambiguità contrattuali internazionali e assicurare la corretta assegnazione dei costi e delle responsabilità assicurative. Priorità: ALTA Attori: Mittente, Destinatario, Vettore, Assicuratore Violazione: Assenza dell'Incoterm in un ordine di vendita internazionale → il contratto è privo di accordo sul passaggio del rischio. Tracciabilità: glossary.md § Incoterms 2020; FAQ § Incoterms; eval.jsonl log-eval-042.

---

BR-005 - Il codice HS deve essere corretto per lo sdoganamento

Codice: BR-005 Nome: HS Code Mandatory for International Shipments Descrizione: Ogni spedizione internazionale (paese origine ≠ paese destinazione) deve avere un codice HS valido e corretto associato alle merci trasportate. Il codice HS determina le aliquote doganali, le misure di difesa commerciale e i requisiti di conformità. Un HS Code errato costituisce infrazione doganale. Motivazione: Conformità normativa con il Codice Doganale Unionale UE (e normative equivalenti dei paesi terzi). Prevenzione di sanzioni e ritardi doganali. Priorità: ALTA Attori: Mittente, Spedizioniere doganale, Autorità doganali Violazione: Spedizione internazionale senza HS Code → rifiuto della dichiarazione doganale; sanzioni per classificazione errata. Tracciabilità: glossary.md § HS Code; FAQ § sdoganamento; eval.jsonl log-eval-026.

---

BR-006 - Il FEFO deve essere applicato per merci con data di scadenza

Codice: BR-006 Nome: First Expired First Out Mandatory Descrizione: Per tutte le SKU gestite con data di scadenza nel WMS, il sistema deve proporre sempre il prelievo del lotto con la data di scadenza più prossima (FEFO - First Expired First Out). Non è permesso prelevare un lotto con scadenza più lontana se ne esiste uno con scadenza più prossima nella stessa ubicazione o in ubicazioni dello stesso tipo. Eccezioni devono essere autorizzate dal responsabile QC con audit trail. Motivazione: Prevenzione di obsoleti e non conformità normative (farmaci, alimenti). Riduzione dei costi di smaltimento. Priorità: ALTA Attori: WMS, Operatore picking, Responsabile QC Violazione: Prelievo FIFO su merce a scadenza senza autorizzazione QC → rischio di consegnare merce prossima alla scadenza o scaduta. Tracciabilità: best-practices.md § 7; eval.jsonl log-eval-019.

---

BR-007 - I tempi di guida dei conducenti devono rispettare il Regolamento CE 561/2006

Codice: BR-007 Nome: Driver Hours Compliance Descrizione: Il TMS deve vincolare la pianificazione dei percorsi rispettando i limiti di guida del Regolamento CE 561/2006: massimo 9 ore giornaliere (10h max 2 volte/settimana), pausa obbligatoria di 45 min ogni 4,5 ore di guida, riposo giornaliero minimo 11 ore consecutive, massimo 56 ore settimanali. I percorsi ottimizzati devono includere le pause obbligatorie nel calcolo dei tempi. Motivazione: Conformità normativa obbligatoria in tutti i paesi EU. Sicurezza stradale e protezione del lavoratore. Priorità: CRITICA Attori: TMS, Conducente, Vettore Violazione: Percorso pianificato che supera i limiti di guida → multa fino a €2.000+ per il conducente, sanzioni per il vettore. Tracciabilità: terminology.md § Reg. CE 561; eval.jsonl log-eval-008.

---

BR-008 - La giacenza genera costi dopo la franchigia contrattuale

Codice: BR-008 Nome: Hold Charges After Free Period Descrizione: Quando una spedizione entra in stato GIACENZA (failed delivery non risolto), il vettore applica diritti di giacenza giornalieri dopo il periodo di franchigia contrattuale (tipicamente 2-5 giorni lavorativi). Il sistema deve calcolare i costi di giacenza maturati e allertare il team customer service entro il primo giorno di giacenza per attivare le istruzioni di re-delivery o reso. Motivazione: Ridurre i costi di giacenza imprevisti e garantire una risposta proattiva al cliente finale. Priorità: MEDIA Attori: TMS, Customer Service, Vettore Tracciabilità: glossary.md § Giacenza; events/domain-events.md § GiacenzaAttivata.