AI - Approfondimenti

Azioni Server AI

Automazioni avanzate con decisioni AI integrate nei workflow aziendali di Laundry ERP

Azioni Server AI

Le azioni server AI estendono il framework di automazione di Laundry ERP permettendo all'intelligenza artificiale di prendere decisioni durante un workflow.

Sono progettate per casi in cui la logica non può essere espressa interamente attraverso condizioni fisse, ma richiede comunque un'esecuzione controllata tramite azioni server standard.

Come Funzionano le Azioni Server AI

I workflow guidati da AI in Laundry ERP sono costruiti su una chiara separazione di responsabilità tra l'azione server AI (il Manager) e lo strumento (il Worker).

Azione Server AI: Il Manager

Un'azione server AI agisce come decisore, o manager. Essa:

  • Legge il record e il suo contesto
  • Interpreta il prompt AI
  • Decide quale strumento chiamare e quali argomenti utilizzare

L'azione server non applica regole di business, modifica record direttamente o garantisce la correttezza dell'operazione. Il suo ruolo è limitato al decision-making.

Strumento AI: Il Worker

Uno strumento è un'azione server standard con l'opzione Usa in AI abilitata nella scheda Utilizzo. Gli strumenti:

  • Contengono tutta la logica di esecuzione
  • Eseguono aggiornamenti, spostamenti o scritture sui record
  • Devono applicare regole di business esplicitamente nel codice Python

Se uno strumento viene chiamato dall'azione server AI, verrà eseguito incondizionatamente, a meno che il codice stesso non lo impedisca.

Workflow Azione Server AI

Il workflow di un'azione server AI segue questa sequenza:

  1. Un record attiva un'azione server AI
  2. Il prompt AI viene valutato, utilizzando il record come contesto
  3. L'AI seleziona uno degli strumenti disponibili
  4. L'AI fornisce gli argomenti attesi dallo strumento
  5. Lo strumento selezionato esegue il suo codice Python
Importante: Le azioni server AI funzionano senza logica personalizzata solo quando il comportamento sottostante esiste già in Laundry ERP, come spostare un documento in una cartella. In questi casi, l'AI seleziona i parametri e Laundry ERP esegue l'azione.

Caso d'Uso: Ordinamento Automatico Documenti

L'esempio Auto-sort documents in Inbox dimostra il pattern completo delle Azioni Server AI. Navigare al menu Azioni Server andando in Impostazioni → Tecnico → Azioni Server.

Questa azione server è progettata per rivedere il contenuto dei documenti e aggiungere tag. L'azione stessa non sposta documenti o aggiunge tag, decide solo quale strumento utilizzare in base al contenuto del documento.Il Modello per l'azione è Documento e il Tipo è AI.

Il prompt per questa azione fornisce contesto sul documento e l'intento dell'azione.

Il campo Strumento include diverse azioni che possono essere eseguite in base a questo prompt, tra cui spostare un documento, aggiungere tag o creare fatture.

AI: Add Tags, AI: Move to Folder e AI: Rename Document sono tutte azioni server di tipo Esegui Codice, cioè attivano codice Python.

Ad esempio, se l'azione determina, in base al contenuto del documento, che lo strumento più appropriato è AI: Move to Folder, il codice Python esegue l'operazione seguente:

ai['result'] = record._ai_action_move_in_folder(folder_id)

Questo codice si esegue incondizionatamente quando chiamato e effettua lo spostamento utilizzando un metodo esistente.

Nota: L'AI non deduce gli argomenti dal codice Python o dalla firma del metodo. Gli argomenti passati a uno strumento sono determinati interamente dalla configurazione dello strumento.Per lo strumento AI: Move to Folder, il codice Python si aspetta una variabile chiamata folder_id. L'AI sa di fornire folder_id perché è esplicitamente dichiarato come argomento nella configurazione. Questo si trova nella scheda Utilizzo dell'azione server, nel campo Schema AI. La colonna Nome sotto Schema AI deve corrispondere esattamente al nome della variabile utilizzata nel codice Python.L'AI utilizza la descrizione dell'argomento per capire cosa rappresenta il parametro, che tipo di valore è atteso e quando è appropriato fornirlo.Se un argomento non è definito nella scheda Utilizzo, l'AI non può fornirlo, anche se il codice Python lo referenzia.

Creare Strumenti AI Personalizzati

Lo stesso pattern dell'esempio Auto-sort documents in Inbox può essere implementato utilizzando logica standard di Laundry ERP. Ad esempio, per creare un'azione che può aggiornare la descrizione di un task, si potrebbe creare un'azione Esegui Codice con il seguente codice:

record.write({'description': content})

Per funzionare correttamente, content deve essere definito come argomento nella scheda Utilizzo dello strumento.

Esempi Pratici per Lavanderie

Classificazione Automatica DDT in Arrivo

Scenario: DDT ricevuti via email vengono automaticamente classificati e archiviati nella cartella cliente corretta.

Azione Server AI: "Classifica DDT"

Configurazione:

  • Modello: documents.document
  • Tipo: AI
  • Prompt:
    Analizza il contenuto del DDT /field[Nome File].
    Identifica il cliente dal documento e sposta il file nella cartella corretta.
    Se il DDT contiene materiale pericoloso o reclami, aggiungi tag "URGENTE".
    Se non riesci a identificare il cliente, aggiungi tag "DA_VERIFICARE".
    

