Passa al contenuto principale

Pipeline Upload Diretta al Worker

Da aprile 2026 l'upload dei file knowledge-base non passa più esclusivamente dal Node Agent: Laravel comunica direttamente con il Node Worker tramite WorkerApiService.

Architettura

Componenti Laravel

ServizioRuolo
WorkerApiServiceFacade per operazioni worker (upload, delete, collection, task)
WorkerHttpClientClient HTTP autenticato verso WORKER_URL
WorkerCollectionServiceCreazione/gestione collection Qdrant
WorkerTaskServiceSubmit e tracking task embedding
WorkerWebhookControllerRiceve callback stato task

Endpoint webhook

POST /api/worker/webhooks/task-status

Middleware worker.webhook — autenticazione HMAC per notifiche di completamento/fallimento task.

Flusso upload

  1. L'utente carica un file dalla dashboard (PDF, DOCX, JSONL, Markdown, ecc.)
  2. Laravel salva il file localmente e crea record File con stato queued
  3. ProcessQueuedFilesUpload (artisan) invia il file al worker via WorkerApiService::upload()
  4. Il worker elabora (loader → chunking → embedding → Qdrant)
  5. Al termine, il worker notifica Laravel via webhook
  6. CheckQueuedFileStatus aggiorna lo stato del file (completed / failed)
  7. La UI riceve aggiornamenti live tramite notifiche di versioning file-list

Retry e recovery

  • Retry manuale: pulsante retry in UI per file in stato failed
  • WorkerApiService::submitFileTask(): re-invio task al worker
  • WorkerApiService::cancelFileTask(): annullamento task in corso
  • RembedUploads: comando per re-embedding completo di una collection

Formati supportati (upload)

Oltre ai formati classici (PDF, DOCX, TXT, CSV, JSON, XML), dalla release RAG 2026:

  • JSONL (.jsonl) — record per riga, profilo nested_document per chunking gerarchico
  • Markdown (.md) — documenti pre-chunked con metadati sezione
  • Feed/API — batch processing con endpoint dedicato

Vedi: Elaborazione Documenti (Worker).

Variabili d'ambiente

VariabileDescrizione
WORKER_URLURL base del Node Worker
WORKER_WEBHOOK_SECRETSegreto HMAC per webhook task-status
FILE_UPLOAD_MAX_SIZEDimensione massima upload (intero, es. 512000)