Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-MST-006 |
| Deskripsi | Buku kontak: daftar kontak umum perusahaan (perorangan atau badan hukum) beserta email, telepon, dan alamat, yang menjadi dasar pembuatan supplier, customer, dan karyawan |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User dapat melihat daftar kontak dengan nama, relasi kontak terhadap perusahaan (supplier, customer, karyawan), email, dan nomor telepon
- User dapat mencari kontak berdasarkan nama dan memfilter berdasarkan relasi
- User dapat berpindah tab ke Supplier, Jenis Customer, Customer, dan Karyawan sesuai hak akses
- User dapat menambah kontak perorangan (nama depan, nama belakang, NPWP, nomor identitas) atau badan hukum (jenis badan hukum, nama perusahaan, NPWP, nomor identitas)
- User dapat mengisi informasi kontak: email, beberapa nomor telepon, provinsi, kota, dan beberapa alamat
- User dapat melihat detail kontak dan mengubahnya, termasuk pengaturan relasi supplier, customer, dan karyawan yang melekat pada kontak
- User dapat menonaktifkan kontak dan memulihkannya dari arsip
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar kontak aktif (bukan kontak gudang) dengan kolom nama, relasi, email, dan nomor telepon |
| FR-02 | User dapat mencari berdasarkan nama dan memfilter berdasarkan relasi dengan perusahaan |
| FR-03 | Sistem menampilkan tab Buku Kontak, Supplier, Jenis Customer, Customer, Karyawan sesuai hak akses masing-masing |
| FR-04 | User dapat menambah kontak perorangan atau badan hukum |
| FR-05 | Sistem memvalidasi nama wajib, jenis badan hukum wajib untuk badan hukum, format email, dan nomor telepon minimal 6 digit |
| FR-06 | User dapat menyimpan lebih dari satu nomor telepon dan alamat (provinsi, kota, alamat) |
| FR-07 | User dapat melihat detail kontak |
| FR-08 | User dapat mengubah kontak beserta data relasi customer (tempo, maksimal piutang, maksimal nota, jenis customer, sales, PIC, konsinyasi), supplier (tempo, PIC), dan karyawan (akun) |
| FR-09 | User dapat menonaktifkan kontak dan memulihkannya dari arsip secara massal |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat dan mencari daftar kontak |
| UC-02 | Menambah kontak perorangan atau badan hukum |
| UC-03 | Melihat detail kontak |
| UC-04 | Mengubah kontak beserta data relasinya |
| UC-05 | Menonaktifkan kontak |
| UC-06 | Memulihkan kontak dari arsip |
4. Use Case Scenario
UC-01 : Melihat dan mencari daftar kontak
| Aktor | User brand |
| Deskripsi | User melihat buku kontak dan menyaringnya |
| Prekondisi | User sudah login User memiliki hak #person |
| Alur utama | 1. User membuka menu Master, Kontak, Buku Kontak. 2. Sistem menampilkan daftar kontak. 3. User mengetik nama atau memilih relasi pada pencarian. 4. Sistem memuat ulang daftar dan menyimpan filter di query halaman. |
| Alur negatif | - Jika gagal memuat atau tidak ada hasil, daftar kosong. - Tab yang tidak diizinkan tidak ditampilkan. |
| Bisnis rule | - Tanpa filter relasi, kontak gudang tidak ikut ditampilkan. - Relasi ditampilkan sebagai gabungan (mis. "Supplier, Customer"). |
| Postkondisi | Daftar kontak tampil |
| Trigger | User membuka menu Buku Kontak |
| Kode FR | FR-01 FR-02 FR-03 |
UC-02 : Menambah kontak perorangan atau badan hukum
| Aktor | User brand dengan hak basic |
| Deskripsi | User membuat kontak baru |
| Prekondisi | User sudah login |
| Alur utama | 1. User klik Tambah. 2. User memilih apakah kontak atas nama badan hukum. 3. Perorangan: user mengisi nama depan, nama belakang, NPWP, nomor kartu identitas. 4. Badan hukum: user memilih jenis badan hukum, mengisi nama perusahaan, NPWP, nomor kartu identitas. 5. User mengisi email, nomor telepon, provinsi, kota, alamat, dan dapat menambah telepon / alamat lain. 6. User klik Simpan. 7. Sistem menampilkan "Berhasil buat Person". |
| Alur negatif | - Jika field wajib kosong atau tidak valid, muncul "Form Ada yang belum diisi!". - Jika simpan gagal, muncul pesan error dari server. |
| Bisnis rule | - Pilihan jenis badan hukum: PT, Fa, UD, CV, Perjan, Perum, Lainnya. - Untuk badan hukum, nama perusahaan disimpan sebagai nama depan dan jenis badan hukum sebagai nama belakang. - Alamat pertama ditandai sebagai alamat utama. - Nomor telepon minimal 6 digit. |
| Postkondisi | Kontak baru tersimpan tanpa relasi |
| Trigger | User klik Simpan |
| Kode FR | FR-04 FR-05 FR-06 |
UC-03 : Melihat detail kontak
| Aktor | User brand dengan hak view |
| Deskripsi | User melihat informasi lengkap kontak |
| Prekondisi | Kontak sudah ada |
| Alur utama | 1. User klik sekali baris kontak. 2. Sistem membuka halaman lihat berisi data kontak dan informasi relasinya. |
| Alur negatif | - Jika user tidak punya hak view, klik baris tidak membuka halaman. |
| Bisnis rule | - Bagian supplier / customer / karyawan hanya tampil bila user memiliki hak #kontak-supplier / #kontak-customer / #kontak-karyawan. |
| Postkondisi | Detail kontak tampil |
| Trigger | User klik baris |
| Kode FR | FR-07 |
UC-04 : Mengubah kontak beserta data relasinya
| Aktor | User brand dengan hak basic |
| Deskripsi | User mengubah data kontak serta pengaturan supplier, customer, atau karyawan yang melekat |
| Prekondisi | Kontak sudah ada |
| Alur utama | 1. User klik dua kali baris kontak atau tombol ubah. 2. Sistem memuat data kontak, provinsi, dan data customer / supplier / karyawan bila ada. 3. User mengubah data kontak, telepon, alamat, dan bagian relasi. 4. User klik Simpan. 5. Sistem memperbarui kontak dan relasi secara paralel, lalu menampilkan "Berhasil diupdate". |
| Alur negatif | - Jika salah satu penyimpanan gagal, muncul pesan error dari server. |
| Bisnis rule | - Bagian customer hanya dikirim bila relasi mengandung customer dan user punya hak #kontak-customer (sama untuk supplier dan karyawan).- PIC lama yang dihapus dikirim dengan tanda deleted: true. |
| Postkondisi | Kontak dan relasinya terbarui |
| Trigger | User klik Simpan |
| Kode FR | FR-06 FR-08 |
UC-05 : Menonaktifkan kontak
| Aktor | User brand dengan hak basic |
| Deskripsi | User menonaktifkan kontak yang tidak dipakai |
| Prekondisi | Kontak ada di daftar |
| Alur utama | 1. User klik hapus pada baris. 2. Sistem meminta konfirmasi "Anda yakin ingin menonaktifkan (nama)?". 3. User konfirmasi. 4. Sistem menonaktifkan kontak dan menampilkan "Berhasil menonaktifkan person". |
| Alur negatif | - Jika batal, tidak ada perubahan. - Jika gagal, muncul pesan error dari server. |
| Bisnis rule | - Kontak tidak dihapus permanen, hanya status aktif diubah menjadi tidak aktif. |
| Postkondisi | Kontak pindah ke arsip |
| Trigger | User klik hapus |
| Kode FR | FR-09 |
UC-06 : Memulihkan kontak dari arsip
| Aktor | User brand dengan hak archive |
| Deskripsi | User mengaktifkan kembali kontak |
| Prekondisi | Ada kontak tidak aktif |
| Alur utama | 1. User membuka Arsip. 2. User mencentang kontak dan klik pulihkan, lalu konfirmasi. 3. Sistem menampilkan "Berhasil memulihkan Person terpilih". |
| Alur negatif | - Jika gagal, muncul pesan error dari server. |
| Bisnis rule | - Pemulihan dilakukan massal. |
| Postkondisi | Kontak kembali aktif |
| Trigger | User klik pulihkan |
| Kode FR | FR-09 |
5. Data Flow Diagram
DFD-01
6. Sequence Diagram
SD-01 — UC-01 : Melihat dan mencari daftar kontak
SD-02 — UC-02 : Menambah kontak perorangan atau badan hukum
SD-03 — UC-03 : Melihat detail kontak
SD-04 — UC-04 : Mengubah kontak beserta data relasinya
SD-05 — UC-05 : Menonaktifkan kontak
SD-06 — UC-06 : Memulihkan kontak dari arsip
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /person | existing | - |
GET /person/:id | existing | - |
POST /person | existing | - |
PATCH /person/:id | existing | - |
POST /person/bulk | existing | - |
GET /province | existing | - |
GET /city | existing | - |
GET /customer/:id | existing | - |
GET /supplier/:id | existing | - |
GET /karyawan/:id | existing | - |
POST /customer/update-enchanced/ | existing | - |
POST /supplier/update-enchanced/ | existing | - |
POST /karyawan/update-enchanced/ | existing | - |