FireFeed Docs

Pipeline

I 5 step della pipeline FireFeed e come funziona l'aggregazione per N source parallele.

Ogni esecuzione di un progetto attraversa 5 step sequenziali:

FETCH  →  PARSE  →  MERGE  →  RULES  →  EXPORT

Step

1. FETCH

Scarica i dati grezzi da ogni source configurata (CSV via SFTP, JSON via HTTPS, XML via FTP, Amazon SP-API, …). I download girano in parallelo tra source diverse.

2. PARSE

Decodifica i byte scaricati nel formato dichiarato (CSV con separatore custom, JSON con jq-like extraction, XML con XPath) e mappa le colonne sui campi del progetto secondo la mapping configurata in UI.

3. MERGE

Se sono attive più source che alimentano lo stesso progetto, ognuna popola solo i campi che mappa. Lo step MERGE le unisce per merge_key (di default id): un prodotto viene aggiornato in-place se esiste, altrimenti viene inserito. Source diverse che toccano lo stesso prodotto compongono il record finale.

4. RULES

Per ogni export attivo vengono applicate le sue regole (filter/transform/exclude) in una tabella temporanea isolata rules_tmp_*. Le regole sono JSONLogic, generate dal query builder UI. Una regola in un export non altera i dati visibili agli altri export.

5. EXPORT

Ogni export prende il suo set filtrato e produce l'artefatto: file scaricabile (link /api/feeds/[token]), push verso FTP/SFTP/HTTP, chiamata API marketplace. Anche qui gli export girano in parallelo.

Esecuzione

L'esecuzione è orchestrata via BullMQ sul worker Fastify. Ogni step pubblica eventi progress su Redis pubsub, e il web app espone uno stream SSE su /api/projects/[id]/pipeline/events che la dashboard consuma in tempo reale.

Aggregazione N source parallele

Quando girano N import o N export in parallelo, la timeline UI mostra una barra aggregata stabile (media monotona delle source) + un accordion "Per import: …" sotto che mostra le singole righe di progress per source. Lo step è considerato completed solo quando tutte le source attese hanno raggiunto il 100%.

Dettagli implementativi: packages/web/hooks/use-pipeline-sse.ts, packages/web/components/pipeline-monitor.tsx.

In questa pagina