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).