# 20 — API: installatori e PostGIS Leggi `CLAUDE.md`. ## Obiettivo Profilo installatore, approvazione e ricerca per zona. ## Cosa fare - Installatore: `GET/PUT /installer/profile` (indirizzo, coordinate, raggio di servizio, certificazioni). Geocoding: per ora l'utente inserisce l'indirizzo e le coordinate arrivano da un selettore su mappa nel frontend (niente servizio di geocoding a pagamento); valida lat/lng. - Admin: `GET /admin/installers?status=`, `POST /admin/installers/:id/approve` (cambia ruolo/stato, chiama `syncInstallerGroup` per il customer group Medusa, email di conferma), `POST /admin/installers/:id/reject`. - Admin: `GET /admin/installers/nearby?lat=&lng=` → installatori approvati il cui raggio di servizio copre il punto, ordinati per distanza (`ST_DWithin` + `ST_Distance` su geography). - Utility per trovare la provincia di una `quote_request` → installatori vicini (verrà usata dall'admin per assegnare lavori). ## Criteri di accettazione - Test con 3 installatori a distanze diverse: la query restituisce solo quelli entro raggio, in ordine di distanza. - Un installatore `pending` non accede ai documenti `installer` né ai prezzi riservati; dopo l'approvazione sì. - `CLAUDE.md` aggiornato.