Skip to Content

Entities (Entitas)

CodeSET-ENT
ModuleSettings
TypeMaster data (read + sync)
StatusImplemented
PriorityP1
ProcessSetup tenant
API[URL Postman]

1. Overview

Entitas (party) adalah identitas tunggal untuk orang atau organisasi di dalam tenant. Satu entitas bisa berperan sebagai Pengguna (akun login), Karyawan, dan/atau Pemasok sekaligus. Contohnya, seorang staf yang juga login ke sistem cukup punya satu entitas yang terhubung ke data pengguna dan data karyawannya.

Entitas tidak dibuat atau diubah langsung dari halaman ini; entitas terbentuk saat membuat pengguna, karyawan, atau pemasok. Halaman Entitas dipakai untuk melihat semua entitas beserta perannya, dan untuk menyinkronkan (menghubungkan) entitas dengan data pengguna, karyawan, atau pemasok yang sudah ada.

Hasil yang diharapkan: satu orang atau organisasi tidak tercatat sebagai beberapa identitas terpisah, sehingga data seperti nama dan kontak konsisten di semua peran.

2. Problem

  • Orang yang sama bisa terdaftar dua kali, misalnya sebagai pengguna dan sebagai karyawan, dengan nama atau email yang berbeda.
  • Tanpa identitas tunggal, sulit mengetahui bahwa karyawan X adalah pengguna yang login dengan email Y.
  • Data lama yang terlanjur terpisah perlu cara untuk disatukan.

3. Goals & Non-goals

Goals

  • Admin bisa melihat semua entitas dan perannya di satu tempat. Indikator: kolom Sebagai Pengguna / Karyawan / Pemasok per entitas.
  • Admin bisa menghubungkan entitas dengan data peran yang sudah ada. Indikator: sinkronisasi dilakukan tanpa membuat ulang data.

Non-goals

  • Membuat, mengubah, atau menghapus entitas langsung dari halaman ini
  • Memutus hubungan (unsync) entitas dengan peran
  • Menggabungkan (merge) dua entitas secara otomatis berdasarkan kemiripan data

4. User Scenarios

RoleScenario
AdminMelihat karyawan mana saja yang belum punya akun login
AdminMenghubungkan entitas karyawan “Budi” dengan akun pengguna Budi yang dibuat terpisah
OwnerMemeriksa apakah sebuah pemasok juga terdaftar sebagai karyawan
AuditorMelihat log aktivitas untuk satu entitas tertentu

5. User Flow

  1. Daftar entitas — Kolom nama lengkap, kategori, jenis kelamin, Sebagai Pengguna (email), Sebagai Karyawan (kode), Sebagai Pemasok (kode). Peran yang belum terhubung tampil sebagai badge Hubungkan (jika berizin sync) atau Belum Terhubung.
  2. Dialog sinkronisasi — Menampilkan data sumber (entitas) dan tabel data target sesuai peran yang diklik: daftar pengguna, karyawan, atau pemasok.
  3. Pilih target — Cari dengan kata kunci, 10 data per halaman; klik Pilih pada satu baris (klik lagi untuk batal pilih).
  4. Hubungkan — Tombol aktif setelah target dipilih; mengirim party_id dan id target.
  5. Terhubung — Toast sukses, daftar entitas dimuat ulang, dan kolom peran menampilkan data yang terhubung.

Alternative paths

  • Tanpa izin sync — badge Hubungkan diganti Belum Terhubung dan tidak bisa diklik.
  • Target sudah terhubung ke entitas lain — tidak dicegah FE; BE yang menentukan hasilnya (lihat EC-01).

6. User Stories

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

US-01 — Melihat daftar entitas (P1)

Sebagai admin, saya ingin melihat semua entitas beserta perannya, agar tahu siapa berperan sebagai apa.

IDKriteria penerimaan
AC-01.1Kolom: nama lengkap, kategori (individu / organisasi / perusahaan), jenis kelamin, sebagai pengguna, sebagai karyawan, sebagai pemasok.
AC-01.2Pencarian kata kunci, paginasi, urutan default nama A–Z; hanya kolom nama yang bisa diurutkan.
AC-01.3Peran yang terhubung tampil sebagai badge: email pengguna, kode karyawan, kode pemasok.

US-02 — Menyinkronkan entitas (P1)

Sebagai admin, saya ingin menghubungkan entitas dengan pengguna, karyawan, atau pemasok yang sudah ada, agar satu orang tidak tercatat sebagai identitas terpisah.

