150 lines
4.4 KiB
Markdown
150 lines
4.4 KiB
Markdown
# 🗺️ Struttura Path del Sistema
|
|
|
|
## Riepilogo Configurazione Attuale
|
|
|
|
Il sistema Focolari Voting System utilizza una **struttura path separata** per frontend e API:
|
|
|
|
```
|
|
http://localhost:8000/
|
|
├── /badge ← Frontend React SPA
|
|
│ ├── / ← Pagina principale
|
|
│ ├── /debug ← Pagina diagnostica
|
|
│ └── /assets/* ← File statici (JS, CSS, immagini)
|
|
│
|
|
├── /api/* ← API REST
|
|
│ ├── /info-room ← Informazioni sala
|
|
│ ├── /login-validate ← Login validatore
|
|
│ ├── /anagrafica/{badge} ← Ricerca utente
|
|
│ └── /entry-request ← Registrazione ingresso
|
|
│
|
|
├── /docs ← Documentazione API (Swagger)
|
|
└── / ← Health check (solo se frontend non buildato)
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Vantaggi di questa Struttura
|
|
|
|
1. **Separazione chiara**: Frontend e API sono completamente isolati
|
|
2. **Flessibilità**: Puoi cambiare il path del frontend senza toccare le API
|
|
3. **Sicurezza**: Le API sono su un path fisso, facile da proteggere con firewall/proxy
|
|
4. **Debugging**: È chiaro se un errore viene dal frontend o dalle API
|
|
5. **Deployment**: Puoi servire frontend e API da server diversi in futuro
|
|
|
|
---
|
|
|
|
## 📁 Files Coinvolti
|
|
|
|
### Backend
|
|
|
|
**File: `backend-mock/main.py`**
|
|
- Gestisce le route del frontend su `/badge`
|
|
- Include il router API che gestisce `/api/*`
|
|
|
|
**File: `backend-mock/api/routes.py`**
|
|
- Definisce tutte le route API con prefisso `/api/*`
|
|
|
|
### Frontend
|
|
|
|
**File: `frontend/src/main.tsx`**
|
|
- Configura il router React con `basename="/badge"`
|
|
|
|
**File: `frontend/src/services/api.ts`**
|
|
- Tutte le chiamate API usano il prefisso `/api/*`
|
|
|
|
**File: `frontend/vite.config.ts`**
|
|
- Proxy per development: `/api` → `http://127.0.0.1:8000`
|
|
|
|
**File: `frontend/playwright.config.ts`**
|
|
- Test E2E configurati per `baseURL: http://localhost:8000/badge`
|
|
|
|
**File: `frontend/e2e/app.spec.ts`**
|
|
- Intercept delle chiamate API su `**/api/entry-request`
|
|
|
|
---
|
|
|
|
## 🔄 Flusso Richieste
|
|
|
|
### In Sviluppo (Vite Dev Server)
|
|
|
|
```
|
|
Browser → http://localhost:5173/
|
|
↓
|
|
Frontend React (Vite)
|
|
↓
|
|
API call to /api/info-room
|
|
↓
|
|
Vite Proxy: /api/* → http://127.0.0.1:8000/api/*
|
|
↓
|
|
Backend FastAPI
|
|
```
|
|
|
|
### In Produzione (Server Integrato)
|
|
|
|
```
|
|
Browser → http://localhost:8000/badge
|
|
↓
|
|
Backend FastAPI
|
|
├─→ /badge → Serve frontend statico
|
|
└─→ /api/* → Gestisce API REST
|
|
```
|
|
|
|
---
|
|
|
|
## 📋 Checklist Verifica
|
|
|
|
Per verificare che tutto funzioni correttamente:
|
|
|
|
```bash
|
|
# 1. Avvia il server
|
|
./dev.sh server
|
|
|
|
# 2. Testa il frontend
|
|
open http://localhost:8000/badge
|
|
|
|
# 3. Testa le API
|
|
curl http://localhost:8000/api/info-room
|
|
curl http://localhost:8000/api/anagrafica/0008988288
|
|
|
|
# 4. Verifica documentazione API
|
|
open http://localhost:8000/docs
|
|
|
|
# 5. Esegui i test E2E
|
|
./dev.sh test:e2e
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Come Modificare
|
|
|
|
Per modificare i path, consulta **`CHANGE_BASE_PATH.md`** che spiega:
|
|
|
|
- Come cambiare il path del frontend (es. `/badge` → `/votazioni`)
|
|
- Come cambiare il path delle API (es. `/api/*` → `/v1/*`)
|
|
- Quali file modificare per ogni cambiamento
|
|
- Checklist completa di test
|
|
|
|
---
|
|
|
|
## 📊 Tabella Riassuntiva
|
|
|
|
| Componente | Path | Gestito da | File Config |
|
|
|------------|------|------------|-------------|
|
|
| **Frontend principale** | `/badge` | Backend (serve static) | `backend-mock/main.py` |
|
|
| **Frontend debug** | `/badge/debug` | Backend (serve static) | `backend-mock/main.py` |
|
|
| **Frontend assets** | `/badge/assets/*` | Backend (StaticFiles) | `backend-mock/main.py` |
|
|
| **Frontend router** | `/badge` (basename) | React Router | `frontend/src/main.tsx` |
|
|
| **Frontend build** | `/badge/` (base) | Vite | `frontend/vite.config.ts` |
|
|
| **API info sala** | `/api/info-room` | Backend API | `backend-mock/api/routes.py` |
|
|
| **API login** | `/api/login-validate` | Backend API | `backend-mock/api/routes.py` |
|
|
| **API anagrafica** | `/api/anagrafica/{badge}` | Backend API | `backend-mock/api/routes.py` |
|
|
| **API ingresso** | `/api/entry-request` | Backend API | `backend-mock/api/routes.py` |
|
|
| **Proxy dev** | `/api` → `:8000` | Vite | `frontend/vite.config.ts` |
|
|
| **Test E2E baseURL** | `/badge` | Playwright | `frontend/playwright.config.ts` |
|
|
| **Test E2E health** | `/badge` (webServer.url) | Playwright | `frontend/playwright.config.ts` |
|
|
|
|
---
|
|
|
|
Documento creato: 2025-02-04
|
|
Ultima modifica: 2025-02-04
|