Strumenti Disponibili:

  1. AI: Sposta in Cartella Cliente
    • Python: record._ai_action_move_to_customer_folder(partner_id)
    • Schema AI: partner_id (Integer, "ID del cliente identificato nel DDT")
  2. AI: Aggiungi Tag Urgente
    • Python: record.write({'tag_ids': [(4, env.ref('documents.tag_urgent').id)]})
    • Schema AI: nessun argomento
  3. AI: Aggiungi Tag Da Verificare
    • Python: record.write({'tag_ids': [(4, env.ref('documents.tag_review').id)]})
    • Schema AI: nessun argomento

Risultato: DDT viene automaticamente archiviato nella cartella del cliente corretto o taggato per revisione manuale.

Prioritizzazione Automatica Ordini Urgenti

Scenario: Ordini con determinate caratteristiche vengono automaticamente marcati come urgenti e assegnati al responsabile produzione.

Azione Server AI: "Valuta Urgenza Ordine"

Configurazione:

  • Modello: sale.order
  • Tipo: AI
  • Prompt:
    Analizza l'ordine /field[Nome].
    Contesto: Cliente /field[Partner], Data consegna /field[Data Consegna], Note /field[Note Cliente].
    
    CRITERI URGENZA:
    - Data consegna entro 48h
    - Cliente VIP o con storico problemi
    - Note contengono parole: "urgente", "emergenza", "immediato", "evento"
    - Quantità > 500 pezzi con consegna < 7 giorni
    
    Se uno o più criteri sono soddisfatti:
    1. Imposta priorità "Alta"
    2. Assegna a responsabile produzione
    3. Invia notifica email urgenza
    
    Altrimenti imposta priorità "Normale".
    

Strumenti Disponibili:

  1. AI: Imposta Priorità Alta
    • Python: record.write({'priority': '2'})
  2. AI: Assegna Responsabile Produzione
    • Python: record.write({'user_id': env.ref('laundry.user_production_manager').id})
  3. AI: Invia Email Urgenza
    • Python: record.message_post_with_template(env.ref('laundry.email_template_urgent_order').id)

Suggerimento Categoria Prodotto

Scenario: Quando viene creato un nuovo prodotto tessile, l'AI suggerisce automaticamente la categoria in base a nome e descrizione.

Azione Server AI: "Suggerisci Categoria Prodotto"

Configurazione:

  • Modello: product.template
  • Tipo: AI
  • Trigger: Alla creazione
  • Prompt:
    Analizza nome prodotto /field[Nome] e descrizione /field[Descrizione].
    
    Assegna alla categoria appropriata:
    - "Biancheria Letto" se lenzuola, copripiumini, federe
    - "Biancheria Bagno" se asciugamani, accappatoi, tappetini
    - "Biancheria Tavola" se tovaglie, tovaglioli, runners
    - "Divise Lavoro" se camici, giacche, pantaloni da lavoro
    - "Tessuti Speciali" se antimacchia, ignifughi, tecnici
    - "Altro" se non rientra nelle categorie
    

Strumenti Disponibili:

  1. AI: Assegna Categoria
    • Python: record.write({'categ_id': category_id})
    • Schema AI: category_id (Integer, "ID categoria prodotto identificata")

Problemi Comuni

Perché il Campo Strumenti è Vuoto?

  • Confermare che almeno un'azione server ha Usa in AI abilitato
  • Confermare che almeno uno strumento è assegnato allo stesso Modello dell'azione server

Perché lo Strumento è Stato Eseguito ma Non è Successo Nulla?

  • Il codice Python è uscito senza modifiche
  • Gli argomenti richiesti erano mancanti o vuoti
  • Le condizioni di business non erano implementate nella logica dello strumento

Perché l'AI ha Scelto uno Strumento Inaspettato?

  • Il prompt mancava di contesto sufficiente
  • Più strumenti corrispondevano allo stesso intento
  • Nessun vincolo era applicato a livello di strumento

Best Practices

Scrittura Prompt Efficaci

Fornire Contesto Completo:

❌ "Classifica il documento"
✅ "Analizza documento /field[Nome] tipo /field[Tipo]. Cliente /field[Partner].
   Sposta in cartella cliente se identificato, altrimenti tagga 'DA_VERIFICARE'"

Definire Criteri Chiari:

❌ "Se urgente, notifica"
✅ "URGENTE se: data consegna < 48h OR note contengono 'urgente|emergenza' OR cliente VIP.
   AZIONE: Imposta priorità alta + notifica responsabile"

Gestire Casi Limite:

Includi sempre: "Se non riesci a determinare con certezza, [azione fallback]"

Sicurezza e Validazione

  • Validare input negli strumenti Python, non fidarsi ciecamente dell'AI
  • Logging: Registrare decisioni AI per audit (es. "AI ha scelto strumento X per motivo Y")
  • Permessi: Strumenti eseguono con permessi utente che attiva l'azione
  • Testing: Testare con dati reali prima di attivare in produzione
Attenzione: Gli strumenti AI eseguono codice Python con permessi dell'utente trigger. Non esporre strumenti pericolosi (delete, unlink) tramite azioni AI accessibili a utenti non fidati.

Performance

  • Limiti chiamate: Ogni esecuzione azione AI = 1 chiamata API provider
  • Azioni batch: Preferire azioni pianificate notturne per grandi volumi
  • Caching: Laundry ERP non cacheggia decisioni AI (ogni volta ricalcola)

Riferimenti Tecnici

Per approfondimenti su azioni server standard:

Per Sviluppatori: Gli strumenti AI sono azioni server standard con metadati aggiuntivi. È possibile creare strumenti complessi combinando Python code + XML-RPC calls + workflow engine.