You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

11 KiB

Interfaccia Web di Amministrazione - Simple Mensa

Overview

L'interfaccia web di amministrazione è sviluppata con NiceGUI, un framework Python moderno che combina la semplicità di sviluppo backend con un'interfaccia utente reattiva e moderna. L'applicazione fornisce un pannello di controllo completo per la gestione del sistema di prenotazione mensa.

Architettura dell'Applicazione

Stack Tecnologico

  • Frontend Framework: NiceGUI 1.4+
  • Backend Integration: Integrazione diretta con FastAPI via HTTP client
  • Authentication: JWT token-based con provider esterno
  • Styling: Tailwind CSS + Quasar Components
  • Real-time Updates: WebSocket per aggiornamenti live
  • Charts & Analytics: Plotly.js integrato

Struttura del Progetto

webgui/
├── main.py                 # Punto di ingresso dell'applicazione NiceGUI
├── config.yaml            # Configurazione per la webgui
├── requirements.txt       # Dipendenze specifiche per la webgui
├── pages/                 # Pagine dell'interfaccia amministrativa
│   ├── __init__.py
│   ├── login.py           # Pagina di autenticazione
│   ├── dashboard.py       # Dashboard principale con KPI
│   ├── pietanze.py        # Gestione CRUD pietanze
│   ├── pasti.py           # Composizione e gestione menu giornalieri
│   ├── prenotazioni.py    # Monitoraggio e gestione prenotazioni
│   └── analytics.py       # Reports e statistiche
├── components/            # Componenti riutilizzabili
│   ├── __init__.py
│   ├── layout.py          # Layout principale e navigazione
│   ├── forms.py           # Form components personalizzati
│   ├── tables.py          # Tabelle con paginazione e filtri
│   ├── charts.py          # Grafici e visualizzazioni
│   └── modals.py          # Dialoghi e popup
├── services/              # Servizi per comunicazione con API
│   ├── __init__.py
│   ├── api_client.py      # Client HTTP per FastAPI
│   ├── auth_service.py    # Gestione autenticazione
│   └── data_service.py    # Servizi per manipolazione dati
├── utils/                 # Utilità e helper
│   ├── __init__.py
│   ├── formatters.py      # Formatters per date, numeri, etc.
│   └── validators.py      # Validatori lato client
└── static/                # File statici (CSS, JS, immagini)
    ├── styles.css
    └── logo.png

Funzionalità dell'Interfaccia

1. Dashboard Principale (pages/dashboard.py)

KPI e Metriche in Tempo Reale

  • Card con statistiche giornaliere (prenotazioni attive, pasti serviti, disponibilità)
  • Grafici trend settimanali/mensili delle prenotazioni
  • Indicatori di utilizzo capacità per turno
  • Alert per situazioni critiche (esaurimento posti, pietanze terminate)

Widget Informativi

  • Calendario con vista mensile delle prenotazioni
  • Lista prenotazioni recenti con stati in tempo reale
  • Notifiche e alert di sistema

2. Gestione Pietanze (pages/pietanze.py)

Interfaccia CRUD Completa

  • Tabella responsive con ricerca full-text e filtri per allergeni
  • Form di creazione/modifica con validazione client-side
  • Upload di immagini per le pietanze (futuro sviluppo)
  • Gestione allergeni con chip multiselect
  • Azioni bulk per operazioni multiple

Componenti Specifici

# Esempio struttura componente pietanze
class PietanzeManager:
    def __init__(self):
        self.search_filter = ""
        self.allergen_filter = []
        
    def render_pietanze_table(self):
        # Tabella con sorting, paginazione, ricerca
        pass
        
    def render_pietanza_form(self, pietanza=None):
        # Form responsive con validazione
        pass

3. Composizione Menu (pages/pasti.py)

Editor Menu Giornaliero

  • Calendario per selezione data
  • Drag & drop per composizione portate
  • Configurazione turni con slider per capacità
  • Anteprima menu con calcolo automatico disponibilità
  • Duplicazione menu da giorni precedenti

Gestione Turni Dinamica

  • Time picker per orari turni
  • Slider per impostazione capacità massima
  • Visualizzazione occupazione in tempo reale

4. Monitoraggio Prenotazioni (pages/prenotazioni.py)

Vista Operativa per il Servizio

  • Tabella prenotazioni filtrata per data/turno
  • Aggiornamento stati prenotazione con click
  • Scansione QR code per check-in rapido
  • Stampa liste per cucina e cassa

Funzionalità Avanzate

  • Ricerca prenotazioni per utente
  • Export CSV per reporting
  • Gestione cancellazioni e modifiche
  • Comunicazioni automatiche via email

5. Analytics e Reports (pages/analytics.py)

Dashboard Analitica

  • Grafici utilizzo pietanze e preferenze utenti
  • Report sprechi e ottimizzazione menù
  • Analisi pattern prenotazioni
  • Forecast domanda per pianificazione

Export e Reportistica

  • Report PDF configurabili
  • Export dati in formati multipli
  • Grafici interattivi con drill-down

Componenti Tecnici

Layout e Navigazione (components/layout.py)

class AdminLayout:
    def __init__(self):
        self.sidebar_open = True
        
    def render_header(self):
        # Header con user info, logout, notifiche
        pass
        
    def render_sidebar(self):
        # Menu laterale con sezioni collassabili
        pass
        
    def render_main_content(self):
        # Area principale responsiva
        pass

Componenti Form (components/forms.py)

