Skip to content

Repository files navigation

FIXIT - Sistema di Ticketing Aziendale

Sistema MVP per la gestione di ticket aziendali con focus su interventi tecnici e manutenzione mezzi.

πŸš€ Caratteristiche

  • Doppio tipo di ticket: Intervento Mezzi e Intervento Generico
  • Interfaccia pubblica per la creazione di segnalazioni
  • Back-office protetto per la gestione amministrativa
  • Sistema di prioritΓ  e assegnazione ticket
  • Upload e visualizzazione immagini
  • Filtri avanzati per ricerca ticket
  • Tracciamento completo con timestamp automatici

πŸ“‹ Requisiti

  • Python 3.8 o superiore
  • pip (Python package manager)

πŸ”§ Installazione

1. Clona o scarica il progetto

cd "c:\Users\denitro\OneDrive - DFDS\Desktop\vsCode\FIXIT"

2. Crea un ambiente virtuale (opzionale ma consigliato)

python -m venv venv
.\venv\Scripts\Activate.ps1

3. Installa le dipendenze

pip install -r requirements.txt

🎯 Avvio dell'Applicazione

Primo avvio (inizializzazione database)

python app.py

Al primo avvio, l'applicazione:

  • CreerΓ  automaticamente il database SQLite (tickets.db)
  • CreerΓ  la cartella per gli upload (static/uploads)
  • CreerΓ  l'utente admin predefinito:
    • Username: admin
    • Password: admin123

Avvii successivi

python app.py

L'applicazione sarΓ  disponibile all'indirizzo:

πŸ‘₯ Accesso

Area Pubblica

Accessibile a tutti senza autenticazione:

Area Admin

Richiede autenticazione:

πŸ“ Struttura del Progetto

FIXIT/
β”‚
β”œβ”€β”€ app.py                      # Applicazione Flask principale
β”œβ”€β”€ requirements.txt            # Dipendenze Python
β”œβ”€β”€ README.md                   # Questo file
β”œβ”€β”€ tickets.db                  # Database SQLite (creato al primo avvio)
β”‚
β”œβ”€β”€ templates/                  # Template Jinja2
β”‚   β”œβ”€β”€ base.html              # Template base
β”‚   β”œβ”€β”€ index.html             # Homepage pubblica
β”‚   β”œβ”€β”€ form_mezzi.html        # Form intervento mezzi
β”‚   β”œβ”€β”€ form_tecnico.html      # Form intervento generico
β”‚   β”œβ”€β”€ login.html             # Login admin
β”‚   β”œβ”€β”€ dashboard.html         # Dashboard admin
β”‚   └── ticket_detail.html     # Dettaglio ticket
β”‚
└── static/                     # File statici
    └── uploads/               # Immagini caricate (creata automaticamente)

🎨 Funzionalità

Area Pubblica

1. Homepage

  • Scelta del tipo di segnalazione
  • Design pulito e intuitivo

2. Form Intervento Mezzi

  • Raccolta dati veicolo
  • Selezione categoria anomalia predefinita
  • Descrizione dettagliata problema

3. Form Intervento Generico

  • Informazioni richiedente e reparto
  • Selezione prioritΓ  (Bassa/Media/Alta)
  • Upload foto opzionale

Area Admin

1. Dashboard

  • Visualizzazione tabellare di tutti i ticket
  • Filtri:
    • Ricerca per keyword (ID, nome, descrizione)
    • Filtro per status
    • Filtro per assegnatario
  • Badge colorati per status e prioritΓ 
  • Indicatore presenza foto

2. Dettaglio Ticket

  • Visualizzazione completa informazioni
  • Gestione Status:
    • Cambio stato (Nuovo β†’ In Lavorazione β†’ Risolto)
    • Timestamp automatici per ogni transizione
  • Assegnazione:
    • Assegna/riassegna ticket agli admin
  • Eliminazione:
    • Rimozione permanente ticket e foto associate

πŸ—„οΈ Schema Database

Tabella users

  • id: Primary Key
  • username: String (unique)
  • password_hash: String (hashed)

Tabella tickets

  • id: Primary Key
  • ticket_type: MEZZO | TECNICO
  • status: NUOVO | IN_LAVORAZIONE | RISOLTO
  • created_at, started_at, closed_at: Timestamps
  • requester_name, description: Info base
  • image_filename: Nome file immagine
  • assigned_to_id: FK verso users

Campi specifici MEZZO:

  • vehicle_type, vehicle_number, anomaly_category

Campi specifici TECNICO:

  • department, title, priority

πŸ”’ Sicurezza

  • Password hashate con Werkzeug
  • Sessioni protette con SECRET_KEY
  • Validazione file upload (solo jpg, jpeg, png)
  • Limite dimensione upload: 16MB
  • Decoratore @login_required per rotte admin

πŸ› οΈ Personalizzazione

Cambiare la porta

Nel file app.py, modifica l'ultima riga:

app.run(debug=True, host='0.0.0.0', port=5000)  # Cambia 5000 con la porta desiderata

Gestire gli utenti admin

La gestione degli utenti Γ¨ disponibile tramite l'interfaccia web accessibile agli utenti con permessi di superuser.

Accedi come superuser (admin/admin123 di default) e vai su Utenze nella barra di navigazione per:

  • Creare nuovi utenti: Aggiungi username, password e assegna permessi superuser
  • Eliminare utenti: Rimuovi utenti esistenti (i ticket assegnati vengono liberati)
  • Reimpostare password: Modifica la password di qualsiasi utente

Popolare il database con dati di test

Per testare l'applicazione con dati di esempio:

python seed_data.py

Questo script crea:

  • 3 utenti di test: mario.rossi, luca.bianchi, giulia.verdi (password: password123)
  • 10 ticket di esempio: mix di interventi mezzi e tecnici con vari stati

Lo script Γ¨ idempotente e puΓ² essere eseguito piΓΉ volte senza creare duplicati.

Modificare categorie anomalie

Nel file app.py, nella funzione new_mezzi(), modifica la lista anomaly_categories.

πŸ“ Note Tecniche

  • Framework: Flask 3.0
  • ORM: SQLAlchemy
  • Database: SQLite (file singolo, facile da gestire)
  • Frontend: Bootstrap 5 (via CDN)
  • Template Engine: Jinja2
  • File Storage: Filesystem locale

πŸ› Troubleshooting

Errore "Port already in use"

Un'altra applicazione sta usando la porta 5000. Cambia la porta in app.py o termina l'altra applicazione.

Database locked

Chiudi tutte le connessioni al database e riavvia l'applicazione.

Immagini non visualizzate

Verifica che la cartella static/uploads esista e abbia i permessi corretti.

🌐 Deploy in Produzione

Per il deploy su AWS Lightsail (o altro server Linux) con Gunicorn, systemd e cron, consulta la guida completa:

πŸ‘‰ DEPLOY.md β€” Guida al deploy in produzione

La guida include:

  • Configurazione Nginx (reverse proxy) + Gunicorn (server WSGI)
  • Servizio systemd per avvio automatico e auto-restart
  • Cron job per health check ogni 5 minuti
  • Istruzioni per aggiornamento e troubleshooting
  • Percorso upgrade a HTTPS (Let's Encrypt)

πŸ“§ Supporto

Per problemi o domande, contatta il team di sviluppo.


Versione: 1.0.0
Data: Gennaio 2026
Sviluppato con: Python + Flask + Bootstrap 5

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages