Tenere allineato un altro sistema
Caricamento iniziale completo, poi sincronizzazione incrementale.
1. Il caricamento iniziale
La prima corsa scarica tutto, pagina per pagina, con il cursore:
dopo = 0
finché altri:
GET /api/v1/documenti-vendita?limite=100&dopo={dopo}
salva(documenti); dopo = cursore
Per le quantità esiste la disponibilità in blocco: GET /disponibilita?limite=500 scorre l'intero catalogo in pagine fino a 500 righe.
2. Le corse successive
Si conserva l'ultimo cursore di ogni risorsa e si riparte da lì:
GET /api/v1/movimenti?dopo=901240&limite=100
GET /api/v1/documenti-vendita?dopo=88210&limite=100
Le righe nuove sono ciò che è avvenuto dall'ultima corsa: sui movimenti il campo origine indica il canale di scrittura (vendita, arrivo, correzione…), e i saldi tornano perché l'estratto è completo.
3. Indicazioni operative
- Cursore, non date: il cursore è esatto e a basso costo; i filtri sul periodo servono alle interrogazioni una tantum.
- Un 422 non si ignora: se un filtro risponde
filtro_non_valido, la corsa va interrotta — ripetere la richiesta senza filtro scambierebbe l'intero archivio per il delta. - 429: attendere
Retry-Aftere riprendere. Alla frequenza di regime un catalogo da 100.000 righe si scarica in pochi minuti. - I totali dei documenti in elenco sono quelli registrati sul documento: la stessa cifra degli elenchi del gestionale.
