AGENTE AI (Automatico)
LOGICA (Check)
OPERATORE UMANO (Eccezione)
COMPLETATO
graph TD
%% STILI DEI NODI
classDef ai fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e3a8a,rx:5px,ry:5px;
classDef human fill:#fef2f2,stroke:#ef4444,stroke-width:2px,color:#991b1b,rx:5px,ry:5px;
classDef decision fill:#fff7ed,stroke:#f97316,stroke-width:2px,color:#9a3412,rx:50px,ry:50px;
classDef success fill:#f0fdf4,stroke:#22c55e,stroke-width:2px,color:#14532d,rx:5px,ry:5px;
classDef input fill:#f1f5f9,stroke:#64748b,stroke-width:2px,stroke-dasharray: 5 5,color:#334155;
%% NODI INPUT
Start[📥 Ingestione: XML SDI o PDF Email]:::input --> Parse(🤖 AI: Estrazione & Parsing Dati):::ai
%% FASE 1: RICERCA
Parse --> SearchPO{🔍 Ricerca Ordine Acquisto}:::ai
SearchPO -->|Non Trovato| HumanPO[👤 UMANO: Identificazione Ordine]:::human
SearchPO -->|Trovato| CheckPrice{💶 Prezzo Coerente?}:::decision
%% FASE 2: CHECK PREZZO
CheckPrice -->|Sì| CheckQty{📦 Quantità Coerente?}:::decision
CheckPrice -->|No| CalcDiff[🤖 Calcola Delta Prezzo]:::ai
CalcDiff --> Tolleranza{< 1€ Tolleranza?}:::decision
Tolleranza -->|Sì| CheckQty
Tolleranza -->|No| HumanPrice[👤 BUYER: Accetta o Contesta?]:::human
%% FASE 3: CHECK QUANTITÀ
CheckQty -->|Sì| AutoPost[🚀 REGISTRAZIONE CONTABILE]:::success
CheckQty -->|No| CheckTransit{Merce in transito?}:::ai
CheckTransit -->|Sì - Attesa 3gg| Wait[⏳ Sospendi e Riprova domani]:::ai
CheckTransit -->|No - Merce Mancante| HumanWhs[👤 MAGAZZINO: Verifica Entrata]:::human
%% GESTIONE UMANA RISOLUTIVA
HumanPO -->|Corretto| CheckPrice
HumanPrice -->|Accetta| UpdatePO[🤖 Aggiorna Prezzo Ordine]:::ai
HumanPrice -->|Rifiuta| Dispute[📧 Email Reclamo Fornitore]:::input
UpdatePO --> AutoPost
HumanWhs -->|Trovata| FixGr[🤖 Carico Merce Retroattivo]:::ai
FixGr --> AutoPost
HumanWhs -->|Non Arrivata| Dispute
Fase 1: Ingestione & Match
L'Agente intercetta la fattura (XML/PDF) h24. Estrae i dati chiave e cerca nel gestionale l'Ordine di Acquisto corrispondente. Se i dati (Prezzo e Qtà) coincidono perfettamente, la fattura viene registrata senza toccare mano.
Fase 2: Gestione Prezzi
Se il prezzo differisce, l'AI verifica se rientra nella "soglia di tolleranza" (es. < 1€). Se la differenza è alta, blocca tutto e notifica il Buyer sulla Dashboard. Il Buyer decide se accettare (aggiornando l'ordine) o contestare.
Fase 3: Gestione Logistica
Se la fattura c'è ma la merce no (bolla mancante), l'AI verifica se è solo una questione di tempi tecnici (merce in viaggio). Se la merce manca davvero, attiva il magazziniere per un controllo fisico o avvia la contestazione.