title: “Documents — Manajemen Dokumen” description: “Manajemen dokumen terpusat dengan Cloudinary upload, image compression, 6 kategori, search, sharing, versioning, approval workflow, dan access control di SNISHOP ERP.”
Documents — Manajemen Dokumen

Documents.jsx (377 baris) dengan integrasi Cloudinary untuk upload file dan image compression untuk optimasi ukuran file sebelum upload.
Sistem ini mendukung 6 kategori dokumen, pencarian full-text, filter berdasarkan kategori, organising dokumen ke dalam folder, versioning dokumen, sharing dokumen ke user tertentu, penguncian dokumen, tanggal kedaluwarsa, dan access control melalui ERPAccessGuard.
Fitur Utama
- Upload & Compression — Upload file ke Cloudinary dengan kompresi otomatis untuk gambar
- 6 Kategori Dokumen — Klasifikasi dokumen ke dalam kategori yang terstruktur
- Folder Organisation — Kelompokkan dokumen ke dalam folder virtual
- Versioning — Lacak versi dokumen secara otomatis
- Sharing & Collaboration — Bagikan dokumen ke user tertentu berdasarkan email
- Document Locking — Kunci dokumen untuk mencegah perubahan tidak sah
- Expiry Tracking — Tandai dokumen dengan tanggal kedaluwarsa
- Tagging System — Tambahkan tag untuk klasifikasi tambahan
- Search & Filter — Cari dokumen berdasarkan nama, deskripsi, kategori, dan tag
- Access Control — Permission berbasis role melalui ERPAccessGuard
Arsitektur Komponen
Entity Relationship Diagram
Entity Schema — Document
Entity Schema — ApprovalRequest
Sub-field: approval_history[]
Entity Schema — ApprovalWorkflow
Sub-field: approval_levels[]
Entity Schema — WorkspaceMember
Sub-field: permissions
6 Kategori Dokumen
Enum Reference — Document.category
Enum Reference — ApprovalRequest.overall_status
Enum Reference — ApprovalWorkflow.document_type
Enum Reference — WorkspaceMember.role
Document Lifecycle — State Diagram
Penjelasan State
Upload Pipeline
Image Compression Details
File Type Support
Sharing & Collaboration Flow
Aturan Sharing
Version Control Flow
Aturan Versioning
Approval Workflow Flow
Search & Filter
Access Control
RBAC Permission Table
Permission Detail
Stats Dashboard
Folder Organisation
Dokumen dapat diorganisir ke dalam folder virtual menggunakan fieldfolder. Folder bersifat flat (tidak ada sub-folder bersarang) dan ditentukan oleh nama string.
Contoh Struktur Folder
Document Locking & Expiry
Penguncian Dokumen
Fieldis_locked digunakan untuk mencegah perubahan pada dokumen penting. Dokumen yang terkunci:
- Tidak dapat di-update versinya
- Metadata tidak dapat diubah
- Tetap dapat dilihat dan di-download
- Hanya role Owner dan Admin yang dapat mengunci/membuka kunci
Tanggal Kedaluwarsa
Fieldexpiry_date menandai kapan dokumen dianggap tidak berlaku lagi:
- Dokumen kedaluwarsa tetap tersimpan tetapi ditandai dengan badge khusus
- Dapat difilter untuk menampilkan dokumen yang sudah/sedang kedaluwarsa
- Berguna untuk kontrak, sertifikat, dan dokumen legal yang memiliki masa berlaku
- Tidak otomatis dihapus — perlu tindakan manual untuk arsip atau hapus
Integrasi Lintas Modul
Flow Penggunaan
Cara Akses
Dari sidebar, klik menu Productivity > Documents.Flow Penggunaan Detail
- Buka halaman Documents dari sidebar — lihat statistik dokumen di atas
- Gunakan filter kategori untuk menyaring dokumen berdasarkan jenis
- Gunakan search bar untuk mencari dokumen berdasarkan judul, deskripsi, atau tag
- Gunakan filter folder untuk melihat dokumen dalam folder tertentu
- Klik “Upload Dokumen” untuk mengupload file baru
- Pilih file dari komputer (drag & drop atau browse)
- Sistem otomatis compress jika file berupa gambar
- Isi judul, kategori, folder, tag, dan deskripsi dokumen
- Klik Upload — file diupload ke Cloudinary dan metadata disimpan
- Dokumen baru muncul di daftar dengan thumbnail preview
- Klik dokumen untuk preview detail, download, share, atau delete
- Gunakan lock untuk mengunci dokumen penting agar tidak diubah
- Set expiry_date untuk dokumen yang memiliki masa berlaku
Tips
- Gunakan kategori yang konsisten — supaya dokumen mudah ditemukan saat dibutuhkan, terutama saat audit atau review legal
- Beri judul dokumen yang deskriptif — contoh: “Kontrak Supplier PT ABC - 2026” lebih baik daripada “kontrak_final_revisi3.pdf”
- Upload sertifikat dan izin edar ke kategori
otheratau buat kategori khusus supaya mudah diakses saat ada inspeksi - Manfaatkan deskripsi untuk menambahkan konteks: nomor kontrak, tanggal berlaku, pihak terkait
- Gunakan folder untuk mengelompokkan dokumen berdasarkan proyek, departemen, atau periode waktu
- Tambahkan tag untuk klasifikasi silang — satu dokumen bisa memiliki banyak tag meskipun hanya satu kategori
- Set expiry_date pada kontrak dan sertifikat supaya kamu diingatkan sebelum dokumen kedaluwarsa
- Lock dokumen penting yang sudah final untuk mencegah perubahan tidak sengaja
- Share dokumen via email daripada mengirim file berulang — semua orang akses versi yang sama
- Review dokumen secara berkala — hapus atau arsipkan dokumen yang sudah tidak relevan
- File gambar otomatis di-compress — tidak perlu compress manual sebelum upload, sistem sudah menangani optimasi ukuran
- Gunakan versioning — upload versi baru daripada menimpa file lama, supaya ada jejak perubahan
