Demo — Pelanggan
Modul Pelanggan (menu CRM) menyimpan data pelanggan per cabang, skor kelengkapan data (12 field wajib), kategori Prospek / Aktif / Lama, dan anggota keluarga. Halaman Filter Pelanggan dipakai mencari target promosi. Semua gambar diambil dari build develop dengan data uji (database terpisah, satu akun per role, Cabang E2E A dan E2E B). Tanggal pada gambar adalah 2026-10-10.
Cara membaca gambar
- Kotak biru = tombol atau kolom yang diklik atau diisi.
- Kotak hijau = hasil yang benar; kotak merah = ditolak atau gagal.
- Kotak ungu = keterangan tambahan.
- Pita hitam di bawah gambar = alur dan role yang sedang berjalan.
Akun yang dipakai
| Role | Nama | Username | Dipakai di alur |
|---|---|---|---|
| Sales | Budi Santoso | e2e_sales | 1, 2, 3, 6, 9 |
| Kepala Cabang | Dewi Lestari | e2e_kepala_cabang | 4, 8 |
| Admin H1 | Rina Marlina | e2e_admin_h1 | 5 |
| Sales Cabang B | Joko Prasetyo | e2e_sales_b | 6 |
| Admin PDI | Agus Salim | e2e_admin_pdi | 7 |
| Kawil | Bambang Sutrisno | e2e_kawil | 10 |
| SPV | Yusuf Hidayat | e2e_spv | 10 |
Siapa boleh apa
| Kegiatan | Role |
|---|---|
| Melihat daftar Pelanggan | Superadmin, Kepala Cabang, Admin PDI, Admin H1, Sales, SPV, ADH |
| Tambah Pelanggan, ubah Pelanggan, kelola Keluarga | Superadmin, Kepala Cabang, Admin H1, Sales, SPV, ADH |
| Filter Pelanggan (menu CRM → Filter Pelanggan) | Superadmin, Kepala Cabang, Admin H1, ADH |
| Cakupan data | Sales: hanya pelanggan yang ia input sendiri; Kepala Cabang, Admin, SPV, ADH: satu cabang; Superadmin: semua cabang |
Admin PDI hanya membaca. Kawil tidak punya hak Pelanggan (alur 10).
Alur satu halaman
Tambah Pelanggan (nama + no telepon) -> Ubah: lengkapi 12 field -> skor 100% -> boleh Transaksi
\-> Keluarga (tgl lahir) -> Filter Pelanggan (umur keluarga)
Kategori: Prospek (belum transaksi) / Aktif (transaksi <= 12 bulan) / Lama (> 12 bulan)
1. Melihat daftar Pelanggan
Role: Sales (Budi Santoso)
- Login, buka CRM → Pelanggan.
- Kolom: Nama Lengkap, No Telepon, NIK, Cabang, Tgl Input, Kategori, Kelengkapan.
- Prospek = belum pernah bertransaksi, Aktif = transaksi terakhir dalam 12 bulan, Lama = transaksi terakhir lebih dari 12 bulan. Transaksi batal tidak dihitung.
- Sales hanya melihat pelanggan yang ia input sendiri. Pencarian memakai nama, no telepon, atau NIK; filter kategori ada di sebelahnya.

2. Tambah Pelanggan
Role: Sales (Budi Santoso)
- Tekan Tambah Pelanggan.
- Isi Nama Lengkap dan No Telepon; hanya keduanya yang wajib untuk menyimpan. Field lain (Nama STNK, NIK, Email, Alamat, Kecamatan, Kelurahan / Desa, Kabupaten / Kota, Pekerjaan, Bidang Usaha, Instansi) bertanda "Wajib untuk transaksi"; isi "-" bila memang tidak ada. Nama Penanggung Kredit opsional.
- Tekan Simpan. Pelanggan baru muncul di daftar sebagai Prospek dengan kelengkapan 17% (2 dari 12 field).


3. Pelanggan unik per cabang (penolakan duplikat)
Role: Sales (Budi Santoso)
No telepon dan NIK harus unik dalam satu cabang. Saat menyimpan, server menolak dan pesan muncul di bawah kolom yang bentrok:
- No telepon
081200000001(milik Slamet Riyadi): "No telp 081200000001 sudah terdaftar oleh sales Budi Santoso". - NIK
3374010101800001: "NIK 3374010101800001 sudah terdaftar di cabang ini".


