mirror of
https://github.com/idrainformatica/PecFlow.git
synced 2026-06-16 12:45:42 +02:00
Semantic search
This commit is contained in:
+148
@@ -0,0 +1,148 @@
|
||||
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 (0001–0007)
|
||||
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'.
|
||||
Reference in New Issue
Block a user