Skip to Content
TecnicaAiAI Chatbot Assistant - FoodCost

AI Chatbot Assistant - FoodCost

📖 Descrizione

Assistente AI integrato in FoodCost che permette agli utenti di:

  • Fare domande sui propri dati (fatture, fornitori, prodotti)
  • Ottenere aiuto sull’utilizzo del software
  • Ricevere analisi e insights
  • Consultare la documentazione integrata

🏗️ Architettura

Componenti Principali

  1. ChatButton (src/components/AIChat/ChatButton.tsx)

    • Icona nella topbar accanto al toggle tema
    • Apre uno Sheet laterale con l’interfaccia chat
  2. ChatInterface (src/components/AIChat/ChatInterface.tsx)

    • UI della chat con streaming delle risposte
    • Supporto markdown per formattazione
    • Esempi di domande predefinite
    • Auto-scroll e auto-resize textarea
  3. API Route (src/app/api/chat/route.ts)

    • Endpoint POST /api/chat
    • Integrazione con OpenAI GPT-4
    • Autenticazione basata su session
    • Context del tenant
  4. Context System (src/lib/ai/chatContext.ts)

    • Caricamento documentazione software
    • Preparazione context per l’AI
    • Filtraggio informazioni rilevanti
  5. Tools (src/lib/ai/chatTools.ts)

    • Funzioni per query al database
    • Analisi fatture, fornitori, prodotti
    • Calcolo food cost
    • Transazioni bancarie recenti

🔧 Tecnologie Utilizzate

  • AI SDK: Vercel AI SDK v6

    • @ai-sdk/openai - Provider OpenAI
    • Streaming responses
  • UI Components:

    • Radix UI Sheet per il pannello laterale
    • React Markdown per formattazione risposte
    • Lucide React per le icone
  • Backend:

    • OpenAI GPT-4o model
    • Mongoose per query database
    • NextAuth per autenticazione

📝 Variabili d’Ambiente

Assicurati di avere nel file .env:

OPENAI_API_KEY=your-openai-api-key

🚀 Come Usare

  1. Accesso al Chatbot

    • Clicca l’icona 💬 nella topbar
    • Si aprirà un pannello laterale a destra
  2. Interazione

    • Scrivi domande in linguaggio naturale
    • Premi Enter per inviare (Shift+Enter per andare a capo)
    • Le risposte appariranno in streaming
  3. Esempi di Domande

    • “Qual è il totale delle fatture di questo mese?”
    • “Mostrami i fornitori principali”
    • “Come posso importare nuove fatture?”
    • “Analizza il food cost dell’ultimo trimestre”

🎯 Funzionalità Future

Tools/Function Calling (da implementare)

Il sistema è predisposto per l’integrazione di tools che permettono all’AI di:

  • Interrogare il database in tempo reale
  • Generare report personalizzati
  • Eseguire calcoli complessi
  • Recuperare dati specifici del tenant

Memoria Conversazioni

  • Salvare lo storico delle chat
  • Riprendere conversazioni precedenti
  • Esportare conversazioni

Miglioramenti Context

  • Indicizzazione vettoriale della documentazione
  • RAG (Retrieval Augmented Generation) avanzato
  • Context più ricco con dati statistici

📂 Struttura File

src/ ├── components/ │ └── AIChat/ │ ├── ChatButton.tsx # Trigger nella topbar │ └── ChatInterface.tsx # Interfaccia chat ├── app/ │ └── api/ │ └── chat/ │ └── route.ts # API endpoint └── lib/ └── ai/ ├── chatContext.ts # Sistema context └── chatTools.ts # Database tools

🔐 Sicurezza

  • ✅ Autenticazione richiesta via NextAuth
  • ✅ Isolamento dati per tenant
  • ✅ Rate limiting (da implementare)
  • ✅ Validazione input
  • ✅ Sanitizzazione output

🐛 Troubleshooting

Errore “Unauthorized”

  • Verifica di essere autenticato
  • Controlla che la session contenga tenant_id

Risposte lente

  • Controlla la connessione a OpenAI
  • Verifica le performance del database

Errori di streaming

  • Controlla che OPENAI_API_KEY sia configurata
  • Verifica i log del server

📊 Metriche & Monitoraggio

Considera di aggiungere:

  • Tracking domande frequenti
  • Tempo medio di risposta
  • Tasso di soddisfazione utenti
  • Costi API OpenAI

🎨 Personalizzazione

Modificare il System Prompt

Edita src/app/api/chat/route.ts, sezione systemPrompt

Cambiare Model

Nel file route.ts:

model: openai("gpt-4o-mini"); // Più economico model: openai("gpt-4-turbo"); // Più potente

Aggiungere Esempi

Edita exampleQuestions in ChatInterface.tsx

📞 Supporto

Per domande o problemi, consulta:

Last updated on