think
16px
820px

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/ (helper driveToReady dan spec per fitur). Bukti di e2e/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

  1. Fail-gate tidak jalan pada submit Akuisisi dan Penggabungan. Cabang AKUISISI_PT dan PENGGABUNGAN_PT di backend/src/routes/perubahan.ts sekitar baris 1256 TIDAK memanggil checkFailGate, 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: jalankan checkFailGate pada cabang tersebut, atau konfirmasikan bila memang by-design bahwa dokumen pendukung dilengkapi setelah verifikator.
  2. Endpoint multipart Perbaikan (POST /api/perbaikan) gagal end-to-end. Surat Pernyataan tidak di-OCR sebelum ekstraksi LLM (rawText NULL), select-company 500, 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

  1. Peralihan PP ke PT: POST /finalize tidak 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.
  2. Perbaikan: guard FAIL per-bagian di sections/:fieldKey/approve tidak menyala karena filter membaca details.correctionId top-level padahal disimpan di details.instances[]. Bukan bypass (gate submit tetap menangkap), tapi UX menyesatkan.
  3. Ekstraksi field akta dari scan pada Laporan RUPS kosong (deed menumpang extractor "perubahan"), sehingga RUPS_AKTA_FIELDS_PRESENT selalu FAIL dan perlu override; classifier juga tidak mengeluarkan label LAMPIRAN_*, semua slot lampiran perlu penetapan manual di papan.
  4. 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

  1. 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.
  2. Tombol Kirim/Finalisasi tanpa data-testid di 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.
  3. 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.