think
16px
820px

Blackbox Testing — Merger PT (Peleburan + Penggabungan) (PT)

  • Domain: PT
  • Fitur: Merger PT (dua sub-alur: Peleburan/Konsolidasi dan Penggabungan/Absorpsi)
  • Role/aktor: notaris (input & pengajuan), verifikator_pt (verifikasi bertahap), admin (akses menyeluruh)
  • Tanggal uji: 2026-08-19
  • Penguji (sesi): Supervisor PT (sub-supervisor Merger)
  • Build/commit: 63c40a17

1. Ringkasan fitur

Merger PT memproses akta merger dan terpecah di UI menjadi dua sub-alur. Peleburan (Konsolidasi, UUPT Ps.122 jo. Ps.1(10), SABH id_aksi 35) membentuk satu PT baru dari minimal dua PT yang meleburkan diri, sehingga aktanya berisi anggaran dasar PT baru bergaya pendirian dan seluruh kerja registri ada di sisi PT sumber (multi-source lookup). Penggabungan (Merger/Absorpsi, SABH id_aksi 11) adalah satu PT survivor yang menyerap PT lain, sehingga aktanya berbentuk perubahan atas anggaran dasar survivor dan menumpang pipeline serta halaman perubahan. Keduanya bertahap lewat verifikator (membuat VerifikasiPerubahan dengan status MENUNGGU_VERIFIKATOR setelah notaris menekan Kirim) dan memakai kuorum kehadiran RUPS kategori Ps.89 (ke-1 minimal 3/4, ke-2 minimal 2/3). Hasil akhir yang diharapkan: data terekstraksi, PT sumber teridentifikasi di SABH, validasi berjalan, lalu permohonan masuk antrean verifikator.

2. Full workflow

2.1 Diagram state

stateDiagram-v2 [*] --> CREATED CREATED --> EXTRACTING: POST /start state Peleburan { EXTRACTING --> AWAITING_COMPANY_SELECTION: ada baris PT sumber PENDING/AWAITING AWAITING_COMPANY_SELECTION --> VALIDATING_P: semua baris resolved (continueFlow) EXTRACTING --> VALIDATING_P: semua baris auto-resolved VALIDATING_P --> READY_P READY_P --> COMPLETED_P: submit (section approved + FAIL gate lolos/override) COMPLETED_P --> MENUNGGU_VERIFIKATOR_P: VerifikasiPerubahan dibuat serentak } state Penggabungan { EXTRACTING --> VALIDATING_G: company lookup survivor (single-company) VALIDATING_G --> READY_G READY_G --> COMPLETED_G: submit (appearing sections approved, TANPA FAIL gate) COMPLETED_G --> MENUNGGU_VERIFIKATOR_G: VerifikasiPerubahan dibuat serentak } MENUNGGU_VERIFIKATOR_P --> DECISION MENUNGGU_VERIFIKATOR_G --> DECISION DECISION --> COMPLETED_FINAL: verifikator APPROVE DECISION --> PERBAIKAN: REVISE DECISION --> REJECTED: REJECT COMPLETED_FINAL --> [*]

2.2 Sequence (aktor - sistem)

sequenceDiagram actor N as Notaris actor V as Verifikator PT participant BE as Backend :47014 N->>BE: Unggah akta merger + start BE->>BE: ekstraksi + (Peleburan) resolvePeleburanSources / (Penggabungan) company lookup survivor BE->>BE: hooks.afterAktaExtraction ekstrak PT sumber -> PeleburanSourcePt N->>BE: (Peleburan) kelola PT sumber: add/edit/select/acuan + kehadiran + koran N->>BE: setujui bagian wajib (section approvals) N->>BE: POST submit BE->>BE: Peleburan: checkFailGate (block-with-override) · Penggabungan: hanya cek appearing sections BE->>BE: status COMPLETED + VerifikasiPerubahan MENUNGGU_VERIFIKATOR (satu transaksi) V->>BE: buka antrean verifikator, putuskan APPROVE/REJECT/REVISE BE-->>N: status akhir