4. Ubah Pelanggan dan meter kelengkapan
Role: Kepala Cabang (Dewi Lestari); Admin H1, SPV, ADH, dan Sales juga boleh mengubah
- Di daftar tekan Ubah pada baris pelanggan (di demo: Wahyu Nugroho).
- Kartu Kelengkapan data menampilkan skor (17%) dan daftar field yang belum diisi: Nama STNK, NIK, Email, Alamat, Kecamatan, Kelurahan / Desa, Kabupaten / Kota, Pekerjaan, Bidang Usaha, Instansi. Teksnya: "Transaksi baru ditolak sampai data lengkap."
- Isi field yang kosong, tekan Simpan. Setelah semua terisi kartu menunjukkan 100% dan "Data lengkap, siap untuk transaksi." (terlihat di gambar alur 5).

5. Anggota Keluarga
Role: Admin H1 (Rina Marlina)
- Buka Ubah pelanggan, gulir ke bagian Keluarga (urut dari yang tertua).
- Tekan Tambah Keluarga. Isi Nama, Tanggal Lahir, Hubungan (Suami, Istri, Anak, Orang Tua, Saudara, Lainnya). Tanggal lahir dipakai filter umur di Filter Pelanggan.
- Tekan Simpan; baris tampil dengan tombol Ubah dan Hapus.


6. Sales hanya melihat cabang sendiri
Role: Sales Cabang B (Joko Prasetyo), Sales Cabang A (Budi Santoso)
- Sales Cabang B hanya melihat pelanggan cabangnya (Siti Rahmawati).
- Bila Sales Cabang A membuka alamat pelanggan Cabang B, jawabannya "tidak ditemukan" (keberadaan datanya tidak dibocorkan).


7. Admin PDI hanya membaca
Role: Admin PDI (Agus Salim)
Admin PDI melihat seluruh pelanggan cabangnya, tetapi tombol Tambah Pelanggan dan Ubah tidak ada.

8. Filter Pelanggan
Role: Kepala Cabang (Dewi Lestari); Admin H1, ADH, Superadmin juga boleh
- Buka CRM → Filter Pelanggan.
- Isian: Kecamatan, Kabupaten / Kota, Pekerjaan, Bidang Usaha (teks, dicocokkan persis tanpa membedakan huruf besar/kecil), Kategori, dan rentang umur anggota keluarga (Umur keluarga dari – Sampai umur). Superadmin juga mendapat pilihan Cabang.
- Hasil tampil langsung, dengan jumlah ("2 pelanggan cocok"). Reset filter mengosongkan semua.
- Rentang umur dihitung terhadap tanggal hari ini; pelanggan cocok bila minimal satu anggota keluarganya berumur dalam rentang.
- Bila umur awal lebih besar dari umur akhir, pencarian tidak dijalankan dan muncul keterangan merah.

Kecamatan = Semarang Tengah:

Kategori = Aktif:

Umur keluarga 10 sampai 18 (anak Slamet 10 tahun, anak Dewi 17 tahun, anak Wahyu 12 tahun):

Rentang terbalik:

9. Role tanpa hak Filter Pelanggan
Role: Sales (Budi Santoso)
Menu Filter Pelanggan tidak ada di sidebar Sales. Bila alamat /filter-pelanggan diketik manual, halaman menjawab "Tidak diizinkan".

10. Role lain yang ditolak
Role: Kawil (Bambang Sutrisno), SPV (Yusuf Hidayat)
- Kawil membuka
/pelanggan(diketik manual): "Tidak diizinkan". Kawil tidak punya hak melihat Pelanggan. - SPV membuka
/filter-pelanggan: "Tidak diizinkan". SPV boleh Pelanggan tetapi tidak Filter Pelanggan.


Catatan
- Data demo ada di database
tirto_demo2_e2e. Pelanggan Aktif/Lama dibuat lewat API; untuk Lama, tanggal transaksi digeser 14 bulan ke belakang langsung di database (aplikasi selalu mencatat transaksi pada hari ini). - Skrip:
_tools/pelanggan.mjs.