think
16px
820px

Blackbox Testing - Pendirian PP (PP)

  • Domain: PP
  • Fitur: Pendirian PP (Perseroan Perorangan)
  • Role/aktor: perseroan (input, unggah, tinjau, finalisasi). Tidak ada tahap verifikator untuk Pendirian.
  • Tanggal uji: 2026-08-19
  • Penguji (sesi): Supervisor PP
  • Build/commit: 63c40a17

1. Ringkasan fitur

Pendirian PP mengubah pendaftaran Perseroan Perorangan yang tadinya isi formulir manual menjadi unggah dokumen lalu proses otomatis. Pemohon (role perseroan) mengunggah Surat Pernyataan Pendirian PP beserta KTP dan NPWP pemilik. Sistem menjalankan OCR dan LLM, mengekstrak field perseroan, alamat, identitas pemilik, kontak, KBLI, serta daftar Pemilik Manfaat (Beneficial Owner). Berbeda dengan alur PT, sumbernya adalah Surat Pernyataan (bukan akta notaris) dan ada lapisan atestasi Pemilik Manfaat. Hasil akhir yang diharapkan: submission berstatus COMPLETED dengan paket ekstraksi tervalidasi yang bisa diunduh.

2. Full workflow

2.1 Diagram state

stateDiagram-v2 [*] --> CREATED CREATED --> EXTRACTING: POST /start EXTRACTING --> VALIDATING VALIDATING --> READY: ekstraksi selesai + validasi awal (mode draft) EXTRACTING --> ERROR: dok wajib kurang (KTP/NPWP) atau OCR gagal READY --> READY: edit field / KBLI / BO -> re-validate (mode submission) 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 :47014 participant OCR as OCR/LLM U->>FE: Unggah SP + KTP + NPWP di papan Klasifikasi FE->>BE: POST /api/klasifikasi/upload (per file) U->>FE: klik "Unggah dan Identifikasi Dokumen" FE->>BE: POST /api/klasifikasi/classify/:fileId U->>FE: klik "Lanjut ke Ekstraksi" FE->>BE: POST /api/submissions (files[]) -> type PENDIRIAN_PP FE->>BE: POST /api/submissions/:id/start BE->>OCR: ekstraksi async (SP, KTP, NPWP) BE-->>FE: poll GET /api/submissions/:id/status (READY) U->>FE: Tinjau: perbaiki field FAIL, konfirmasi field/KBLI/BO, setujui pernyataan FE->>BE: PATCH fields, PATCH kbli, POST kriteria/confirm, POST sections/pernyataan/approve U->>FE: klik Finalisasi FE->>BE: POST /api/pp/pendirian/:id/finalize -> COMPLETED U->>FE: Unduh paket FE->>BE: GET /api/pp/pendirian/:id/packet (zip)

2.3 Peta route & UI

Langkah Route Komponen Elemen interaktif utama Selector
Unggah /pp/pendirian/klasifikasi KlasifikasiPage (labelType pendirian_pp) dropzone, kartu file, tombol "Unggah dan Identifikasi Dokumen", "Buat Surat Pernyataan", "Template kosong", "Contoh terisi" input[type=file], tambah-dokumen-input
Papan /pp/pendirian/klasifikasi ClassificationBoard lane per dokumen, override label, tombol "Lanjut ke Ekstraksi" teks tombol
Ekstraksi /pp/pendirian/:id/extraction PendirianExtractionPage progress 0/3, checklist SP/KTP/NPWP, "Tambah Dokumen", "Kembali ke Unggah", "Lanjut ke Tinjauan" teks tombol
Tinjau /pp/pendirian/:id/review PpPendirianReviewPageV2 panel validasi, kartu field + edit + konfirmasi, roster KBLI (edit/konfirmasi), kartu Pemilik Manfaat (kriteria Grup A/B, konfirmasi), checkbox Pernyataan, tombol Finalisasi kartu atestasi, pernyataan-progress
Selesai /pp/pendirian/:id/review (COMPLETED) idem Unduh paket -

3. Prasyarat & data uji

