Fase 1. Analisi con OCR
L'Agente monitora la casella email, scarica i PDF delle conferme d'ordine e usa l'OCR per "leggere" date e prezzi, collegandoli automaticamente all'ordine corrispondente nel gestionale.
Fase 2. Controllo incrociato
Confronta riga per riga la conferma con l'ordine originale. Verifica due variabili critiche: prezzo unitario (per proteggere i margini) e data consegna (per proteggere la pianificazione).
Fase 3. Gestione eccezioni
Se rileva discrepanze, attiva l'operatore umano: l' Addetto agli Acquisti per negoziare i prezzi o il Responsabile della Programmazione per gestire i ritardi critici che impattano la produzione.
AGENTE AI
LOGICA
UMANO (Eccezione)
COMPLETATO
graph TD
%% STILI
classDef ai fill:#fce7ff,stroke:#bb31c7,stroke-width:2px,color:#0a0a28,rx:5px,ry:5px;
classDef human fill:#fee2e2,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:#dcfce7,stroke:#10b981,stroke-width:2px,color:#064e3b,rx:5px,ry:5px;
classDef input fill:#f1f5f9,stroke:#64748b,stroke-width:2px,stroke-dasharray: 5 5,color:#334155;
Start["📥 Email Fornitore con PDF"]:::input --> Parse("🤖 AI: OCR Intelligente & Estrazione"):::ai
Parse --> SearchPO{"🔍 Ordine Esiste?"}:::decision
SearchPO -->|No| AlertPO["👤 Alert: Ordine non trovato"]:::human
SearchPO -->|Sì| CheckPrice{"💶 Prezzo Coincide?"}:::decision
%% LOGICA PREZZO
CheckPrice -->|No| CalcDiff["🤖 Calcola Variazione"]:::ai
CalcDiff --> Tolleranza{"< Soglia?"}:::decision
Tolleranza -->|No| HumanPrice["👤 BUYER: Accetta Aumento?"]:::human
%% LOGICA DATA
CheckPrice -->|Sì| CheckDate{"📅 Data Consegna Coincide?"}:::decision
Tolleranza -->|Sì| CheckDate
CheckDate -->|Sì| UpdateERP["🚀 Aggiorna ERP: CONFERMATO"]:::success
CheckDate -->|"No (Ritardo)"| CheckPlan{"⚠️ Impatta Produzione?"}:::decision
CheckPlan -->|"No (Stock ok)"| UpdateDate["🤖 Aggiorna Data ERP + Alert"]:::ai
CheckPlan -->|"Sì (Rischio Fermo)"| HumanPlan["👤 PLANNING: Riprogramma/Sollecita"]:::human
%% CHIUSURA
UpdateDate --> UpdateERP
HumanPrice -->|Rifiuta| RejectEmail["📧 Email Contestazione"]:::input
HumanPrice -->|Accetta| UpdateERP
HumanPlan --> UpdateERP