L'admin deve poter vedere i bandi di gara popolati automaticamente in AT
## User stories
1. Come **admin** voglio pubblicare automaticamente i dati dei CIG sul sito del Comune in Amministrazione Trasparente in modo da **ridurre attività manuali, evitare errori e garantire allineamento con BDNCP ANAC**
2. Come **admin** voglio aggiornare un singolo bando in tempo reale alla ricezione di un evento in modo da **mantenere il sito sincronizzato senza eseguire batch completi**
---
## Criteri di accettazione
* [ ] È disponibile un flow batch (`flow_anac_to_at`) che:
* accetta: codice fiscale SA, lookback_hours, page_size, max_pages, credenziali sito
* recupera i bandi da ANAC Superset (slice 433) con paginazione e filtro temporale
* gestisce timeout ANAC restituendo dati parziali senza interrompersi
* continua il processamento anche in caso di errore su singolo CIG
* [ ] È disponibile un flow event-driven (`flow_cig_event_to_at`) che:
* accetta eventi con `codice_identificativo_gara`
* aggiorna il singolo record sul sito
* [ ] Il recupero dettaglio CIG:
* usa mosparo come fonte primaria
* fallback su getSmartCig
* arricchisce con OCDS (cpv_link, aggiudicatari) quando disponibile
* [ ] La normalizzazione:
* produce un JSON indipendente dalla fonte
* converte il titolo in sentence case tramite AI (con fallback su originale)
* [ ] La pubblicazione:
* esegue upsert (GET → POST/PATCH)
* include campi obbligatori: codice_identificativo_gara, oggetto, anno, published, location
* include campi opzionali solo se disponibili
* garantisce correttezza di:
* cpv_link (solo da OCDS)
* location verso portale ANAC
* serializzazione `award_value.date` = "N/A" se null
* autenticazione configurabile
* [ ] È disponibile un’app di preview (`app_preview_cig`) che:
* consente test su singolo CIG senza pubblicazione
* mostra confronto dati normalizzati vs payload finale
* permette configurazione normalizzazione AI
---
## Casi di test
* [ ] ~~Eseguire `flow_anac_to_at` con:~~
* ~~SA: 00230610503~~
* ~~lookback_hours=8760~~
* ~~max_pages=1 Verificare presenza e correttezza dati su Amministrazione Trasparente~~
* [ ] ~~Verificare corretta valorizzazione di:~~
* ~~award_value (importo, data, criterio)~~
* ~~award_winners (denominazione, codice fiscale)~~
* [ ] ~~Verificare conversione titolo da ALL CAPS a sentence case~~
* [ ] Come admin inserire [qui](https://arcopnrr.opencityitalia.it/content/edit/17836/1) il bando con CIG **BB0D47BCFE (inserire i dati minimi indispensabili)**
* [ ] Come admin, dopo aver pubblicato il bando, verificare che, dopo due minuti, se si ricarica la pagina, si trova il bando arricchito con il titolo, lo stato, l'esito, la tipologia del contratto, la data di pubblicazione, il tipo di affidamento, l'importo complessivo, i dati dell'aggiudicazione (valore e denominazione) e il bottone per accedere al bando su BDNCP
---
## Dettagli
* [ ] Implementazione flow Windmill multi-step (batch + event-driven)
* [ ] Integrazione ANAC (Superset + mosparo + getSmartCig)
* [ ] Integrazione OCDS per arricchimento dati
* [ ] Normalizzazione dati unificata
* [ ] Integrazione AI per normalizzazione titolo (Gemini)
* [ ] Implementazione logica upsert verso sito
* [ ] Gestione errori e fallback resiliente
* [ ] Sviluppo app di preview
* [ ] Configurazione autenticazione e variabili ambiente
* [ ] Gestione workaround bug server su award_value / award_winners
issue