Skip to Content

Company (Perusahaan)

CodeSET-COM
ModuleSettings
TypeTenant configuration (singleton)
StatusImplemented
PriorityP0 — MVP
ProcessSetup tenant
API[URL Postman]

1. Overview

Perusahaan adalah profil resmi tenant: kode, nama, kontak, alamat, dan logo (versi mode terang dan mode gelap). Hanya ada satu profil per tenant. Data ini dipakai di seluruh aplikasi: logo di sidebar, pemilih toko, halaman login, serta kop dokumen PDF seperti Pesanan Pembelian.

Hasil yang diharapkan: identitas bisnis tenant tampil konsisten di semua layar dan dokumen, dan bisa diperbarui sendiri oleh admin.

2. Problem

  • Dokumen yang dikirim ke supplier (misalnya PDF PO) butuh identitas perusahaan yang resmi dan seragam.
  • Logo satu warna sering tidak terbaca di mode gelap atau terang.
  • Perubahan alamat atau nomor telepon perusahaan harus langsung tercermin di dokumen baru.

3. Goals & Non-goals

Goals

  • Admin bisa memperbarui profil perusahaan sendiri. Indikator: tidak ada permintaan manual ke tim teknis.
  • Perubahan langsung terlihat di seluruh aplikasi. Indikator: sidebar dan PDF memakai data baru segera setelah simpan.
  • Logo terbaca di kedua tema. Indikator: logo terpisah untuk mode terang dan gelap.

Non-goals

  • Multi-perusahaan / multi-badan hukum dalam satu tenant
  • Data legal (NPWP, NIB) dan rekening bank
  • Riwayat versi profil (selain log aktivitas)

4. User Scenarios

RoleScenario
OwnerMengisi profil perusahaan saat pertama kali memakai sistem
OwnerMengunggah logo terang dan gelap agar tampil baik di kedua tema
AdminMemperbarui nomor telepon perusahaan, lalu mencetak ulang PDF PO dengan data baru
AuditorMemeriksa siapa yang mengubah alamat perusahaan

5. User Flow

  1. Mode lihat — Menampilkan logo (terang dan gelap), kode, nama, telepon, email, situs web, dan alamat lengkap. Field kosong tampil sebagai ”-”.
  2. Mode ubah — Halaman /settings/company/edit.
  3. Isi field — Logo diunggah lewat pengunggah file (1 gambar per mode, maksimal 1 MB), bisa dari unggahan, pustaka file, tautan, atau kamera.
  4. Validasi — FE memvalidasi field wajib dan format email; BE memvalidasi ulang. Tombol Perbarui aktif hanya jika ada perubahan.
  5. Tersimpan — Toast sukses; cache data inisialisasi tenant diperbarui sehingga sidebar, halaman login, dan PDF langsung memakai data baru.
  6. Mode lihat — Menampilkan data terbaru.

Alternative paths

  • Tinggalkan halaman tanpa simpan — muncul konfirmasi perubahan belum disimpan.
  • Hapus logo — logo dikosongkan dan disimpan sebagai null.

6. User Stories

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

US-01 — Melihat profil perusahaan (P0)

Sebagai admin, saya ingin melihat profil perusahaan, agar tahu data yang dipakai di dokumen.

IDKriteria penerimaan
AC-01.1Pengguna dengan izin view melihat semua field profil beserta pratinjau logo terang dan gelap.
AC-01.2Field opsional yang kosong tampil sebagai ”-”.

US-02 — Mengubah profil perusahaan (P0)

Sebagai owner, saya ingin memperbarui profil perusahaan, agar identitas di aplikasi dan dokumen selalu benar.

IDKriteria penerimaan
AC-02.1Tombol Ubah Data hanya tampil untuk pengguna dengan izin update.
AC-02.2Kode, nama, telepon, dan alamat lengkap wajib diisi; email opsional tetapi harus berformat valid bila diisi.
AC-02.3Logo terang dan gelap masing-masing menerima satu file gambar.
AC-02.4Email dan situs web yang dikosongkan dikirim sebagai null.
AC-02.5Setelah berhasil, toast sukses tampil, cache tenant diperbarui, dan pengguna kembali ke mode lihat.
AC-02.6Error BE ditampilkan pada field terkait.

US-03 — Riwayat perubahan (P2)

Sebagai owner, saya ingin melihat log aktivitas perusahaan, agar perubahan profil bisa ditelusuri.

IDKriteria penerimaan
AC-03.1Tombol Log Aktivitas di mode lihat membuka panel log dengan filter event, pelaku, dan rentang tanggal.

7. Document Structure

FieldRequiredDefaultNotes
Logo mode terangTidak1 gambar, maks 1 MB; dikirim sebagai { id, source }
Logo mode gelapTidak1 gambar, maks 1 MB; dikirim sebagai { id, source }
KodeYaIdentifikasi unik perusahaan
Nama PerusahaanYaNama resmi / terdaftar
Nomor TeleponYaKontak utama
EmailTidakFormat email valid
Situs WebTidakTeks bebas
Alamat LengkapYaAlamat bisnis

source file: upload, library, link, atau webcam.

8. Status Lifecycle

Tidak berlaku. Perusahaan adalah pengaturan singleton tanpa status.

9. Permissions & Actions

Permissions

ActionPermissionSyarat tambahan
Lihat profil dan log aktivitassettings:company:view:any
Ubah profilsettings:company:update:any

FE menyembunyikan tombol Ubah Data dan mengalihkan URL edit ke unauthorized bila tidak berizin; 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 Satu profil perusahaan per tenant.
  • BR-02 Kode, nama, nomor telepon, dan alamat lengkap wajib; email harus valid bila diisi.
  • BR-03 Logo hanya menerima file gambar, satu file per mode, maksimal 1 MB.
  • BR-04 Profil disajikan ke seluruh aplikasi lewat data inisialisasi tenant (/public/init) yang di-cache hingga 1 hari; setiap simpan wajib memperbarui cache tersebut.
  • BR-05 Dokumen PDF yang dibuat setelah perubahan memakai profil terbaru; PDF yang sudah diunduh sebelumnya tidak berubah.
  • BR-06 Setiap perubahan dicatat di log aktivitas.

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-01Hanya satu logo yang diunggahMode lain tidak menampilkan logo
EC-02File logo lebih dari 1 MB atau bukan gambarDitolak oleh pengunggah sebelum dikirim
EC-03File logo yang dipakai dihapus dari Pengelola FilePerilaku ditentukan BE; file tercatat “Digunakan Di” di Pengelola File
EC-04Dua admin mengubah profil bersamaanSimpan terakhir yang berlaku
EC-05Situs web diisi tanpa http(s)://Diterima apa adanya; tidak ada validasi format URL

12. API Contract

ActionMethodEndpointRef
Detail perusahaanGET/api/companyUS-01
Ubah perusahaanPUT/api/companyUS-02
Log aktivitasGET/api/company/activity-logs/cursorUS-03
Presign unggah filePOST/api/files/upload/presignAC-02.3
Finalisasi unggah fileGET/api/files/upload/finalize/:idAC-02.3
Data inisialisasi tenantGET/public/initBR-04

13. Dependencies

PRD terkait

  • File Manager — penyimpanan file logo.
  • Appearance — berbagi data inisialisasi tenant.
  • Purchase Order — kop PDF memakai profil perusahaan.
  • Activity Logs — sumber log aktivitas.

Efek ke modul lain

  • Logo tampil di sidebar, pemilih toko, sambutan pengguna, dan halaman auth.
  • Kop dokumen PDF memakai profil perusahaan.
Last updated on