# Integrazione App Esistenti

## Principio guida

Le due legacy principali del repository non sono state riscritte nel core:

- `PRENOTAZIONI_IA`
- `MENU2.0`

L'approccio adottato e:

- preservare il codice sorgente originale
- introdurre integrazioni solo dove servono davvero
- centralizzare in `backend-hub` auth, tenancy e configurazioni condivise
- evitare di trasformare le legacy in pseudo-microfrontend fragili

## Prenotazioni

### Sorgente preservata

- `PRENOTAZIONI_IA`

### Stack reale

- frontend `Next.js 14`
- backend `FastAPI + SQLAlchemy`
- database `PostgreSQL`

### Integrazione nel workspace

- wrapper in `apps/prenotazioni-legacy`
- servizi root: `prenotazioni-db`, `prenotazioni-backend`, `prenotazioni-frontend`
- apertura dal portale tramite sessione del gestionale
- backend legacy tenant-aware tramite `backend-hub /tenants/context`

### Cosa e stato aggiunto senza rifattorizzare il dominio

- sync del contesto portale tramite `POST /portal-context/sync`
- risoluzione del venue corrente a partire dal token del gestionale
- vincolo del venue attivo su `booking-settings`, `reservations`, `rooms`, `tables` e flussi WhatsApp
- prompt WhatsApp per prenotazioni salvato per venue in `venue_booking_settings.whatsapp_assistant_prompt`

### Cosa non va fatto

- non trattare `PRENOTAZIONI_IA` come base di un refactor casuale
- non spostare la business logic nel `portal`
- non trasformare il canale WhatsApp in un assistente menu o concierge generico

## Menu

### Sorgente preservata

- `MENU2.0`

### Stack reale

- HTML
- CSS
- JavaScript vanilla

### Integrazione nel workspace

- wrapper in `apps/menu-legacy`
- servizio root `menu-legacy`
- apertura dal portale con `session` e parametro `api`
- configurazione tenant del menu esposta dal `backend-hub`

### Cosa e stato centralizzato

- impostazioni tenant del menu in `backend-hub`
- composizione del prompt finale lato server
- caricamento e analisi di file del locale per costruire contesto menu

### Cosa resta volutamente legacy

- UI e logica principale di `MENU2.0`
- modalita standalone pubblica quando il modulo viene aperto fuori dal portale

## Tipo di integrazione adottato

Le integrazioni introdotte finora riguardano soprattutto:

- wrapper Docker
- compose root
- propagazione della sessione del gestionale
- configurazioni AI centralizzate
- sincronizzazione tenant-aware verso le legacy

Non e stata introdotta:

- fusione di codice tra portale e legacy
- migrazione a microfrontend
- riscrittura completa dei domini legacy

## Strategia di evoluzione

Passi sensati nel medio periodo:

- consolidare in `backend-hub` i soli contratti condivisi utili
- mantenere il frontend delle legacy stabile finche non esiste un sostituto credibile
- spostare gradualmente tenancy, prompt e policy cross-modulo verso servizi comuni
- valutare un assorbimento dei domini legacy solo quando il beneficio supera chiaramente il rischio