2.3 Peta route & UI

Langkah Route Komponen Elemen interaktif utama Selector
Unggah & klasifikasi /klasifikasi KlasifikasiPage file input, koreksi jenis (userOverride) tambah-dokumen-input
Ekstraksi Peleburan /peleburan/:id/extraction PeleburanExtractionPage auto-start (tanpa testid)
Tinjauan Peleburan /peleburan/:id/review PeleburanReviewPage panel PT Sumber (Kelola/Acuan RUPS), kehadiran, koran, tombol "Kirim ke Verifikator" (tanpa testid, lihat OBS-1)
Status Peleburan /peleburan/:id/status PeleburanStatusPage ringkasan (tanpa testid)
Verifikator Peleburan /verifikator/peleburan/:id VerifikatorPeleburanReviewPage Setujui/Tolak/Revisi (perlu cek)
Ekstraksi Penggabungan /perubahan/:id/extraction PerubahanExtractionPage auto-start (tanpa testid)
Tinjauan Penggabungan /perubahan/:id/review PtPerubahanReviewPageV2 (isMerger) konfirmasi field, atestasi/seksi, panel validasi, tombol Kirim (tanpa testid)
Verifikator Penggabungan /verifikator lalu /verifikator/review/:id VerifikatorDashboardPage, VerifikatorReviewPage Setujui/Tolak/Revisi (perlu cek)

Catatan routing Penggabungan (temuan): tidak ada route /penggabungan khusus. Klasifikasi mendeteksi label "penggabungan", membuat submission PENGGABUNGAN_PT (submission-type-inference.ts:167), lalu KlasifikasiPage mengarahkan ke /perubahan/:id/extraction (KlasifikasiPage.tsx:831-834). flowBasePath memetakan PENGGABUNGAN_PT ke base "perubahan" (destination-for.ts:45-47) dan PtPerubahanReviewPageV2 merender mode merger (isMerger, PtPerubahanReviewPageV2.tsx:258). Jadi Penggabungan sepenuhnya dapat dijalankan lewat UI, bukan gap.

3. Prasyarat & data uji

ID data Tipe Berkas Deskripsi Ekspektasi sistem
D-POS-PEL Positive real-intake/pt/peleburan/4022011252102865_AKTA-PENDIRIAN-PT-DANA-MASTER-LOTARA (1).pdf Akta born-digital 32 halaman (judul "Akta Pendirian"), dipakai sebagai pembawa deed; klasifikasi dikoreksi ke AKTA_PELEBURAN (userOverride) READY sebagai PELEBURAN_PT; roster pemegang saham PT baru terekstrak; 0 PT sumber (deed ini bukan akta peleburan sebenarnya) sehingga MIN_SOURCES FAIL
D-POS-PGB Positive (berkas sama, userOverride AKTA_PENGGABUNGAN) Pembawa deed diklasifikasikan ke AKTA_PENGGABUNGAN READY sebagai PENGGABUNGAN_PT; menumpang review perubahan; kuorum WARNING dari recital akta
D-SCAN-PGB Positive real-intake/pt/merger/...AKTA-PENDIRIAN-DAN-AKTA-PERUBAHAN...pdf Scan 129 halaman, OCR sangat berat Tidak diuji OCR penuh sesi ini (berat/berisiko timeout), didokumentasikan dari kode + probe ringan
D-SRC Sintetis input manual panel PT sumber Nama PT sumber diketik manual (add source) resolvePeleburanSources melakukan lookup SABH; nama real cocok dan mengembalikan status blokir/registri
Kuorum-neg Negative recital kehadiran pada deed Kehadiran RUPS di bawah 3/4 (Ps.89) RUPS_ATTENDANCE_QUORUM WARNING (bukan FAIL)

4. Matriks skenario uji

