Files
iti-technology/prompts/21-api-contatti-showroom-consensi.md
Lorenzo SanesiandClaude Opus 5.5 b83ce039fb
Deploy stack su Proxmox / deploy (push) Failing after 3s
Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
Monorepo npm con apps/public (Angular SSR), apps/private (Angular SPA),
apps/api (Fastify), packages/shared e packages/styles; Medusa 2.21 in medusa/;
infrastruttura Docker (Postgres PostGIS+pgvector, Redis, Caddy, backup) e
workflow Gitea Actions per il deploy via SSH a ogni push su master.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jQyT6dR9czzGwqb7FkG6u
2026-10-20 09:30:48 +02:00

20 lines
1.1 KiB
Markdown

# 21 — API: contatti, showroom, consensi
Leggi `CLAUDE.md`.
## Obiettivo
Form pubblici e registro consensi GDPR.
## Cosa fare
- `POST /contact` → salva `contact_requests`, email all'admin. Protezione anti-spam senza servizi terzi: honeypot + tempo minimo di compilazione + rate limit per IP.
- `GET /showroom/slots` (slot disponibili da configurazione: giorni/orari di apertura, durata visita, capienza) e `POST /showroom/bookings` (verifica disponibilità, email di conferma). Admin: elenco e cambio stato prenotazioni.
- Consensi: ogni form con dati personali richiede consenso privacy; consenso marketing/newsletter separato e facoltativo. Salvati in `consents` con versione del testo informativo e timestamp.
- `GET /me/consents` e revoca consenso marketing.
- `POST /me/delete-account` (richiesta cancellazione: disabilita l'account e notifica l'admin; la cancellazione effettiva resta manuale nell'MVP).
## Criteri di accettazione
- Form senza consenso privacy → 400.
- Due prenotazioni sullo stesso slot oltre la capienza → la seconda rifiutata.
- Honeypot compilato → richiesta scartata silenziosamente (200, nulla salvato).
- `CLAUDE.md` aggiornato.