Data nyata: e2e/data/real-intake/pp/Pendirian PP/{1 BO, 2 BO} (Surat Pernyataan born-digital + KTP scan + NPWP scan). Semua data nyata bersifat positive; negative diturunkan lewat edit field via API.

ID data Tipe Berkas Deskripsi Ekspektasi sistem
D-PP-1BO Positive maju_jaya_pendirian.pdf + ktp1.jpg + npwp1.jpeg SP 1 pemilik manfaat Ekstraksi lengkap, 1 identity match, siap finalisasi setelah koreksi nama+KBLI
D-PP-2BO Positive maju_jaya_pendirian.pdf + 2 KTP + 2 NPWP SP 2 pemilik manfaat 2 identity match, keduanya name-match
D-PP-SINGLE Positive surat-pernyataan-pendirian-PT-AAA-ANUGRAH.pdf SP tunggal born-digital Lihat temuan klasifikasi (BUG-02)
D-NEG-modal0 Negative edit field modal="0" Modal di bawah rentang PP_MODAL_RANGE FAIL
D-NEG-modalmax Negative edit field modal="6000000000" Modal di atas Rp5 miliar PP_MODAL_RANGE FAIL
D-NEG-email Negative edit field email="bukan-email" Format email salah PP_EMAIL_FORMAT FAIL
D-NEG-telp Negative edit field telepon="12345" Format telepon salah PP_PHONE_FORMAT FAIL
D-NEG-namaPT Negative edit namaPerseroan="PT Coba Coba Sekali" Nama diawali PT PP_NAMA_FILTER FAIL
D-NEG-nama2kata Negative edit namaPerseroan="Ab" Kurang dari 3 kata PP_NAMA_PERSEROAN_RULES FAIL
D-NEG-SPonly Negative hanya SP (tanpa KTP/NPWP) Dokumen wajib kurang Status ERROR (hard stop)

4. Matriks skenario uji