ID Tipe Lapisan Langkah ringkas Ekspektasi Hasil aktual Status Bukti
TC-01 Positive API Drive D-POS-PEL ke terminal type PELEBURAN_PT, READY Sesuai: PELEBURAN_PT, READY; counts FAIL 1 / SKIPPED 21 / PASS 3 PASS probe-peleburan
TC-02 Aturan API Peleburan tanpa PT sumber PELEBURAN_MIN_SOURCES FAIL (deed sudah terekstrak) Sesuai: FAIL "Tidak ada PT sumber teridentifikasi ... minimal 2" PASS probe-peleburan
TC-03 Aturan API Tambah 1 PT sumber MIN_SOURCES tetap FAIL "baru 1 sumber", ACUAN SKIPPED Sesuai persis PASS probe-neg2
TC-04 Aturan API Tambah 2 PT sumber (nama real) MIN_SOURCES PASS; SOURCE_RESOLVED PASS; lookup SABH mengembalikan status Sesuai: PASS + baris AUTO_SELECTED, status blokir terisi PASS probe-sources
TC-05 Aturan API Cek blokir PT sumber PELEBURAN_SOURCE_BLOKIR FAIL bila terblokir Sesuai: FAIL, menyebut alasan blokir SABH tiap baris PASS probe-sources
TC-06 Aturan API Tetapkan acuan RUPS 1 baris PELEBURAN_ACUAN_RUPS PASS Sesuai: PASS "#1 PT SUMBER SATU MANDIRI" PASS probe-sources
TC-07 Aturan API Isi tanggal RUPS + koran deed PELEBURAN_KORAN_WINDOW FAIL bila koran kurang dari 30 hari sebelum RUPS Sesuai: FAIL "hanya -73 hari sebelum RUPS paling awal" PASS probe-sources
TC-08 Aturan API Kuorum Peleburan tanpa BA RUPS RUPS_ATTENDANCE_QUORUM SKIPPED Sesuai: SKIPPED "Belum ada Berita Acara RUPS" (centang kehadiran deed tidak dihitung tanpa BA RUPS, lihat OBS-3) PASS probe-sources
TC-09 Gate API Submit Peleburan tanpa approve seksi 400 SECTIONS_UNAPPROVED Sesuai: 400 "Semua bagian wajib harus disetujui" PASS probe-sources
TC-10 Gate API Submit Peleburan saat masih ada FAIL 422 VALIDATION_FAILED dengan daftar failing Sesuai: 422 failing [PELEBURAN_KORAN_WINDOW, PELEBURAN_SOURCE_BLOKIR] PASS probe-sources
TC-11 Gate API Override 2 FAIL lalu submit 200 COMPLETED + VerifikasiPerubahan MENUNGGU_VERIFIKATOR Sesuai persis; verifikasi row terbuat PASS probe-sources
TC-12 State API Add source setelah COMPLETED 409 WRONG_STATUS Sesuai: 409 "submission cannot be edited in its current status" PASS probe-neg
TC-13 State API Submit ulang setelah COMPLETED 409 WRONG_STATUS Sesuai: 409 "status is COMPLETED, expected READY" PASS probe-neg
TC-14 Guard API Pilih kandidat yang tidak ada di lookup baris 422 INVALID_SELECTION Sesuai: 422 "Kandidat tidak sesuai dengan hasil pencarian SABH untuk baris ini" PASS probe-neg2
TC-15 Guard API review-data pada id tak dikenal 404 Sesuai: 404 "Submission not found" PASS probe-neg
TC-16 Guard API Endpoint peleburan pada submission Penggabungan 400 "Not a Peleburan PT submission" Sesuai persis PASS probe-pgb2
TC-17 Positive API Drive D-POS-PGB ke terminal type PENGGABUNGAN_PT, READY, menumpang perubahan Sesuai: PENGGABUNGAN_PT, READY; review generik + perubahan/review-data 200 PASS probe-pgb
TC-18 Aturan API Kuorum Penggabungan (Ps.89) via recital akta RUPS_ATTENDANCE_QUORUM WARNING bila di bawah 3/4 Sesuai: WARNING "Kehadiran RUPS 53.75% (dari akta), belum memenuhi kuorum (min. 75%)" PASS probe-pgb
TC-19 Aturan API Penggabungan tanpa PT sumber di akta PENGGABUNGAN_SOURCES_PRESENT WARNING; SURVIVOR_DISTINCT/SOURCES_SK SKIPPED Sesuai persis PASS probe-pgb
TC-20 Aturan API Jendela tanggal akta Penggabungan AKTA_DATE_WINDOW jendela 30 hari (perubahan) Sesuai: PASS "Tanggal akta 2026-08-13 (6 hari lalu)" PASS probe-pgb3
TC-21 Gate API Submit Penggabungan meski ada PERSEROAN_STATE FAIL (harapan wajar: terblokir/override) Aktual: 200 COMPLETED, FAIL diloloskan (tidak ada FAIL gate di arm ini, lihat BUG-01) FAIL* probe-pgb2
TC-22 Positive UI Deep-link /peleburan/:id/review sebagai notaris Halaman render, tombol Kirim disabled (0 sumber) Sesuai: render, "Kirim ke Verifikator" disabled PASS peleburan-review.png
TC-23 Positive UI Deep-link /perubahan/:id/review (Penggabungan) Halaman render mode merger Sesuai render PASS penggabungan-review.png