IDKriteria penerimaan
AC-02.1Badge Hubungkan hanya tampil pada peran yang belum terhubung dan untuk pengguna dengan izin sync.
AC-02.2Dialog menampilkan data sumber: nama, kategori, jenis kelamin, email, telepon (diawali ”+”), dan status ketiga peran.
AC-02.3Tabel target mengikuti peran: pengguna (nama, email, peran, status), karyawan (kode, nama, jenis kelamin, toko, status), pemasok (kode, nama, jenis kelamin, alamat, kontak, status).
AC-02.4Hanya satu target yang bisa dipilih; tombol Hubungkan nonaktif sampai target dipilih.
AC-02.5Setelah berhasil, toast sukses tampil, dialog tertutup, dan daftar dimuat ulang.

US-03 — Riwayat aktivitas entitas (P2)

Sebagai auditor, saya ingin melihat log aktivitas entitas, agar perubahan identitas bisa ditelusuri.

IDKriteria penerimaan
AC-03.1Log tersedia untuk semua entitas (tombol di header) dan per entitas (aksi baris), dengan filter event, pelaku, dan rentang tanggal.

7. Document Structure

FieldRequiredDefaultNotes
Nama LengkapDari data entitas
Kategoriindividual, organization, company
Jenis Kelaminmale, female, atau kosong
EmailNullable
Nomor TeleponNullable; ditampilkan dengan awalan ”+”
Sebagai PenggunaRelasi ke user (id, email)
Sebagai KaryawanRelasi ke employee (id, code)
Sebagai PemasokRelasi ke supplier (id, code)

Semua field read-only di halaman ini. Body sinkronisasi: party_id ditambah salah satu dari user_id, employee_id, atau supplier_id.

8. Status Lifecycle

Tidak berlaku. Entitas tidak punya status; status aktif ada pada peran masing-masing (pengguna, karyawan, pemasok).

9. Permissions & Actions

Permissions

ActionPermissionSyarat tambahan
Lihat daftar entitas dan log aktivitassettings:party:list:any
Sinkronkan entitassettings:party:sync:anyPeran belum terhubung

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 Satu entitas maksimal terhubung ke satu pengguna, satu karyawan, dan satu pemasok.
  • BR-02 Entitas terbentuk otomatis saat membuat pengguna, karyawan, atau pemasok “dari awal”; membuat “dari entitas” memakai entitas yang sudah ada.
  • BR-03 Sinkronisasi hanya tersedia untuk peran yang belum terhubung pada entitas tersebut.
  • BR-04 Sinkronisasi dan perubahan entitas 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-01Target yang dipilih sudah terhubung ke entitas lainFE tidak menyaring target yang sudah terhubung; BE menentukan apakah ditolak atau dipindahkan ke entitas ini
EC-02Nama/email entitas berbeda dengan data targetSinkronisasi tetap bisa dilakukan; aturan data mana yang dipakai ditentukan BE
EC-03Entitas tanpa email atau teleponDitampilkan sebagai ”-” di dialog
EC-04Salah menghubungkan entitasBelum ada aksi putus hubungan dari UI

12. API Contract

ActionMethodEndpointRef
Daftar entitas (paginasi, cari)GET/api/parties/paginateUS-01
Daftar entitas (cursor)GET/api/parties/cursor
Sinkronkan entitasPOST/api/parties/syncUS-02
Log aktivitas semua entitasGET/api/parties/activity-logs/cursorUS-03
Log aktivitas satu entitasGET/api/parties/:id/activity-logs/cursorUS-03
Target: daftar penggunaGET/api/users/paginateAC-02.3
Target: daftar karyawanGET/api/employees/paginateAC-02.3
Target: daftar pemasokGET/api/suppliers/paginateAC-02.3

13. Dependencies

PRD terkait

  • Users, Employees — dibuat dari awal atau dari entitas (filter doesnt_have).
  • Suppliers (modul Purchasing) — pemasok juga merupakan entitas.
  • Activity Logs — sumber log aktivitas.

Efek ke modul lain

  • Kolom “Sebagai Karyawan/Pengguna/Pemasok” di daftar Pengguna dan Karyawan berasal dari relasi entitas.
  • Karyawan yang terhubung ke pengguna yang sedang login dipakai untuk menentukan PIC di Pesanan Pembelian.
Last updated on