Blackbox Testing - Perubahan PP (PP)
- Domain: PP
- Fitur: Perubahan PP (Perseroan Perorangan)
- Role/aktor: perseroan (pilih PP, isi/koreksi form, unggah dokumen pendukung, tinjau, finalisasi). Tidak ada tahap verifikator pada build ini.
- Tanggal uji: 2026-08-19
- Penguji (sesi): Supervisor PP
- Build/commit: 63c40a17
1. Ringkasan fitur
Perubahan PP memungkinkan pemilik mengubah data Perseroan Perorangan yang sudah terdaftar. Alurnya berbasis formulir: pemohon memilih PP terdaftar dari registry, memilih satu atau lebih jenis perubahan, lalu melengkapi data. Untuk jenis tertentu ada UploadToAutofill (KTP/NPWP di-OCR untuk mengisi field pemilik baru atau data pemilik). Sistem menghitung diff sebelum-sesudah, memvalidasi, dan setelah 3 gate lolos submission menjadi COMPLETED dengan paket berisi diff. Catatan lingkungan: registry berjalan mode real dengan satu PP nyata (idPtp 952322 "NIR VANA NET"); pengujian memakai PP itu.
2. Full workflow
2.1 Diagram state
stateDiagram-v2
[*] --> CREATED
CREATED --> VALIDATING: POST /start (idPtp + jenis)
VALIDATING --> READY
READY --> READY: edit field / UploadToAutofill / BO CRUD -> re-validate
READY --> COMPLETED: POST /finalize (3 gate lolos)
COMPLETED --> [*]
2.2 Sequence (aktor - sistem)
sequenceDiagram
actor U as perseroan
participant FE as Frontend
participant BE as Backend
participant REG as Registry PP (read-only)
participant OCR as OCR/LLM
U->>FE: Cari & pilih PP terdaftar + centang jenis
FE->>BE: GET /api/pp/perubahan/registry?q=
FE->>BE: POST /api/pp/perubahan/start {idPtp, jenis[]}
BE->>REG: lookupPpById(idPtp) -> snapshot (oldData)
BE-->>FE: READY (carrier terisi nilai lama)
U->>FE: edit field / unggah KTP-NPWP (UploadToAutofill) / kelola BO
FE->>BE: PATCH fields, POST /:id/document, POST /pemilik-manfaat/from-document
BE->>OCR: OCR + autofill (jenis 7/9) atau match BO (jenis 8)
U->>FE: konfirmasi + setujui pernyataan + Finalisasi
FE->>BE: POST /finalize -> COMPLETED
U->>FE: Unduh paket (diff.json)
2.3 Peta route & UI
| Langkah |
Route |
Komponen |
Elemen interaktif utama |
Selector |
| Pilih PP + jenis |
/pp/perubahan |
PpPerubahanSelectPage |
kotak cari, daftar hasil, kartu jenis (1-9), tombol Lanjutkan |
aria-label="Cari PP terdaftar", aria-label={label jenis} |
| Lengkapi data |
/pp/perubahan/:id/extraction |
PpPerubahanFormPage |
field per jenis, dropzone UploadToAutofill, "Lanjutkan ke Tinjau", hint jenis-no-change-hint |
teks tombol |
| Tinjau |
/pp/perubahan/:id/review |
PpPerubahanReviewPageV2 |
kartu diff (Semula/Menjadi), konfirmasi field/KBLI/BO, kriteria BO, checkbox Pernyataan, Finalisasi |
- |
| Selesai |
/pp/perubahan/:id/review |
idem |
Unduh paket |
- |
Jenis perubahan (dari pp-jenis.ts): 1 Nama, 2 Email/Telepon, 3 Alamat Perseroan, 4 KBLI, 5 Modal, 7 Peralihan Pemilik, 8 Pemilik Manfaat, 9 Ubah Data Pemilik. Dokumen pendukung: jenis 7 (Jual-Beli/AJB saham + KTP + NPWP pemilik baru), jenis 8 (KTP/SIM/Paspor + NPWP BO), jenis 9 (KTP + NPWP pemilik), jenis 3 (Surat Domisili). Jenis 1/2/4/5 tanpa dokumen.
3. Prasyarat & data uji
| ID data |
Tipe |
Berkas |
Deskripsi |
Ekspektasi |
| PP-REG |
Prasyarat |
idPtp 952322 "NIR VANA NET" |
PP nyata di registry (pemilik SEBASTIAN MUALIM) |
Bisa dipilih untuk semua jenis |
| D-POS-60 |
Positive |
jual-beli-saham.pdf (synthetic) |
Akta Jual-Beli saham |
Terdeteksi sebagai akta peralihan |
| D-POS-61 |
Positive |
surat-domisili.pdf (synthetic) |
Surat Domisili |
OCR ok (lihat BUG-P1 soal autofill) |
| KTP/NPWP nyata |
Positive |
ktp1/2.jpg, npwp1/2.jpeg |
Dipakai ulang sebagai dokumen pendukung |
Autofill pemilik baru / BO |
4. Matriks skenario uji
| ID |
Tipe |
Lapisan |
Langkah ringkas |
Ekspektasi |
Hasil aktual |
Status |
Bukti |
| TC-01 |
Positive |
API |
Start jenis 2, edit email+telepon, konfirmasi, setujui, finalisasi |
COMPLETED + packet |
PP_CHANGE_NONEMPTY flip PASS, 200 COMPLETED, zip 5 berkas |
PASS |
pp-perubahan-jenis2-packet.zip |
| TC-02 |
Positive |
API |
Start jenis 9, UploadToAutofill KTP+NPWP |
field pemilik terisi dari OCR, NIK tetap |
nama/TTL/alamat terisi BUDI SANTOSO, pemilikNik tidak berubah |
PASS |
log jenis 9 |
| TC-03 |
Correct-guard |
API |
jenis 9 dengan KTP orang berbeda |
NIK immutable + KTP-match FAIL |
PP_PERUBAHAN_NIK_IMMUTABLE PASS, PP_OWNER_DATA_KTP_MATCH FAIL |
PASS |
log jenis 9 |
| TC-04 |
Positive |
API |
Start jenis 7, unggah Jual-Beli+KTP+NPWP |
aturan transfer ter-evaluasi |
DEED_PRESENT PASS, NEW_OWNER_DISTINCT PASS, OLD_OWNER_MATCH FAIL (data sintetis) |
PASS |
log jenis 7 |
| TC-05 |
Negative |
API |
Finalisasi jenis 7 dengan FAIL transfer |
409 HAS_FAIL |
failing [PP_NAMA_KTP_MATCH, PP_TRANSFER_OLD_OWNER_MATCH] |
PASS |
log jenis 7 |
| TC-06 |
Positive |
API |
Start jenis 3 alamat, edit alamat manual, finalisasi |
COMPLETED |
manual edit -> CHANGE_NONEMPTY PASS -> COMPLETED |
PASS |
log jenis 3 |
| TC-07 |
Bug |
API |
jenis 3: unggah Surat Domisili |
alamat ter-autofill dari Domisili |
OCR ok tapi field alamat TIDAK berubah |
FAIL (BUG-P1) |
log jenis 3 |
| TC-08 |
Positive |
API |
Start jenis 8, tambah BO dari KTP+NPWP (WNI) |
BO baru match, identitas lengkap |
BO MOCHAMMAD FARIZ dibuat, PP_BO_IDENTITY_COMPLETE PASS |
PASS |
log jenis 8 |
| TC-09 |
Negative |
API |
jenis 8 from-document tanpa kriteriaIds |
400 kriteria |
400 "Kriteria tidak dikenal: 0" |
PASS |
log jenis 8 |
| TC-10 |
Negative |
API |
jenis 8 WNA unggah KTP |
400 wajib paspor |
400 WNA_REQUIRES_PASSPORT |
PASS |
log jenis 8 |
| TC-11 |
Negative |
API |
Start jenis kosong [] |
400 |
"jenis must be a non-empty number[]" |
PASS |
start-neg |
| TC-12 |
Negative |
API |
Start jenis kontradiktif [7,9] |
400 CONTRADICTORY |
400 dengan pesan tidak bisa bersamaan |
PASS |
start-neg |
| TC-13 |
Negative |
API |
Start idPtp bogus |
404 PP_NOT_FOUND |
404 PP_NOT_FOUND |
PASS |
start-neg |
| TC-14 |
Negative |
API |
Start tanpa idPtp |
400 |
"idPtp is required" |
PASS |
start-neg |
| TC-15 |
Negative |
API |
UploadToAutofill documentType=AKTA |
400 allowlist |
400 "must be one of: KTP, NPWP, SURAT_DOMISILI, JUAL_BELI_PERALIHAN, PASSPORT, KITAS" |
PASS |
log jenis 9 |
| TC-16 |
Negative |
API |
Finalisasi tanpa perubahan apa pun |
terblokir |
gate pernyataan/CHANGE_NONEMPTY blokir |
PASS |
jenis 2 probe |
| TC-17 |
Positive |
UI |
Picker: cari "NIR", tampil hasil + multi-select jenis |
picker berfungsi |
search menampilkan NIR VANA NET, semua jenis + syarat dokumen tampil |
PASS |
ui-01-picker, ui-02-search |
5. Cakupan UI (semua yang diakses user)
| Route/Elemen |
Diuji? |
Perilaku benar? |
Catatan |
/pp/perubahan kotak "Cari PP terdaftar" |
Ya |
Ya |
debounce + hasil registry |
| Daftar hasil PP + pilih |
Ya |
Ya |
NIR VANA NET terpilih |
| Kartu jenis 1-9 multi-select + syarat dokumen |
Ya |
Ya |
label + kebutuhan dokumen tampil |
| Tombol Lanjutkan (gate PP+jenis) |
Ya |
Ya |
disabled sampai valid |
/pp/perubahan/:id/extraction form + UploadToAutofill |
Ya (API) |
Ya |
field edit + dropzone dok |
/pp/perubahan/:id/review diff + konfirmasi + Finalisasi |
Ya (direct-nav) |
Ya |
kartu Semula/Menjadi |
| Kelola BO (tambah dari dokumen, kriteria) |
Ya (API) |
Ya |
WNA/kriteria guard |
6. Temuan bug & perbaikan
| ID bug |
Severity |
Ringkas |
Reproduksi |
Ekspektasi |
Aktual |
Rekomendasi perbaikan |
| BUG-P1 |
Med |
Surat Domisili pada jenis 3 (alamat) tidak meng-autofill field alamat |
Start jenis 3; POST /:id/document documentType=SURAT_DOMISILI |
Field alamat terisi dari hasil OCR Domisili |
Respons ocr:"ok" tetapi field alamat tetap nilai lama; hanya jenis 7/9 (KTP/NPWP) yang autofill (pp-perubahan.ts:306,309). Tidak ada helper fillAddressFromDomisili |
Wire autofill alamat dari Surat Domisili, atau perbarui dokumentasi/PRD bahwa Domisili hanya bukti dan alamat diisi manual. Alur manual sudah berjalan (edit -> COMPLETED) |
| BUG-P2 |
Low |
Perubahan PP tidak punya tahap konfirmasi pemilik maupun verifikator |
Finalisasi jenis apa pun |
Sesuai desain SABH, sebagian jenis butuh konfirmasi/persetujuan |
Finalisasi langsung COMPLETED, sedangkan Perbaikan & Pembubaran punya MENUNGGU_KONFIRMASI |
Selaraskan: bila konfirmasi pemilik diperlukan untuk Perubahan, tambahkan langkah yang sama seperti Perbaikan/Pembubaran. Saat ini sesuai catatan scope "konfirmasi/peralihan deferred" |
Tidak ada bug High. Seluruh jenis dapat diproses; FAIL pada jenis 7/9 adalah perilaku validasi yang benar terhadap data uji yang memang berbeda orang.
7. Ringkasan & rekomendasi
- Total skenario: 17 (PASS 16 / FAIL 1). Yang FAIL adalah TC-07 yang justru menjadi temuan BUG-P1.
- Cakupan UI: 7/7 kelompok elemen (picker penuh via Playwright, form + review via API/direct-nav).
- Bug: High 0, Med 1 (BUG-P1 autofill Domisili), Low 1 (BUG-P2 tanpa konfirmasi/verifikator).
- Rekomendasi prioritas: (1) putuskan apakah Surat Domisili harus autofill alamat lalu wire atau perbaiki dokumentasi; (2) tegaskan kebutuhan tahap konfirmasi untuk Perubahan agar konsisten dengan Perbaikan/Pembubaran.
- Gap/keterbatasan: hanya satu PP nyata (952322) tersedia di registry real; positive finalize untuk jenis 7 (peralihan) dan 9 (owner data) tidak bisa dituntaskan karena butuh KTP orang yang sama dengan pemilik terdaftar - mekanisme autofill dan aturan match sudah terbukti benar, tinggal data yang cocok. UI klik-tembus penuh sampai form dicatat sebagian (picker terbukti; form/review lewat direct-nav).