Blackbox Testing — Ringkasan Domain PT
- Domain: PT (Perseroan Terbatas)
- Cakupan: 8 fitur wajib, semua selesai diuji dan didokumentasikan
- Tanggal: 2026-08-19
- Penguji: Supervisor PT (1 sesi lead + 6 sub-sesi per fitur)
- Build/commit: 63c40a17
- Lapisan uji: API (backend :47014) + UI Playwright (frontend :47024). Harness di
e2e/(helperdriveToReadydan spec per fitur). Bukti die2e/artifacts/<fitur>/.
Daftar laporan per fitur
| # | Fitur | Laporan | Alur | Verifikator | Status happy path |
|---|---|---|---|---|---|
| 1 | Pendirian PT | pt-pendirian.md | terminal self-service | Tidak | COMPLETED (deed dalam jendela + override) |
| 2 | Perubahan PT | pt-perubahan.md | verifikator bertahap + voting | Ya | READY; verifikator didokumentasikan |
| 3 | Perbaikan Data PT | pt-perbaikan.md | custom pipeline + verifikator | Ya | COMPLETED via SK generator |
| 4 | Peralihan PP ke PT | pt-peralihan-pp-pt.md | terminal, finalize sendiri | Tidak | COMPLETED |
| 5 | Pembubaran PT | pt-pembubaran.md | verifikator bertahap | Ya | MENUNGGU_VERIFIKATOR |
| 6 | Merger (Peleburan + Penggabungan) | pt-merger.md | verifikator, multi-sumber | Ya | Peleburan COMPLETED; Penggabungan COMPLETED |
| 7 | Akuisisi PT | pt-akuisisi.md | verifikator + voting | Ya | READY; verifikator jalan |
| 8 | Laporan RUPS Tahunan | pt-laporan-rups.md | terminal self-service, finalize sendiri | Tidak | COMPLETED (2 varian audit) |
Temuan lintas-fitur (prioritas)
Prioritas tinggi
- Fail-gate tidak jalan pada submit Akuisisi dan Penggabungan. Cabang
AKUISISI_PTdanPENGGABUNGAN_PTdibackend/src/routes/perubahan.tssekitar baris 1256 TIDAK memanggilcheckFailGate, sehingga submission bisa menembus ke COMPLETED walau ada rule FAIL yang belum di-override (mis. PERSEROAN_STATE FAIL survivor terblokir, dokumen pendukung wajib belum lengkap). Dua sub-sesi menemukan hal ini secara independen (Akuisisi = High, Penggabungan = Med). Bandingkan Peleburan/Perubahan/Pembubaran/Laporan RUPS yang benar memakai block-with-override. Rekomendasi: jalankancheckFailGatepada cabang tersebut, atau konfirmasikan bila memang by-design bahwa dokumen pendukung dilengkapi setelah verifikator. - Endpoint multipart Perbaikan (
POST /api/perbaikan) gagal end-to-end. Surat Pernyataan tidak di-OCR sebelum ekstraksi LLM (rawText NULL),select-company500, submission tersangkut EXTRACTING. Dampak user kecil karena UI memakai jalur SK generator, tetapi endpoint publik ini terbuka. Rekomendasi: OCR dokumen sebelum ekstraksi pada jalur ini, atau tutup/tandai endpoint.
Prioritas sedang
- Peralihan PP ke PT:
POST /finalizetidak mewajibkan konfirmasi field di server. Deed READY bisa langsung COMPLETED tanpa konfirmasi field; hanya UI yang menahan. Beda dari Pendirian yang cek UNCONFIRMED_FIELDS di server. Rekomendasi: samakan gate server. - Perbaikan: guard FAIL per-bagian di
sections/:fieldKey/approvetidak menyala karena filter membacadetails.correctionIdtop-level padahal disimpan didetails.instances[]. Bukan bypass (gate submit tetap menangkap), tapi UX menyesatkan. - Ekstraksi field akta dari scan pada Laporan RUPS kosong (deed menumpang extractor "perubahan"), sehingga
RUPS_AKTA_FIELDS_PRESENTselalu FAIL dan perlu override; classifier juga tidak mengeluarkan labelLAMPIRAN_*, semua slot lampiran perlu penetapan manual di papan. - Pembubaran: APPROVE awal memicu voting pemegang saham (pindah MENUNGGU_VOTING, ShareholderVote dibuat dari roster SABH) karena route decide dipakai bersama Perubahan. Untuk pembubaran, undangan voting ke pemegang saham bisa tidak semestinya. Perlu konfirmasi desain.
Prioritas rendah / konsistensi
- AKTA_DATE_WINDOW tidak konsisten soal override. Terkunci di Pendirian (kebijakan override men-scope docTypes ke AKTA_PENDIRIAN), tetapi overridable di Perubahan/Pembubaran/lainnya karena scope itu tidak mencakup jenis akta mereka. Perlu keputusan: kunci saat tanggal terverifikasi untuk semua, atau tegaskan legacy-overridable.
- Tombol Kirim/Finalisasi tanpa
data-testiddi hampir semua halaman review kecuali Pendirian (pt-finalize-button). Rekomendasi: konvensi seragam (mis.<fitur>-submit-button) untuk stabilitas uji UI. Halaman extraction juga umumnya tanpa testid stabil. - Teks menyesatkan pada Pembubaran: pesan "maks 30 hari" (akta pembubaran menumpang skema perubahan) dan subtitle verifikator menyebut kuorum Ps.89 padahal kuorum tidak divalidasi untuk pembubaran.
Catatan cakupan aturan
- Kuorum RUPS terverifikasi: kategori adAware pada Perubahan (Ps.86 nonAD lebih dari 1/2; Ps.88 AD minimal 2/3), dan ps89 pada Merger/Akuisisi (ke-1 minimal 3/4, ke-2 minimal 2/3). Menghasilkan WARNING bila di bawah ambang, PASS bila terpenuhi, SKIPPED tanpa data RUPS. Terkonfirmasi TIDAK berlaku untuk Pembubaran dan Laporan RUPS Tahunan (sesuai aturan).
- Jendela tanggal akta: 60 hari untuk Pendirian (UUPT Ps.10, void bila lewat, terkunci), 30 hari untuk keluarga Perubahan/Akuisisi/Penggabungan/Pembubaran (menumpang skema perubahan).
- Data uji negatif NIK (D-NEG-02, akta saja) tidak efektif karena NIK_KTP_AKTA butuh dokumen KTP pembanding; sudah dibuktikan dengan paket akta + KTP (match PASS, mismatch FAIL). Rekomendasi regenerasi data uji negatif jadi paket multi-dokumen.
Keterbatasan
- Jalur verifikator penuh sampai COMPLETED (termasuk voting pemegang saham dan tahap final) didokumentasikan dari kode dan diuji sampai titik yang bisa dijangkau; tidak seluruh alur multi-tahap didorong end-to-end.
- Company lookup ke SABH bersifat read-only dan bergantung data registry nyata; sebagian kasus AWAITING_COMPANY_SELECTION diselesaikan lewat mode manual.
- Scan Penggabungan 129 halaman tidak di-OCR (berat); didokumentasikan sebagai gap.
- Semua tulis uji hanya ke Postgres lokal dev_4. Tidak ada source aplikasi yang diubah.