# Millesettecento prodotti in mezz'ora, e il problema vero era un altro

> Un motore che ogni giorno trasforma i cataloghi autorizzati dei fornitori in prodotti del catalogo proprietario, senza duplicati e senza rielaborare ciò che non è cambiato.

**Enneci Agency** — Tenuta del Barone di Montemurlo di Nicolò Coppi. Via Piemonte 4/40, 59100 Prato (PO), Italia.
Contatti: ciao@enneciagency.it · +39 379 2885434 (anche WhatsApp) · https://www.enneciagency.it
Zona servita: Prato e provincia, Firenze e Pistoia, e in tutta la Toscana.

## Scheda

- Cliente: Brand2Brand
- Settore: Moda
- Tipo di lavoro: E-commerce
- Anno: 2026
- null
- Tecnologie: Python, TypeScript, PostgreSQL, Docker
- Pagina: https://www.enneciagency.it/progetti/brand2brand/

## Risultati

- **1.695** — album scoperti alla prima sincronizzazione
- **1.693** — prodotti creati, 2 esclusi da regola
- **0** — errori, a una richiesta al secondo
- **30 min** — per l'intera prima importazione

Brand2Brand è un e-commerce che non ha un magazzino proprio: i prodotti nascono dai cataloghi dei fornitori autorizzati. La domanda tecnica non è come importarli una volta, ma come tenerli allineati ogni giorno senza creare doppioni.

## Il catalogo esterno è una sorgente, non il prodotto

Se si specchiano i cataloghi dei fornitori così come sono, il negozio eredita i loro problemi: titoli incoerenti, categorie che non esistono, lo stesso articolo presente due volte con nomi diversi. E a ogni sincronizzazione il disordine raddoppia.

La scelta di fondo del progetto è dichiarata fin dalla prima riga: il prodotto vero è il catalogo proprietario. Quello esterno è soltanto la materia prima.

## Importare, riconoscere, e ammettere quando non si capisce

Il motore scopre gli album della sorgente, ne ricava i prodotti ed evita di rielaborare ciò che non è cambiato. La prima esecuzione reale su un catalogo autorizzato, il 21 agosto 2026, ha prodotto 1.693 prodotti da 1.695 album in trenta minuti, senza errori.

La parte interessante è come è finita la classificazione: 111 prodotti hanno ricevuto una categoria, 1.582 sono rimasti in attesa di revisione. Non per un difetto della cascata di regole, ma per la forma dei dati — su quella sorgente il titolo dell'album è quasi sempre solo un prezzo e un codice interno, e il tipo di prodotto non compare. Dove compare, la regola scatta e classifica correttamente.

Un motore che avesse indovinato una categoria per tutti avrebbe prodotto un catalogo pieno di errori silenziosi. Lasciarli in attesa di revisione è la scelta che rende il dato utilizzabile.

## Il motore, pezzo per pezzo

- **Gestione delle sorgenti** — Fornitori autorizzati, credenziali e regole di inclusione ed esclusione per ciascuno.
- **Scoperta e importazione** — Individuazione degli album, creazione dei prodotti e riconoscimento di ciò che è già noto.
- **Classificazione a cascata** — Regole in ordine di affidabilità, con coda di revisione per i casi che non si decidono da soli.
- **Accessi e campi riservati** — Autenticazione con rotazione dei token, ruoli e campi modificabili solo dall'amministratore.

## Il motore sta nel backend, e ha le sue prove

Quasi duecento sorgenti Python compongono il backend: modello dati, migrazioni, autenticazione e il motore di importazione, con una cartella di prove automatiche accanto. Il frontend è separato, in TypeScript, con le proprie verifiche di percorso completo.

La scelta che regge tutto è la classificazione a cascata: una serie di regole in ordine di affidabilità, dove la prima che riconosce con certezza vince e, se nessuna riconosce, il prodotto finisce in revisione invece di ricevere una categoria a caso. È il motivo per cui alla prima esecuzione 1.582 prodotti sono rimasti in attesa: il motore ha ammesso di non sapere.

L'importazione procede a una richiesta al secondo — lenta di proposito. Un motore che scarica più in fretta è un motore che si fa bloccare dalla sorgente al secondo giro.

## Cosa dice la prima esecuzione vera

Le fondamenta del backend sono complete: modello dati, migrazioni, autenticazione con rotazione dei token, ruoli e protezione dei campi riservati. Il motore di importazione ha girato una volta contro un catalogo autorizzato reale e ha fatto quello che doveva — compreso dichiarare i 1.582 casi che nessuna regola poteva classificare con onestà.