ID Tipe Lapisan Langkah ringkas Ekspektasi Hasil aktual Status Bukti
TC-01 Positive UI+API Unggah D-PP-1BO, klasifikasi, ekstraksi type PENDIRIAN_PP, status READY, 19 rule ter-evaluasi READY dalam ~25 detik; 1 identity match nik=true PASS ui-01..03, pp-pendirian-1bo.log
TC-02 Positive API Koreksi nama (buang PT) + KBLI 47711->47712, konfirmasi semua, setujui pernyataan, finalisasi COMPLETED 200 COMPLETED PASS pp-complete-1bo.log
TC-03 Positive API Unggah D-PP-2BO 2 identity match, PP_BO_IDENTITY_COMPLETE PASS (2 BO) READY, 2 match, keduanya name-match PASS pp-pendirian-2bo.log
TC-04 Positive API Unduh paket submission COMPLETED zip berisi extraction/validation/audit/dokumen zip 7 berkas, dokumen asli ikut PASS packet-1bo.zip
TC-05 Negative API Finalisasi saat pernyataan belum disetujui 409 SECTIONS_NOT_APPROVED 409 code SECTIONS_NOT_APPROVED PASS pp-gate-probe.log
TC-06 Negative API Setujui pernyataan, finalisasi tanpa konfirmasi field 409 HAS_UNCONFIRMED 409 count 30 PASS pp-gate-probe.log
TC-07 Negative API Semua terkonfirmasi tapi KBLI 47711 tak resolve, finalisasi 409 HAS_FAIL [PP_KBLI_RESOLVE] 409 failing PP_KBLI_RESOLVE PASS pp-gate-probe.log
TC-08 Negative API Set kriteria BO campur grup [216,242] 400 PP_BO_KRITERIA_VALID 400 "tidak boleh dicampur" PASS probe log
TC-09 Negative API Set kriteria BO id tak dikenal [999] 400 PP_BO_KRITERIA_VALID 400 "Kriteria tidak dikenal: 999" PASS probe log
TC-10 Negative API Edit NIK BO yang sudah match dokumen 409 BO_IDENTITY_LOCKED 409 BO_IDENTITY_LOCKED PASS probe log
TC-11 Negative API Edit field BO non-allowlist (isFounder) 400 field not editable 400 "field not editable: isFounder" PASS probe log
TC-12 Negative API Hapus BO pendiri (founder) 400 CANNOT_DELETE_FOUNDER 400 CANNOT_DELETE_FOUNDER PASS probe log
TC-13 Negative API Konfirmasi BO id tidak ada 404 not found 404 "Pemilik Manfaat entry not found" PASS probe log
TC-14 Negative API Edit modal="0" dan "6000000000" PP_MODAL_RANGE FAIL keduanya FAIL "di luar rentang" PASS pp-field-neg.log
TC-15 Negative API Edit email="bukan-email" PP_EMAIL_FORMAT FAIL FAIL "Format email tidak valid" PASS pp-field-neg.log
TC-16 Negative API Edit telepon="12345" PP_PHONE_FORMAT FAIL FAIL "harus berformat 08.../62.../+62..." PASS pp-field-neg.log
TC-17 Negative API Edit namaPerseroan="PT ..." PP_NAMA_FILTER FAIL FAIL "tidak boleh diawali PT" PASS pp-field-neg.log
TC-18 Negative API Edit namaPerseroan="Ab" PP_NAMA_PERSEROAN_RULES FAIL FAIL "minimal 3 kata" PASS pp-field-neg.log
TC-19 Negative API Unggah hanya SP (tanpa KTP) ERROR "KTP pemilik wajib" ERROR persis PASS pp-intake-neg.log
TC-20 Negative API Unggah SP+KTP (tanpa NPWP) ERROR "NPWP pemilik wajib" ERROR persis PASS pp-intake-neg.log
TC-21 Negative API Unggah KTP+NPWP tanpa SP bukan PENDIRIAN_PP inferSubmissionType -> PENDIRIAN_PT lalu ERROR PASS (lihat BUG-04) pp-intake-neg.log
TC-22 Positive UI Papan sampai halaman ekstraksi via UI navigasi Unggah -> Ekstraksi, checklist 3 dok tercapai, screenshot PASS ui-02a/02b/03
TC-23 Positive UI Halaman Tinjau menampilkan semua seksi + panel validasi + Finalisasi seksi Data/Alamat/Identitas/KBLI/Pemilik Manfaat/Pernyataan tampil tampil lengkap PASS ui-05-review-direct
TC-24 Negative API Mutasi field setelah COMPLETED ditolak terkunci 409/lock SUBMISSION_LOCKED PASS terminal probe

Ringkasan validasi pada data nyata (mode draft, sebelum koreksi): 14 PASS, 2 FAIL (PP_NAMA_FILTER karena nama SP "PT MAJU JAYA PEROERANGAN", PP_KBLI_RESOLVE karena kode 47711), 1 WARNING (PP_NIK_FORMAT terbaca 15 digit), 1 SKIPPED (PP_DECLARATIONS_PRESENT), sisanya PASS. PP_BO_KRITERIA_VALID SKIPPED di mode draft dan ter-evaluasi (PASS) di mode submission - sesuai desain.

5. Cakupan UI (semua yang diakses user)

Route/Elemen Diuji? Perilaku benar? Catatan
/pp/pendirian/klasifikasi dropzone + intake Ya Ya 3 file terunggah, kartu preview tampil
Tombol "Unggah dan Identifikasi Dokumen" Ya Ya Menjalankan klasifikasi
Papan klasifikasi (lane per dok) Ya Ya SP/KTP/NPWP terpetakan
Tombol "Lanjut ke Ekstraksi" Ya Ya Membuat submission + navigasi
"Buat Surat Pernyataan" / Template / Contoh Sebagian Ya (endpoint) Endpoint template-surat & contoh-surat 200 (belum tekan tombol UI)
/pp/pendirian/:id/extraction progress+checklist Ya Ya 0/3 lalu naik; "Tambah Dokumen", "Kembali ke Unggah" hadir
Tombol "Lanjut ke Tinjauan" Ya Ya disabled saat masih ekstraksi
/pp/pendirian/:id/review seksi field + edit Ya Ya edit + konfirmasi berjalan
Roster KBLI (edit kode, konfirmasi) Ya Ya edit 47711->47712 re-resolve
Kartu Pemilik Manfaat (kriteria Grup A/B, konfirmasi) Ya Ya kriteria + confirm
Checkbox Pernyataan (atestasi) + progress Ya Ya gate approval pernyataan
Tombol Finalisasi (gate) Ya Ya 3 gate berlapis
Unduh paket (COMPLETED) Ya Ya zip valid