*TC-21 ditandai FAIL sebagai ekspektasi keamanan gate, bukan kegagalan sistem menjalankan alur; lihat BUG-01.

5. Cakupan UI

Route/Elemen Diuji? Perilaku benar? Catatan
/klasifikasi unggah + koreksi jenis Ya (API) Ya userOverride mengoreksi klasifikasi ke AKTA_PELEBURAN/AKTA_PENGGABUNGAN; type inference benar
/peleburan/:id/extraction Ya (navigasi) Ya Auto-start
/peleburan/:id/review render Ya Ya Panel PT Sumber + kehadiran + koran + tombol Kirim
Tombol "Kirim ke Verifikator" Peleburan (gate) Ya Ya Disabled saat FAIL/seksi belum lengkap; tanpa data-testid (OBS-1)
Panel Kelola PT Sumber / Acuan RUPS Sebagian (API penuh, UI render) Ya Add/edit/select/acuan/delete diuji via API; interaksi dialog UI belum diklik end-to-end
/perubahan/:id/review (Penggabungan, isMerger) Ya Ya Menumpang halaman perubahan
Panel verifikator Peleburan (/verifikator/peleburan/:id) Tidak (UI) - Route + komponen ada; didokumentasikan dari kode, belum didorong end-to-end
Panel verifikator Penggabungan (/verifikator/review/:id) Tidak (UI) - Menumpang verifikator perubahan
Interstitial AWAITING_COMPANY_SELECTION Peleburan Tidak (UI) - Terpicu saat ada baris PENDING; diuji via API (resolve loop), tidak dipaksa di UI

6. Temuan bug & perbaikan

