Files
diario_coversazioni/README.md
2026-04-05 14:55:13 +00:00

193 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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** (0100%) 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.