Skip to content

Le schede di una pipeline ​

Ogni pipeline del catalogo ha una scheda, docs/pipelines/<nome>.md nel repo che la contiene, creata insieme alla pipeline e aggiornata nello stesso commit di ogni modifica al comportamento. etl docs build non costruisce il sito se una pipeline del catalogo non ha la sua scheda, cioè una pagina con <PipelineDag name="<nome>" />.

In questa guida ci sono le schede delle pipeline del core, in due sezioni: le pipeline pronte, che un repo cliente dichiara nel suo catalogo e non documenta, e gli esempi, le pipeline di riferimento da cui partire. Le schede delle pipeline di un cliente stanno nella sua documentazione.

Il nome della pipeline è kebab-case, e combacia con processes.function e con scheduled_jobs.process_function: il worker risolve per nome, senza traduzione.

Template scheda ​

markdown
---
pageClass: etl-wide
---

# Pipeline: <nome>

- **Scopo:** ...
- **Owner:** ...
- **Cadenza:** daily | hourly | on-demand
- **Runbook:** [link](../runbooks/<nome>.md)

## Flusso dati

Una riga sola di contesto, poi il grafo della pipeline:

```md
<PipelineDag name="<nome-della-pipeline>" />
```

Il disegno arriva dal `getSpec()` della pipeline dichiarata nel catalogo `etl.config.ts` — nodi, archi,
dead-letter e ramo catch sono quelli che girano davvero — quindi non si disegna a mano e non
va tenuto allineato. Le istanze di sub-pipeline sono nodi chiusi in cui si entra sul posto, e
`?istanza=<percorso d'istanza>` apre la scheda già dentro un'istanza. Vedi
`orders-enriched-daily` fra gli esempi.

Sotto il grafo il componente genera anche la tabella «Lo scopo dei nodi», dal `purpose` del
builder: gli scopi non si scrivono nella scheda.

## Sorgenti

| Sistema | Schema/tabella | Chiave naturale | Modalità (full/incrementale) |
| ------- | -------------- | --------------- | ---------------------------- |

## Sink

| Sistema | Tabella/destinazione | Idempotenza (upsert/merge/swap) |
| ------- | -------------------- | ------------------------------- |

## Trasformazioni e regole di business

- ... (con riferimento al file `src/pipelines/<nome>/pipeline.ts`)

## Contratti (schema Zod)

- Input: ...
- Output: ...

## Parametri ed env

- `ctx.params`: ... (i parametri di lancio dichiarati con `runParams`, con tipo e obbligatorietà, se ci sono)
- Variabili d'ambiente: ... (anche in `.env.example`)

## Gestione errori

- Cosa finisce nel dead-letter e come si recupera.

## Test

- Riferimento ai test: `src/pipelines/<nome>/pipeline.test.ts`.

## Versioni

Una riga sola di contesto, poi la storia della pipeline:

```md
<PipelineVersions name="<nome-della-pipeline>" />
```

La storia arriva dal changelog della pipeline (`src/pipelines/<nome>/changelog.ts`) e dagli
snapshot del piano di ogni versione (`versions/v<N>.plan.json`): per ogni versione, dalla più
recente, la voce scritta dall'autore e sotto il diff di nodi, archi e colonne rispetto alla
precedente, con «rompe il contratto» se una colonna di un sink sparisce, cambia nome o cambia tipo. Non si
scrive a mano: vedi [versioni di pipeline](../conventions/versioni-di-pipeline.md).

Noeva è un marchio registrato di 4D S.R.L.