# 19 — API: preventivi e ticket Leggi `CLAUDE.md`. ## Obiettivo Gestione richieste preventivo, preventivi e assistenza. ## Cosa fare - Cliente (autenticato): `GET /me/quotes`, `GET /me/quotes/:id`, `POST /me/quotes/:id/accept`, `POST /me/quotes/:id/reject`; `GET /me/orders` (da Medusa tramite `/internal/customers/:id/orders`); `GET/POST /me/tickets`, `GET /me/tickets/:id`, `POST /me/tickets/:id/messages`. - Admin: elenco/filtri `quote_requests` con cambio stato; creazione `quotes` da una richiesta (numero progressivo per anno, es. `2026-0001`), allegato PDF tramite `documents`, invio al cliente (email); gestione ticket (stato, priorità, risposta). - Un utente vede solo le proprie risorse (controllo ownership in ogni route). - Quando un utente si registra con un'email che ha `quote_requests` anonime, queste vengono collegate al suo account. ## Criteri di accettazione - Test: un cliente non può leggere preventivi/ticket di un altro (404). - Numerazione preventivi progressiva senza duplicati anche con richieste concorrenti. - Risposta admin a un ticket invia email al cliente. - `CLAUDE.md` aggiornato.