Form Builder Dinamico

  • Generazione automatica form da modelli Pydantic
  • Validazione real-time con feedback visuale
  • Upload file con progress bar
  • Date/time picker localizzati
  • Multiselect con ricerca

Tabelle Avanzate (components/tables.py)

DataTable Component

  • Server-side pagination per performance
  • Sorting multi-colonna
  • Filtri avanzati per colonna
  • Export integrato
  • Azioni batch selettive

Integrazione API (services/api_client.py)

HTTP Client Ottimizzato

class APIClient:
    def __init__(self, base_url: str, auth_token: str):
        self.base_url = base_url
        self.headers = {"Authorization": f"Bearer {auth_token}"}
        
    async def get_pietanze(self, filters: dict = None):
        # GET /api/v1/pietanze con filtri
        pass
        
    async def create_pasto(self, pasto_data: dict):
        # POST /api/v1/pasti
        pass

Flussi Operativi dell'Interfaccia

Flusso Creazione Menu Giornaliero

  1. Selezione Data: Calendario per scelta giorno
  2. Composizione Portate: Drag & drop pietanze nelle categorie
  3. Impostazione Turni: Time picker + capacity slider
  4. Anteprima e Validazione: Controllo disponibilità e conflitti
  5. Attivazione: Toggle per abilitare prenotazioni

Flusso Gestione Servizio

  1. Vista Prenotazioni Turno: Filtro automatico per turno corrente
  2. Check-in Utenti: Click su riga o scansione QR
  3. Aggiornamento Stati: Transizioni stato con validazione
  4. Monitoraggio Disponibilità: Aggiornamenti real-time

Flusso Amministrazione Pietanze

  1. Vista Lista: Tabella con ricerca e filtri
  2. Creazione/Modifica: Form modale con validazione
  3. Gestione Allergeni: Chip selector con autocomplete
  4. Operazioni Bulk: Selezione multipla per azioni batch

Caratteristiche UX/UI

Design System

Palette Colori

  • Primary: Verde accogliente per azioni positive
  • Secondary: Arancione per elementi di attenzione
  • Neutral: Grigi per backgrounds e testi
  • Status Colors: Semantici per stati (rosso errore, verde successo)

Typography

  • Font system: Inter per leggibilità ottimale
  • Hierarchy: H1-H6 ben definiti
  • Body text: 16px base per accessibilità

Spacing & Layout

  • Grid system 12 colonne responsive
  • Breakpoints standard (mobile, tablet, desktop)
  • Spacing scale basato su multipli di 8px

Responsività

Mobile-First Design

  • Layout collassabile per mobile
  • Touch-friendly button sizing
  • Swipe gestures per tabelle
  • Bottom navigation su mobile

Progressive Enhancement

  • Funzionalità base su tutti i device
  • Funzionalità avanzate su desktop
  • Graceful degradation per browser legacy

Accessibilità

WCAG 2.1 AA Compliance

  • Contrasto colori adeguato
  • Navigazione da tastiera completa
  • Screen reader friendly
  • Focus indicators chiari
  • Alt text per immagini

Performance e Ottimizzazioni

Lazy Loading

  • Caricamento componenti on-demand
  • Paginazione server-side per tabelle grandi
  • Immagini lazy-loaded

Caching Strategy

  • Cache client per dati statici
  • Invalidazione intelligente
  • Prefetch per navigazione anticipata

Real-time Updates

  • WebSocket per notifiche push
  • Server-sent events per updates dashboard
  • Optimistic UI per azioni immediate

Sicurezza

Authentication Flow

  1. Login: Redirect a provider esterno (Azure/Keycloak)
  2. Token Management: Storage sicuro e refresh automatico
  3. Authorization: Controllo ruoli per ogni sezione
  4. Logout: Pulizia completa sessione

Data Protection

  • Sanitizzazione input utente
  • Validazione server-side sempre presente
  • HTTPS only per comunicazioni
  • CSP headers per XSS protection

Deployment e Configurazione

Development Setup

cd webgui
pip install -r requirements.txt
cp config.yaml.example config.yaml
# Configura URL API e credenziali
python main.py

Production Deployment

  • Container Docker con NiceGUI
  • Reverse proxy con SSL termination
  • Health checks e monitoring
  • Backup automatici configurazione

Environment Variables

# config.yaml example
api:
  base_url: "http://localhost:8000"
  timeout: 30

auth:
  provider_url: "https://login.microsoftonline.com/..."
  client_id: "your-client-id"
  
app:
  title: "Simple Mensa Admin"
  debug: false
  port: 8080

Estensibilità Futura

Moduli Aggiuntivi

  • Gestione Utenti: CRUD utenti con ruoli
  • Inventory Management: Controllo ingredienti e scorte
  • Financial Reports: Controllo costi e ricavi
  • Mobile App: Companion app per servizio cucina

Integrazioni

  • ERP Integration: Sync con sistemi aziendali
  • Payment Gateway: Pagamenti online
  • SMS/Push Notifications: Comunicazioni real-time
  • IoT Integration: Sensori per monitoraggio automatico

Testing Strategy

Unit Testing

  • Test componenti NiceGUI
  • Mock API calls
  • Validation logic testing

Integration Testing

  • End-to-end user workflows
  • API integration testing
  • Authentication flow testing

Performance Testing

  • Load testing per concorrenza
  • Memory usage profiling
  • Response time benchmarks

Questa architettura garantisce un'interfaccia amministrativa moderna, scalabile e user-friendly, perfettamente integrata con l'API FastAPI esistente e pronta per evoluzioni future.