Skip to Content
BackofficeSettingsFile Manager

File Manager (Pengelola File)

CodeSET-FIL
ModuleSettings
TypeMaster data (file)
StatusImplemented
PriorityP2
ProcessAdministrasi tenant
API[URL Postman]

1. Overview

Pengelola File adalah pustaka semua file yang diunggah di tenant: logo perusahaan, gambar produk, lampiran, dan lainnya. Admin bisa melihat semua file dalam tampilan grid atau tabel, mencari dan menyaring file (kategori, ekstensi, status penggunaan, pengunggah), melihat pratinjau, serta menghapus file yang tidak dipakai.

File tidak diunggah dari halaman ini. Unggahan terjadi lewat komponen pengunggah di fitur lain (dari perangkat, pustaka, tautan, atau kamera). Pustaka yang sama dipakai saat memilih file yang sudah ada.

Hasil yang diharapkan: penyimpanan tenant tetap rapi, dan admin tahu file mana yang dipakai di mana sebelum menghapusnya.

2. Problem

  • File yang diunggah menumpuk, termasuk file yang tidak pernah dipakai.
  • Sulit mengetahui sebuah file dipakai di mana sebelum menghapusnya.
  • Pengguna perlu memakai ulang file yang sama tanpa mengunggah ulang.

3. Goals & Non-goals

Goals

  • Admin bisa menemukan file dengan cepat. Indikator: pencarian dan filter kategori, ekstensi, penggunaan, dan pengunggah.
  • Admin tahu penggunaan file. Indikator: kolom “Digunakan Di” menampilkan koleksi yang memakai file.
  • Admin bisa membersihkan file. Indikator: hapus satuan dan massal.

Non-goals

  • Unggah file langsung dari halaman ini
  • Folder, rename, atau pemindahan file
  • Kuota penyimpanan dan statistik penggunaan

4. User Scenarios

RoleScenario
AdminMenyaring file “Tidak Digunakan” lalu menghapusnya secara massal
AdminMencari logo lama berdasarkan nama file untuk melihat pratinjaunya
OwnerMelihat file apa saja yang diunggah oleh seorang pengguna
AdminBeralih ke tampilan grid untuk menelusuri gambar produk secara visual

5. User Flow

  1. Daftar file — Dimuat bertahap (infinite scroll, 10 per muatan). Pilihan tampilan grid/tabel diingat di browser (localStorage).
  2. Cari / filter — Pencarian nama file. Filter lanjutan: kategori (Gambar, Dokumen, Audio, Video), ekstensi (pilihan menyesuaikan kategori terpilih), penggunaan (Digunakan / Tidak Digunakan), dan dibuat oleh (pengguna).
  3. Pratinjau — Membuka file dalam penampil sesuai tipenya.
  4. Konfirmasi hapus — Dialog konfirmasi untuk hapus satuan atau massal.
  5. Terhapus — Toast sukses, daftar dimuat ulang.

Alternative paths

  • Kategori filter diubah — ekstensi terpilih yang tidak termasuk kategori baru otomatis dilepas.
  • File dipakai lalu dihapus — tidak dicegah FE (lihat EC-01).

6. User Stories

Prioritas: P0 wajib untuk rilis, P1 penting, P2 kalau sempat.

US-01 — Menelusuri file (P2)

Sebagai admin, saya ingin melihat semua file tenant, agar tahu apa saja yang tersimpan.

IDKriteria penerimaan
AC-01.1Tampilan tabel: nama berkas, kategori, ukuran, diunggah pada, digunakan di, dibuat oleh.
AC-01.2Tampilan grid: gambar mini untuk file gambar, nama berkas, dan tipe MIME.
AC-01.3Pilihan tampilan grid/tabel tersimpan di browser dan dipakai lagi saat halaman dibuka.
AC-01.4Data dimuat bertahap saat menggulir.
AC-01.5Kolom “Digunakan Di” menampilkan nama koleksi; bila lebih dari satu, tampil jumlah koleksi yang bisa diperluas.

US-02 — Mencari dan menyaring file (P2)

Sebagai admin, saya ingin menyaring file, agar cepat menemukan file tertentu.

IDKriteria penerimaan
AC-02.1Pencarian berdasarkan kata kunci.
AC-02.2Filter kategori (multi), ekstensi (multi, sesuai kategori), penggunaan (Digunakan / Tidak Digunakan / semua), dan dibuat oleh (multi pengguna).
AC-02.3Jumlah filter aktif tampil di tombol filter.

