# 18 — API: configuratore a regole Leggi `CLAUDE.md`. ## Obiettivo Motore di raccomandazione deterministico (nessuna AI) che genera una `quote_request`. ## Cosa fare - Definizione del wizard in un file di configurazione versionato (`src/configurator/definition.ts` o JSON): step, domande, opzioni, condizioni di visibilità (branching). Percorsi iniziali per esigenza: "acqua calcarea", "bolletta alta / fotovoltaico", "riscaldamento / pompa di calore", "azienda". - Regole in file separato: soglie (es. consumo annuo kWh → taglia impianto kW; persone in casa + durezza acqua → taglia addolcitore), produttività per provincia/zona (kWh/kWp annui, tabella modificabile), prezzo medio energia, stima costo impianto. - Output: soluzione consigliata, taglia, prodotti suggeriti (handle Medusa), risparmio annuo stimato, tempo di rientro, nota incentivi (testo statico), avvertenza "stima indicativa". - Route: `GET /configurator/definition`, `POST /configurator/evaluate` (calcola senza salvare), `POST /configurator/submit` (salva `quote_requests` con input/output + contatti, consenso privacy obbligatorio, email interna all'admin e conferma all'utente). - Funzioni di calcolo pure (input → output), senza accesso al DB. ## Criteri di accettazione - Test unitari sulle funzioni di calcolo con casi tabellari (almeno 3 per percorso). - Risposte incoerenti o mancanti rifiutate con errore di validazione. - `submit` senza consenso privacy → 400. - Cambiare una soglia richiede solo di modificare il file di regole. - `CLAUDE.md` aggiornato: dove stanno definizione e regole e come modificarle.