ID bug Severity Ringkas Reproduksi Ekspektasi Aktual Screenshot Rekomendasi
BUG-01 Med Submit Penggabungan/Akuisisi tidak menjalankan FAIL gate Buat PENGGABUNGAN_PT dengan PERSEROAN_STATE FAIL (survivor terblokir), submit Submit tertahan sampai FAIL diselesaikan atau di-override (seperti Peleburan) 200 COMPLETED, FAIL diloloskan tanpa override (perubahan.ts:1256-1322 hanya cek appearing sections) penggabungan-review.png Samakan dengan Peleburan: jalankan checkFailGate (block-with-override) pada arm AKUISISI/PENGGABUNGAN sebelum COMPLETED; PERSEROAN_STATE terblokir seharusnya menahan pengajuan
OBS-1 Low Tombol Kirim Peleburan tanpa testid Buka review Peleburan Selector stabil untuk uji Button biasa "Kirim ke Verifikator" tanpa data-testid peleburan-review.png Tambah data-testid="peleburan-submit-button" (samakan pola dengan pt-finalize-button)
OBS-2 Low Submit Penggabungan langsung COMPLETED saat tidak ada jenis terdeteksi Deed tanpa jenis PAD/PPAD/NONPAD Idealnya ada minimal satu konfirmasi/atestasi akMissing kosong sehingga langsung COMPLETED (perubahan.ts:1273-1279) probe-pgb2 Pertimbangkan minimal satu konfirmasi wajib untuk Penggabungan agar tidak lolos tanpa tinjauan seksi
OBS-3 Info Centang kehadiran deed Peleburan tidak menghitung kuorum tanpa BA RUPS Isi kehadiran pemegang saham lalu cek RUPS_ATTENDANCE_QUORUM Kuorum ikut dihitung dari centang Tetap SKIPPED "Belum ada Berita Acara RUPS"; rule hanya menghitung roster deed saat hasBaRupsDoc=true (rups-quorum.ts:67, pt-akta-context.ts:407/428) probe-sources Bukan bug: PELEBURAN_RUPS_PER_SOURCE adalah surface RUPS utama Peleburan. Bila kuorum deed-only diinginkan, longgarkan syarat hasBaRupsDoc atau isi recital aktaKehadiranRatio

7. Ringkasan & rekomendasi

  • Total skenario: 23 (PASS 22 / FAIL 1). TC-21 (FAIL gate Penggabungan) ditandai FAIL sebagai ekspektasi keamanan, terkait BUG-01.
  • Cakupan UI: render kedua sub-alur + gate Peleburan teruji lewat Playwright; panel verifikator dan interstitial company-selection didokumentasikan dari kode.
  • Bug: High 0, Med 1 (BUG-01), Low 2 (OBS-1, OBS-2), 1 info (OBS-3).
  • Sub-alur Peleburan: terminal READY sebagai PELEBURAN_PT. Multi-source lookup berjalan penuh (add/edit/select/acuan/delete), status blokir & registri PT sumber terisi dari SABH, gate submit menjalankan section-approval lalu checkFailGate (block-with-override), submit menghasilkan COMPLETED + VerifikasiPerubahan MENUNGGU_VERIFIKATOR. Kuorum Ps.89 terverifikasi (SKIPPED tanpa BA RUPS pada deed ini).
  • Sub-alur Penggabungan: terminal READY sebagai PENGGABUNGAN_PT, menumpang halaman dan verifikator perubahan (bukan gap). Aturan khusus PENGGABUNGAN_SOURCES_PRESENT/SURVIVOR_DISTINCT/SOURCES_SK berjalan (WARNING-first). Kuorum Ps.89 menghasilkan WARNING nyata (kehadiran 53.75% di bawah min 75%) via recital akta. Gate submit hanya mengecek appearing sections dan TIDAK menjalankan FAIL gate (BUG-01).
  • Perbedaan penting antar sub-alur: Peleburan bergaya pendirian PT baru dengan sisi sumber multi-source dan FAIL gate ber-override; Penggabungan bergaya perubahan atas survivor dengan aturan sumber advisory dan submit tanpa FAIL gate. Kuorum keduanya kategori Ps.89.
  • Gap/keterbatasan: alur end-to-end sampai COMPLETED lewat verifikator (putusan APPROVE + kemungkinan voting) belum didorong penuh. Scan 129 halaman (D-SCAN-PGB) tidak di-OCR sesi ini karena berat. Kuorum Peleburan negatif dari BA RUPS nyata belum diuji (deed tidak menyertakan BA RUPS); centang kehadiran deed tidak dihitung tanpa BA RUPS (OBS-3). Rekomendasi lanjutan: siapkan akta peleburan/penggabungan nyata beserta BA RUPS dan bukti pengumuman koran untuk menguji kuorum dan koran-window jalur BA RUPS, serta perbaiki BUG-01 agar Penggabungan sejajar dengan Peleburan.