Vai al contenuto

Storage e DMS

Architettura a Due Livelli

DMS (Document Management System)   ← livello alto: cartelle, metadati, accessi
      ↓ usa
Storage Service                     ← livello basso: file grezzi, driver, cifratura
      ↓ usa
Driver (Local / SMB / S3 / ...)    ← adattatore verso il sistema fisico

Driver di Storage Disponibili

Driver Tipo Caso d'uso
LocalStorageDriver LOCAL File system locale del server
SmbStorageDriver SMB NAS aziendale via SMB/CIFS
S3StorageDriver S3 AWS S3 o compatibili (Backblaze, MinIO)
GoogleDriveStorageDriver GOOGLE_DRIVE Google Drive via OAuth
OneDriveStorageDriver ONEDRIVE Microsoft OneDrive via OAuth
FtpStorageDriver FTP Server FTP legacy

Tutti i driver implementano l'interfaccia IStorageDriver — il consumer non sa quale driver sta usando.


Selezione del Driver

Il driver attivo segue la gerarchia:

Configurazione utente  ──→ massima priorità
  ↓ se non configurata
Configurazione tenant
  ↓ se non configurata
Default globale (LOCAL) ──→ fallback

Cifratura File

Cifratura trasparente

I file vengono sempre cifrati tramite EncryptionService prima di essere salvati, indipendentemente dal driver usato.

La decifratura avviene in lettura in modo trasparente per il consumer. Anche file su NAS o S3 sono cifrati — il bucket/share contiene solo dati cifrati.


DMS — Document Management System

Il DMS aggiunge sopra lo Storage:

  • Organizzazione in cartelle logiche
  • Metadati sui documenti (nome, tipo, dimensione, data)
  • Associazione documenti a entità di business (cliente, progetto, intervento)
  • Controllo accessi a livello di documento (con isolamento tenant/utente)

Il modulo dms espone le API che il frontend usa per navigare e gestire i documenti. Il modulo storage è il layer sottostante — il DMS lo usa ma non lo espone direttamente all'utente.


StorageConfiguration

StorageConfiguration è un'entity TypeORM collegata all'utente (OneToOne) o al tenant. Contiene il tipo di driver selezionato e le credenziali di accesso (cifrate nel database).