193 lines
6.6 KiB
Markdown
193 lines
6.6 KiB
Markdown
# Diario Conversazioni — Olimpic Progetto Nastri
|
||
|
||
Applicazione web interna per il team **Olimpic Progetto Nastri**: un diario digitale per tracciare conversazioni, obiettivi, documenti e attività del gruppo di lavoro.
|
||
|
||
**Live:** [https://diario.olimpic.click](https://diario.olimpic.click)
|
||
|
||
---
|
||
|
||
## Funzionalità principali
|
||
|
||
### 📋 Dashboard
|
||
Pagina principale con timeline unificata degli ultimi eventi (conversazioni, aggiornamenti, documenti). Nella sidebar laterale:
|
||
- **Obiettivi in corso** con barra di avanzamento e countdown alla scadenza
|
||
- **Prossime scadenze** (prossimi 30 giorni)
|
||
- **Obiettivi scaduti** evidenziati in rosso
|
||
|
||
### 💬 Conversazioni
|
||
- Crea e modifica verbali/appunti di riunioni e conversazioni
|
||
- Assegna **partecipanti** tra gli utenti del sistema
|
||
- Aggiungi **commenti** sotto ogni conversazione (modificabili/eliminabili dall'autore)
|
||
- Allega **documenti PDF** direttamente a una conversazione
|
||
|
||
### 🎯 Obiettivi
|
||
- Obiettivi **collettivi** o **individuali**, assegnati a uno o più utenti
|
||
- Stato: Aperto → In corso → Completato / Sospeso
|
||
- **Barra di avanzamento** (0–100%) aggiornabile con slider AJAX
|
||
- **Countdown giorni rimanenti** alla scadenza con badge colorati:
|
||
- 🔴 Rosso = scaduto o ≤ 3 giorni
|
||
- 🟡 Giallo = ≤ 7 giorni
|
||
- 🟢 Verde = più di 7 giorni
|
||
- **Aggiornamenti**: note di avanzamento sotto ogni obiettivo (modificabili/eliminabili dall'autore)
|
||
|
||
### 📅 Agenda
|
||
Vista cronologica che raccoglie:
|
||
- **Prossimi eventi**: scadenze obiettivi e conversazioni future, con badge countdown
|
||
- **Ultimi 30 giorni**: eventi passati con evidenziazione scaduti
|
||
|
||
### 📄 Documenti
|
||
- Upload di file **PDF** (max 10 MB)
|
||
- Collegabili a conversazioni e/o obiettivi
|
||
- Visualizzazione e download diretto
|
||
|
||
### 👥 Persone
|
||
- Elenco degli utenti del sistema con statistiche:
|
||
- Numero di conversazioni a cui hanno partecipato
|
||
- Numero di obiettivi assegnati
|
||
- Profilo dettaglio con le attività recenti dell'utente
|
||
|
||
### 🔍 Ricerca
|
||
- **Ricerca live** (HTMX) che cerca contemporaneamente in:
|
||
- Titoli e contenuti delle conversazioni
|
||
- Titoli e descrizioni degli obiettivi
|
||
- Titoli e descrizioni dei documenti
|
||
- Risultati aggiornati in tempo reale durante la digitazione
|
||
|
||
### 🔐 Permessi
|
||
- Accesso riservato a utenti autenticati (login required su tutte le pagine)
|
||
- Solo l'**autore** di un contenuto (o un superuser) può modificarlo/eliminarlo
|
||
- Gli altri utenti vedono il contenuto in sola lettura
|
||
|
||
---
|
||
|
||
## Stack tecnologico
|
||
|
||
| Componente | Tecnologia |
|
||
|----------------|-----------------------------------|
|
||
| Backend | Django 5.2, Python 3.10 |
|
||
| Database | PostgreSQL 14 |
|
||
| Frontend | Bootstrap 5.3.3, Bootstrap Icons |
|
||
| Interattività | HTMX 2.0.4, django-htmx |
|
||
| Web server | Nginx (reverse proxy) + Gunicorn |
|
||
| SSL | Let's Encrypt (Certbot) |
|
||
|
||
---
|
||
|
||
## Struttura del progetto
|
||
|
||
```
|
||
olimpic_nastri/
|
||
├── diario/ # App Django principale
|
||
│ ├── models.py # Conversazione, Obiettivo, Aggiornamento, Commento, Documento
|
||
│ ├── views.py # Tutte le view (dashboard, CRUD, agenda, ricerca)
|
||
│ ├── forms.py # Form per ogni modello
|
||
│ ├── urls.py # URL routing dell'app
|
||
│ ├── admin.py # Configurazione admin Django
|
||
│ ├── templatetags/
|
||
│ │ └── custom_filters.py # Filtro |abs_val per valori assoluti
|
||
│ └── migrations/ # Migrazioni database
|
||
├── olimpic_nastri/ # Configurazione progetto Django
|
||
│ ├── settings.py
|
||
│ ├── urls.py
|
||
│ └── wsgi.py
|
||
├── templates/diario/ # Template HTML
|
||
│ ├── base.html # Layout base (navbar, sidebar, toast)
|
||
│ ├── dashboard.html # Homepage con timeline + sidebar riepilogo
|
||
│ ├── agenda.html # Vista agenda eventi
|
||
│ ├── login.html # Pagina di login
|
||
│ ├── ricerca.html # Ricerca live
|
||
│ ├── conversazioni/ # CRUD conversazioni
|
||
│ ├── obiettivi/ # CRUD obiettivi
|
||
│ ├── documenti/ # CRUD documenti
|
||
│ └── persone/ # Lista e dettaglio persone
|
||
├── static/
|
||
│ ├── css/style.css # Stili personalizzati (countdown, agenda, badge)
|
||
│ └── js/app.js # JS (CSRF, toast, slider, ricerca live)
|
||
├── requirements.txt # Dipendenze Python
|
||
├── manage.py
|
||
├── olimpic-nastri-gunicorn.service # Unit file systemd per Gunicorn
|
||
└── diario.olimpic.click.nginx # Configurazione Nginx
|
||
```
|
||
|
||
---
|
||
|
||
## Installazione locale
|
||
|
||
### Prerequisiti
|
||
- Python 3.10+
|
||
- PostgreSQL 14+
|
||
|
||
### Setup
|
||
|
||
```bash
|
||
# Clona il repository
|
||
git clone https://git.automationdev.info/automationkriz/diario_coversazioni.git
|
||
cd diario_coversazioni
|
||
|
||
# Crea e attiva il virtualenv
|
||
python3 -m venv nastrivenv
|
||
source nastrivenv/bin/activate
|
||
|
||
# Installa le dipendenze
|
||
pip install -r requirements.txt
|
||
|
||
# Configura il database PostgreSQL
|
||
sudo -u postgres psql -c "CREATE DATABASE olimpic_nastri_db;"
|
||
sudo -u postgres psql -c "CREATE USER olimpic_nastri WITH PASSWORD 'la-tua-password';"
|
||
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE olimpic_nastri_db TO olimpic_nastri;"
|
||
|
||
# Imposta la variabile d'ambiente per la password del DB
|
||
export OLIMPIC_DB_PASSWORD='la-tua-password'
|
||
|
||
# Applica le migrazioni
|
||
python manage.py migrate
|
||
|
||
# Crea un superuser
|
||
python manage.py createsuperuser
|
||
|
||
# Avvia il server di sviluppo
|
||
python manage.py runserver
|
||
```
|
||
|
||
L'applicazione sarà disponibile su `http://localhost:8000`.
|
||
|
||
---
|
||
|
||
## Deploy in produzione
|
||
|
||
Il sito è deployato con **Nginx + Gunicorn** su server Linux:
|
||
|
||
```bash
|
||
# Raccogliere i file statici
|
||
python manage.py collectstatic --noinput
|
||
|
||
# Riavviare Gunicorn
|
||
sudo systemctl restart olimpic-nastri-gunicorn.service
|
||
```
|
||
|
||
I file di configurazione per il deploy sono inclusi nel repository:
|
||
- `olimpic-nastri-gunicorn.service` — Unit systemd per Gunicorn
|
||
- `diario.olimpic.click.nginx` — Virtual host Nginx con SSL
|
||
|
||
---
|
||
|
||
## Modelli dati
|
||
|
||
```
|
||
Conversazione ──┬── CommentoConversazione
|
||
└── Documento (opzionale)
|
||
|
||
Obiettivo ──────┬── AggiornamentoObiettivo
|
||
└── Documento (opzionale)
|
||
|
||
User (Django) ──┬── partecipa a Conversazioni
|
||
├── assegnato a Obiettivi
|
||
└── autore di Commenti / Aggiornamenti / Documenti
|
||
```
|
||
|
||
---
|
||
|
||
## Licenza
|
||
|
||
Progetto interno — Olimpic Progetto Nastri. Tutti i diritti riservati.
|