Introduzione
Il Node Worker è il componente responsabile dell'esecuzione di tutte le attività in background della piattaforma Tidiko AI. Utilizza il sistema di code Hatchet per gestire operazioni asincrone complesse come l'elaborazione di documenti, la generazione di embedding e il salvataggio delle conversazioni.
Architettura del Worker
Componenti Principali
Il worker è strutturato in due worker specializzati che gestiscono tipi specifici di attività:
1. Embeddings Worker
- Scopo: Gestione di tutte le operazioni relative agli embedding e al vector store
- Capacità: 300 task concorrenti
- Workflow principali:
resource-embedding-workflow: Elaborazione completa di risorse (file, URL, prodotti)embed-resource-task: Generazione e salvataggio embeddingquery-embedding-task: Generazione embedding per query di ricerca
2. Chat Logger Worker
- Scopo: Salvataggio dei messaggi delle conversazioni su Laravel
- Capacità: 100 task concorrenti
- Workflow principali:
chat-logger-task: Salvataggio messaggi chat su database Laravel
Tecnologie Utilizzate
- Hatchet: Sistema di code per gestione task asincroni
- Qdrant: Vector database per storage degli embedding
- Jina AI: Servizio per generazione embedding
- Crawlee + Playwright: Sistema di crawling interno avanzato (sostituisce Crawl4AI)
- MinIO: Object storage per risultati crawling e file temporanei
- LangChain: Framework per elaborazione documenti
- Express: Server HTTP per API endpoints
Funzionalità Principali
1. Elaborazione Documenti
- File Supportati: PDF, DOCX, TXT, CSV, Excel, XML, JSON
- Processo:
- Caricamento e parsing del documento
- Suddivisione in chunk ottimali
- Generazione embedding tramite Jina AI
- Salvataggio su Qdrant con metadati strutturati
2. Elaborazione URL e Crawling Avanzato
- Crawler Interno: Sistema Crawlee + Playwright per crawling robusto
- Tipi Supportati:
- URL singoli
- URL multipli
- Sitemap XML ricorsive (multi-livello)
- Caratteristiche Avanzate:
- Batching Automatico: Divisione in batch da 10 URL per ottimizzazione
- Pipeline HTML → Markdown: Conversione intelligente con rimozione elementi non utili
- SPA Support: Gestione automatica di Single Page Applications
- Framework Detection: Rilevamento automatico di React, Vue, Angular, etc.
- MinIO Storage: Salvataggio persistente dei risultati crawling
- Processo:
- Parsing sitemap ricorsivo (se applicabile)
- Crawling con Playwright headless
- Estrazione contenuto basata su framework rilevato
- Conversione HTML → Markdown pulito
- Salvataggio su MinIO per persistenza
- Suddivisione in chunk ottimali
- Generazione e salvataggio embedding
3. Elaborazione Prodotti E-commerce
- Integrazione: WooCommerce REST API
- Processo:
- Estrazione prodotti, categorie e attributi
- Generazione embedding per ricerca semantica
- Salvataggio strutturato su Qdrant
4. Gestione Rate Limiting
- TPM (Tokens Per Minute): 50,000,000 token/minuto
- Controllo automatico: Bucket system per gestione limiti
- Retry intelligente: Backoff esponenziale per fallimenti
5. Salvataggio Conversazioni
- Integrazione Laravel: API REST per persistenza dati
- Metadati completi: Token usage, timestamp, modello utilizzato
- Gestione errori: Retry automatico con backoff
Flusso di Lavoro
Elaborazione Risorse
Gestione Code
- Ricezione Task: Il worker riceve task dal Node Agent
- Rate Limiting: Controllo automatico dei limiti API
- Elaborazione Batch: Processamento in batch di 30 task per volta
- Retry Logic: Gestione automatica dei fallimenti
- Cleanup: Pulizia risorse temporanee
Configurazione e Deployment
Variabili d'Ambiente Richieste
QDRANT_URL: URL del cluster QdrantQDRANT_API_KEY: Chiave API per QdrantJINA_API_KEY: Chiave API per Jina AILARAVEL_API_URL: URL dell'API LaravelHATCHET_CLIENT_TOKEN: Token per connessione HatchetMINIO_ENDPOINT: URL endpoint MinIO (es. http://minio:9000)MINIO_ACCESS_KEY: Chiave accesso MinIOMINIO_SECRET_KEY: Chiave segreta MinIOMINIO_BUCKET_NAME: Nome bucket per storage risultati
Avvio Worker
# Embeddings Worker
pnpm run start workers/embeddingsWorker.ts
# Chat Logger Worker
pnpm run start workers/chatLoggerWorker.ts
Monitoraggio e Logging
- Winston Logger: Sistema di logging strutturato
- Metriche Hatchet: Monitoraggio performance task
- Health Check: Endpoint
/healthper verifica stato - Error Tracking: Log dettagliati per debugging
Sicurezza
- JWT Authentication: Autenticazione per API endpoints
- CORS Configuration: Controllo accessi cross-origin
- File Validation: Controllo tipi file e dimensioni
- Rate Limiting: Protezione da abusi API