US-03 — Pratinjau file (P2)

Sebagai admin, saya ingin melihat isi file tanpa mengunduhnya.

IDKriteria penerimaan
AC-03.1Aksi Lihat membuka pratinjau file dari tampilan grid maupun tabel.

US-04 — Menghapus file (P2)

Sebagai admin, saya ingin menghapus file yang tidak dipakai, agar penyimpanan rapi.

IDKriteria penerimaan
AC-04.1Hapus satuan dan massal hanya tersedia untuk pengguna dengan izin delete, setelah konfirmasi.
AC-04.2Bila BE menolak, pesan error tampil sebagai toast.

7. Document Structure

FieldRequiredDefaultNotes
Nama Berkas (filename)Read-only
Kategoriimage, document, audio, video
EkstensiMisalnya png, pdf
Tipe MIME
UkuranByte, ditampilkan terformat
Diunggah Pada (updated_at)Tanggal dan jam
Dibuat Oleh (creator)Pengguna pengunggah
URLUntuk pratinjau
Digunakan Di (fileables[].collection)Koleksi yang memakai file

Aturan unggah (komponen pengunggah di fitur lain): maksimal 1 MB per file (default); tipe diterima per fitur (gambar, dokumen PDF/Word/Excel/PowerPoint, audio, video); sumber upload, library, link, webcam; alur presign → unggah → finalize.

8. Status Lifecycle

Tidak berlaku. File tidak punya status; status “Digunakan / Tidak Digunakan” diturunkan dari ada atau tidaknya relasi fileables.

9. Permissions & Actions

Permissions

ActionPermissionSyarat tambahan
Lihat, cari, filter, pratinjau filesettings:file:list:any
Hapus filesettings:file:delete:any

FE menyembunyikan aksi yang tidak diizinkan; BE tetap menolaknya.

10. Business Rules

Aturan bisnis adalah ketentuan yang berlaku di semua layar dan semua aksi, siapa pun yang melakukannya. FE memakainya sebagai validasi di form, BE memakainya sebagai sumber kebenaran; jika keduanya berbeda, perilaku BE yang dianggap benar dan FE menyesuaikan.

  • BR-01 File hanya bisa ditambahkan lewat komponen pengunggah di fitur lain, bukan dari Pengelola File.
  • BR-02 Kategori file ditentukan dari tipe MIME: gambar, dokumen, audio, video.
  • BR-03 Ukuran unggahan default maksimal 1 MB per file.
  • BR-04 Filter penggunaan dikirim sebagai has_any_relationships (true = digunakan, false = tidak digunakan).
  • BR-05 Filter ekstensi hanya boleh berisi ekstensi dari kategori yang dipilih.

11. Edge Cases

Edge case adalah kondisi yang jarang terjadi tetapi pasti muncul di operasional nyata. Perilaku yang diharapkan ditetapkan di sini agar tidak diputuskan sendiri-sendiri saat implementasi.

IDCaseExpected behavior
EC-01Menghapus file yang masih digunakan (misalnya logo perusahaan)FE tidak memperingatkan; BE menentukan apakah ditolak atau relasi ikut dilepas
EC-02Hapus massal dengan sebagian file gagal dihapusDitentukan BE; pesan dari BE tampil sebagai toast
EC-03Unggahan melebihi 1 MBDitolak pengunggah sebelum dikirim

12. API Contract

ActionMethodEndpointRef
Daftar file (cursor, cari, filter)GET/api/files/cursorUS-01, US-02
Hapus fileDELETE/api/files/:idUS-04
Hapus file massalDELETE/api/files/bulkUS-04
Presign unggah (dipakai pengunggah)POST/api/files/upload/presignBR-01
Finalisasi unggah (dipakai pengunggah)GET/api/files/upload/finalize/:idBR-01
Pilihan filter “Dibuat Oleh”GET/api/users/cursorAC-02.2

13. Dependencies

PRD terkait

  • Company — logo perusahaan disimpan sebagai file.
  • Users — pengunggah file dan avatar pengguna.
  • Modul lain yang memakai pengunggah (produk, dan lainnya).

Efek ke modul lain

  • Menghapus file yang digunakan bisa membuat gambar/lampiran di modul lain hilang (lihat EC-01).
Last updated on