6. Temuan bug & perbaikan

ID bug Severity Ringkas Reproduksi Ekspektasi Aktual Screenshot Rekomendasi perbaikan
BUG-01 Med Master KBLI dev_4 tidak memuat kode 47711 (tetangga 47712/47713/47714 ada) Unggah SP dengan KBLI 47711; jalankan validasi Kode KBLI 2020 yang sah lolos resolve PP_KBLI_RESOLVE FAIL "Kode KBLI tidak dikenali: 47711" pp-pendirian-1bo.log Re-seed tabel m_kbli ke KBLI 2020 lengkap; aturan validasi sendiri sudah benar (menolak kode yang tidak ada di master). Sifatnya data/lingkungan, bukan logika aplikasi
BUG-02 Med Classifier tidak konsisten pada Surat Pernyataan Pendirian PP Unggah surat-pernyataan-pendirian-PT-AAA-ANUGRAH.pdf lewat smoke Terklasifikasi SURAT_PERNYATAAN_PENDIRIAN_PP Terklasifikasi BUKTI_TRANSFER-SURAT_PERNYATAAN_SETOR (conf 0.9999). SP maju_jaya justru benar smoke-pp-single.log Di lane pinned pendirian_pp, paksa label SP ke SURAT_PERNYATAAN_PENDIRIAN_PP atau perbaiki contoh latih classifier. User masih bisa override manual, jadi tidak memblokir
BUG-03 Low PP_DECLARATIONS_PRESENT SKIPPED saat model OCR tidak mengekstrak 3 pernyataan Unggah SP nyata; lihat validationResults Idealnya memverifikasi teks pernyataan ada SKIPPED "Pernyataan tidak diekstrak oleh model OCR kustom" review-engine-1bo.json Atestasi tetap dijamin oleh gate approval "pernyataan" (3 checkbox), jadi risiko rendah. Pertimbangkan menandai eksplisit bahwa verifikasi teks pernyataan dilewati
BUG-04 Low KTP+NPWP tanpa SP diam-diam disimpulkan PENDIRIAN_PT lalu ERROR POST /api/submissions dengan hanya KTP+NPWP Ditolak sebagai bukan Pendirian PP yang valid type PENDIRIAN_PT, ERROR "Akta Pendirian tidak ditemukan" pp-intake-neg.log Di UI dicegah oleh checklist dokumen wajib (SP required), jadi user biasa tidak mengalaminya. Pertimbangkan pesan lebih jelas pada lane pinned bila SP hilang

Catatan: tidak ada bug High. Alur inti Pendirian PP berjalan penuh sampai COMPLETED dan paket valid.

7. Ringkasan & rekomendasi

  • Total skenario: 24 (PASS 24 / FAIL 0). Semua gate finalisasi, aturan validasi (positive dan negative), serta CRUD Pemilik Manfaat tercakup.
  • Cakupan UI: 13/13 kelompok elemen diuji (happy path end-to-end via papan sampai ekstraksi, plus halaman Tinjau lengkap).
  • Bug: High 0, Med 2 (BUG-01 master KBLI, BUG-02 classifier SP), Low 2 (BUG-03 pernyataan SKIPPED, BUG-04 inferensi tanpa SP).
  • Rekomendasi prioritas: (1) re-seed master KBLI agar kode sah tidak ter-flag; (2) kunci label SP pada lane pinned pendirian_pp supaya klasifikasi tidak menyesatkan user.
  • Gap/keterbatasan: negative case diturunkan lewat edit field (data nyata semuanya positive). Klik tombol "Buat Surat Pernyataan"/Template/Contoh di UI belum ditekan langsung (endpoint sudah diverifikasi 200). OCR cepat (~20-25 detik/submission) sehingga cakupan API luas bisa dijalankan.