Files
PecHub/GapAnalysis.md
T
2026-03-25 18:39:50 +01:00

148 lines
8.1 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.
Report Gap Analysis PEChub PEC Manager SaaS
Analisi condotta il 25/03/2026 sul codice sorgente (backend, worker, frontend).
COSA E' IMPLEMENTATO E FUNZIONANTE
Infrastruttura e autenticazione
Stack Docker completo (PostgreSQL, Redis, MinIO, Nginx, backend, worker, frontend)
Autenticazione JWT con refresh token silenzioso
2FA TOTP (setup + verifica)
Multi-tenancy row-level con RLS PostgreSQL
Cifratura credenziali IMAP/SMTP (AES-256-GCM in security.py)
Rate limiting su endpoint auth
WebSocket real-time per nuovi messaggi
CRUD completo: caselle, utenti, permessi, Virtual Box, notifiche, etichette
IMAP Sync Engine
Pool asincrono con N coroutine IMAP, IDLE + polling fallback
Backoff esponenziale su disconnessione
Download EML grezzo su MinIO
Aggiornamento stato casella (error, sync_error_count)
Parser PEC
Classificazione tipo messaggio da header X-Ricevuta/X-TipoRicevuta
Parsing MIME completo, estrazione allegati
EML-in-EML (ricevute annidate)
State machine outbound: sent → accepted → delivered / anomaly
Invio SMTP
API POST /send con validazione e creazione send_job
Job send_pec con retry esponenziale (5 tentativi)
receipt_watcher: attesa ricevuta accettazione con alert anomalia a 24h
Upload raw EML inviato su MinIO
Frontend
Inbox multi-casella con filtri, selezione multipla, azioni bulk
Posta inviata, Preferiti, Archiviati, Cestino
Dettaglio messaggio: corpo HTML/testo, allegati, ReceiptTree, download ZIP
Composizione PEC con RichTextEditor, To/Cc multipli, allegati
Gestione caselle, utenti, permessi, Virtual Box, notifiche, impostazioni
Pagina Multi-tenant (Super Admin)
Tag/etichette con colori su messaggi
Virtual Box con regole e assegnazioni utenti
COSA MANCA PRIORITA' ALTA
1. Dispatch automatico notifiche (Sistema di notifiche incompleto al 60%)
Il CRUD canali/regole/log e' implementato, ma manca tutto il lato dispatch
Non esiste worker/app/jobs/dispatch_notification.py
NotificationService non ha il metodo evaluate_rules(event_type, message) che valuta le regole e accoda i job
L'IMAP sync (sync.py) non chiama nulla al salvataggio di un nuovo messaggio
Il test canale webhook e email e' uno stub che restituisce sempre successo (solo Telegram ha invio reale)
La cifratura in notification_service.py usa base64 grezzo, non AES-256-GCM: i segreti (bot_token, webhook_secret, smtp_password) sono leggibili in chiaro nel DB
Canale WhatsApp: nessuna implementazione reale (stub completo)
Canale Email SMTP: nessuna implementazione reale (stub completo)
Risultato pratico: le notifiche sono configurabili ma non vengono mai inviate automaticamente
2. Ricerca avanzata full-text (Fase 5-B completamente mancante)
Non esiste backend/app/api/v1/search.py
Non esiste backend/app/services/search_service.py
Non esiste frontend/src/pages/Search/ ne' frontend/src/api/search.api.ts
La "ricerca" nell'InboxPage usa solo ILIKE su subject/from_address/body_text: e' lenta su volumi grandi e non cerca nel testo degli allegati
La colonna search_vector tsvector non e' nelle migrazioni Alembic attuali (00010007)
Non c'e' Apache Tika e non c'e' worker/app/jobs/index_message.py per l'estrazione testo da PDF/DOCX
3. Archiviazione Sostitutiva (Fase 6 ~15% implementata)
worker/app/archival/conservatore_client.py esiste (mock + produzione) ma non e' mai chiamato da nessun job reale
Mancano completamente:
worker/app/archival/sip_builder.py (generazione pacchetto SIP UNI SInCRO)
worker/app/archival/rdv_processor.py (parsing RdV XML)
worker/app/jobs/archive_batch.py (job selezione messaggi + upload SIP)
backend/app/api/v1/archival.py (endpoint GET /archival/batches, POST /archival/dip)
frontend/src/pages/Archival/ (pagina log versamenti, download RdV, richiesta DIP)
Il modello archival.py esiste ma la tabella archival_batches non e' nella migrazione corrente
La configurazione conservatore nelle impostazioni tenant e' pronta, ma il "pulsante" che avvia il versamento non esiste
4. Dashboard e Reportistica (Fase 7 completamente mancante)
Non esistono endpoint /reports/summary, /reports/export
Non esiste pagina Reports/Dashboard nel frontend (nessuna rotta in App.tsx)
Non c'e' generazione PDF (WeasyPrint) ne' export CSV
Non c'e' nessun grafico o KPI visibile (PEC ricevute/inviate oggi, anomalie, tasso consegna)
5. Audit Log modello esistente, tutto il resto mancante
Il modello audit_log.py e la tabella esistono
Non c'e' nessun endpoint API GET /audit-log per leggerlo
Non c'e' nessuna pagina frontend per la visualizzazione
Non e' chiaro se il backend registra effettivamente gli eventi (nessuna chiamata a AuditLog trovata nei servizi)
COSA MANCA PRIORITA' MEDIA
6. Worker job mancanti
dispatch_notification.py notifiche automatiche
archive_batch.py versamenti verso conservatore
generate_report.py export PDF/CSV
index_message.py indicizzazione FTS allegati via Tika
7. Sicurezza punti critici
La cifratura dei segreti notifiche usa base64.b64encode() senza encryption reale: chiunque abbia accesso al DB puo' leggere bot_token Telegram, webhook secret, SMTP password in chiaro
Il CI/CD GitHub Actions e' disabilitato (ci.yml.bak): non c'e' lint automatico, test o build su PR
Non c'e' docker-compose.prod.yml (override produzione con configurazioni rafforzate)
Docs /docs, /redoc sono disabilitate in produzione ma non c'e' un meccanismo di secret scan
8. Invio PEC funzionalita' mancanti
Non c'e' Forward messaggio (la risposta e' parzialmente implementata in ComposePage ma non e' chiaro se funziona end-to-end)
Non c'e' endpoint per forzare un re-sync manuale di una casella (utile dopo un errore di connessione)
Non c'e' indicazione visiva del numero di messaggi non letti nella sidebar per casella
La barra ricerca nell'Inbox non ha filtri per data (da/a), stato PEC, tipo PEC
9. Ruolo Supervisor
Il ruolo supervisor e' definito nell'enum DB e nella documentazione ma non ha logica differenziata dal operator nel codice: is_admin controlla solo admin/super_admin, tutto il resto e' trattato uguale
10. Gestione quote casella
L'evento mailbox.quota_warning e' definito negli enum delle notifiche ma non e' mai generato dal worker (nessuna stima della quota IMAP)
COSA MANCA PRIORITA' BASSA (Hardening / Go-Live)
11. Monitoring e osservabilita'
Non c'e' infra/prometheus/ ne' infra/grafana/ (previsti in ARCHITECTURE.md ma non creati)
Non c'e' log aggregation (Loki/ELK)
Non ci sono metriche esposte dal backend (es. /metrics endpoint Prometheus)
12. Backup automatico
Non c'e' script o cronjob per pg_dump automatico verso MinIO
13. Test coverage
I test di integrazione esistenti coprono auth, users, send API
Non ci sono test per: messages API, permissions API, virtual_boxes, notifications, archival
Non c'e' copertura frontend (nessun test Vitest/Playwright presente)
14. GDPR
Non c'e' endpoint DELETE /tenants/{id} per cancellazione completa dati tenant con audit trail
RIEPILOGO STATO PER FASE
Fase Descrizione Stato
1 Fondamenta + Auth + Multi-tenancy Completa
1-A Permessi granulari per casella Completa
2 IMAP Sync Engine Completa
3 Parser PEC e Tracking Ricevute Completa
4 Invio SMTP con retry Completa
5 Frontend base (inbox, compose, admin) Completa
5-A Virtual Box Completa
5-B Ricerca avanzata full-text Non iniziata
5-C Notifiche multi-canale Struttura pronta, dispatch mancante
6 Archiviazione sostitutiva ~15% (client mock presente, tutto il resto mancante)
7 Dashboard e Reportistica Non iniziata
8 Hardening, test, go-live Parziale (sicurezza base presente, monitoring/backup/CI mancanti)
PRIORITA' DI INTERVENTO CONSIGLIATA
Notifiche dispatch e' la funzionalita' piu' vicina al completamento: la struttura dati e' pronta, manca solo il wiring tra IMAP sync, il servizio di valutazione regole e il job worker. Ha alto impatto operativo.
Ricerca avanzata blocca l'usabilita' su volumi di posta significativi. La ricerca ILIKE attuale scala male.
Archiviazione sostitutiva obbligatoria per la compliance normativa dei clienti PA/professionisti.
Fix sicurezza cifratura notifiche critico: i segreti (bot token, webhook secret) sono attualmente non cifrati nel DB.
Audit log necessario per compliance e per l'utilizzo enterprise.
Dashboard/Report utile commercialmente ma non bloccante per l'operativita'.