Sari la conținut

Ciclul de viață al documentului

Acest conținut nu este încă disponibil în limba selectată.

Documentele nu sunt niciodată șterse fizic (tombstone). Tranzițiile sunt impuse în service/arhiva/DocumentLifecycleService și scriu câte un EvenimentDocument.

stateDiagram-v2
[*] --> ACTIV: upload / create
ACTIV --> ARHIVAT: arhiveaza (gzip binar)
ARHIVAT --> ACTIV: restore (gunzip)
ACTIV --> STERS: delete (soft) + stersLa
STERS --> ACTIV: restore
STERS --> STERS: purge (șterge binarul,<br/>storageUri=null, rândul rămâne)
ARHIVAT --> STERS: delete
STERS --> [*]: (rând + audit păstrate permanent)
AcțiuneEndpointEfect
UploadPOST /api/documents/uploadcreează ACTIV, stochează binarul în bucket, CREAT
ArhiveazăPOST /api/documents/{id}/arhiveazaARHIVAT + arhivatLa, gzip binarul, ARHIVAT
RestaureazăPOST /api/documents/{id}/restoredin STERS sau ARHIVAT → ACTIV (dezarhivează/decomprimă)
Șterge (coș)DELETE /api/documents/{id}soft → STERS + stersLa (restaurabil 30 zile)
PurjeazăPOST /api/documents/{id}/purgeșterge binarul + storageUri=null (tombstone; rândul + jurnalul rămân permanent)

service/scheduled/DocumentMaintenanceJobs — @Scheduled zilnic: auto-arhivează documentele ACTIV expirate + auto-purjează coșul mai vechi de 30 zile. Manual: POST /api/admin/maintenance/run (admin).

service/arhiva/DocumentBinaryService.readForDelivery aplică în ordine inversă: gunzip (dacă arhivat, detectat prin magic-bytes 0x1f8b) → decriptare AES (dacă CRIPTAT). Citește din bucket-ul fizic al documentului (StorageTarget, bring-your-own).

Ortogonală față de ciclul de viață (statut): un document poate avea mai multe versiuni de conținut, dar un singur statut. Document.storageUri indică mereu versiunea curentă; versiunile anterioare sunt păstrate în versiune_document cu chei versionate (uploads/<cod>/v<n> — fără suprascriere). „Încărcare versiune nouă” înlocuiește conținutul curent + scrie EvenimentDocument(MODIFICAT); restaurarea unei versiuni vechi e forward-only (creează o versiune nouă cu acel conținut + EvenimentDocument(RESTAURAT)), deci download-ul, căutarea și auditul rămân consistente. Detalii + endpoint-uri: secțiunea Versionare din API Reference. Serviciu: service/versiune/DocumentVersionService.