think
16px
820px

Blackbox Testing — Pendirian PT (PT)

  • Domain: PT
  • Fitur: Pendirian PT
  • Role/aktor: notaris (input & finalisasi), admin (akses menyeluruh). Tidak ada tahap verifikator (flow terminal self-service).
  • Tanggal uji: 2026-08-19
  • Penguji (sesi): Supervisor PT
  • Build/commit: 63c40a17

1. Ringkasan fitur

Pendirian PT memproses Akta Pendirian Perseroan Terbatas beserta dokumen pendukung (KTP, NPWP, bukti setor modal, surat domisili) untuk menghasilkan permohonan pendirian yang terverifikasi. Notaris mengunggah akta lewat papan Klasifikasi, sistem menjalankan OCR dan ekstraksi LLM, lalu menampilkan halaman tinjauan berisi field terekstraksi dan hasil validasi. Notaris mengonfirmasi tiap field dan menuntaskan lewat tombol Finalisasi. Flow ini terminal: begitu difinalisasi, statusnya langsung COMPLETED tanpa antrean verifikator, karena SABH tidak punya tahap verifikator untuk pendirian.

2. Full workflow

2.1 Diagram state

stateDiagram-v2 [*] --> CREATED CREATED --> EXTRACTING: POST /start EXTRACTING --> VALIDATING: OCR + ekstraksi LLM selesai VALIDATING --> READY: aturan validasi dijalankan READY --> COMPLETED: Finalisasi (semua field dikonfirmasi, tidak ada FAIL tersisa) COMPLETED --> [*] EXTRACTING --> ERROR: kegagalan OCR/ekstraksi akta

2.2 Sequence (aktor - sistem)

sequenceDiagram actor N as Notaris participant FE as Frontend participant BE as Backend :47014 participant OCR as OCR/LLM N->>FE: Unggah akta di /klasifikasi FE->>BE: POST /api/klasifikasi/upload FE->>BE: POST /api/klasifikasi/classify/:fileId BE->>OCR: OCR halaman + klasifikasi OCR-->>BE: AKTA_PENDIRIAN (conf 0.98) FE->>BE: POST /api/submissions (infer PENDIRIAN_PT) FE->>BE: POST /api/submissions/:id/start BE->>OCR: ekstraksi field akta (async) BE->>BE: derive checklist + jalankan validasi FE->>BE: GET /api/submissions/:id/review-data (poll) N->>FE: Konfirmasi tiap field, override FAIL bila perlu FE->>BE: POST /documents/:docId/fields/confirm N->>FE: Klik Finalisasi FE->>BE: POST /api/submissions/:id/review/finalize BE-->>FE: { status: COMPLETED }

2.3 Peta route & UI

Langkah Route Komponen Elemen interaktif utama Selector
Unggah & klasifikasi /klasifikasi KlasifikasiPage dropzone/file input, kartu akta tunggal input[type=file], single-akta-card
Ekstraksi (step 2) /pendirian/:id/extraction PendirianExtractionPage auto-start pipeline, progres (tanpa testid stabil)
Tinjauan (step 3) /pendirian/:id/review PtPendirianReviewPageV2 konfirmasi field, panel validasi, tombol Finalisasi, banner selesai pt-finalize-button, pendirian-pt-completed-banner
Status (step 4) /pendirian/:id/status SubmissionStatusPage ringkasan status (tanpa testid stabil)

3. Prasyarat & data uji

ID data Tipe Berkas Deskripsi Ekspektasi sistem
D-POS-01 Positive PT__pendirian__positive__D-POS-01__akta-valid.pdf Akta corpus VIRTUE DIGITAL INDONESIA (deed 2020) Ekstraksi lolos (READY); finalisasi terblokir karena deed 2020 sudah void + nama terpakai + dokumen kurang
D-POS-01F Positive (variasi) dibuat runtime D-POS-01 dengan tanggal digeser + nama diganti Membuktikan AKTA_DATE_WINDOW dihitung dari tanggal, NAMA_TERSEDIA dari nama
D-TERMINAL Positive dibuat runtime Deed dalam jendela 60 hari + nama unik Finalisasi sampai COMPLETED
D-NEG-01 Negative PT__pendirian__negative__D-NEG-01__akta-expired.pdf Semua tanggal mundur 40 tahun AKTA_DATE_WINDOW FAIL
D-NEG-02 Negative PT__pendirian__negative__D-NEG-02__nik-mismatch.pdf Semua NIK di akta dikorupsi (akta saja) TIDAK efektif: NIK_KTP_AKTA tetap SKIPPED tanpa KTP (lihat temuan)
D-KTP-A Positive akta + ktpPdf NIK 3172012204810007 KTP cocok roster NIK_KTP_AKTA PASS
D-KTP-B Negative akta + ktpPdf NIK 9999... nama WILLY ANWAR KTP nama cocok, NIK beda NIK_KTP_AKTA FAIL

Bukti tersimpan di e2e/artifacts/pendirian/ (results.json + screenshot UI).

4. Matriks skenario uji

ID Tipe Lapisan Langkah ringkas Ekspektasi Hasil aktual Status Bukti
TC-01 Positive API Unggah D-POS-01, klasifikasi, submission, start, poll Terklasifikasi AKTA_PENDIRIAN (0.98), type PENDIRIAN_PT, status READY, field terekstraksi Sesuai: READY, 13 field akta, 35 hasil validasi PASS artifacts/pendirian/results.json
TC-02 Positive UI Klasifikasi akta tunggal lalu navigasi Masuk ke /pendirian/:id/extraction atau kartu akta muncul Sesuai PASS ui-intake.png
TC-03 Positive UI Deep-link /pendirian/:id/review saat READY Halaman tinjauan render, tombol Finalisasi ada Sesuai, Finalisasi disabled PASS ui-review-gate.png
TC-04 Gate API Finalisasi tanpa konfirmasi semua field 400 UNCONFIRMED_FIELDS (termasuk field NOT_FOUND) Sesuai: jangka_waktu_durasi, tahun_buku, singkatan_nama diminta PASS results.json (finalizeGate)
TC-05 Gate API Override AKTA_DATE_WINDOW Ditolak (deed void, terkunci) 422 DATA_VERIFIED_LOCKED PASS results.json
TC-06 Gate API Override PENDIRIAN_NAMA_TERSEDIA Boleh dengan alasan 200 OK PASS results.json
TC-07 Gate API Override PENDIRIAN_REQUIRED_DOCS Boleh dengan alasan (lihat temuan OBS-2) 200 OK PASS results.json
TC-08 Positive API Deed dalam jendela + konfirmasi semua field + override 2 FAIL + finalize COMPLETED Sesuai: {status: COMPLETED} PASS log api-pendirian-complete
TC-09 Positive UI Buka review submission COMPLETED Banner selesai tampil Sesuai PASS ui-completed.png
TC-10 Negative API Unggah D-NEG-01 (expired 40th) AKTA_DATE_WINDOW FAIL Sesuai (2319 hari) PASS results.json
TC-11 Negative API Unggah D-NEG-02 (NIK dikorupsi, akta saja) Diharapkan mismatch NIK TIDAK muncul: validasi identik D-POS-01 (NIK_KTP_AKTA SKIPPED) FAIL (data uji tidak efektif) results.json, BUG-01
TC-12 Positive API akta + KTP NIK cocok roster NIK_KTP_AKTA PASS Sesuai: "1 dari 1 NIK cocok" PASS log api-pendirian-ktp
TC-13 Negative API akta + KTP nama cocok, NIK beda NIK_KTP_AKTA FAIL Sesuai: "NIK tidak cocok: WILLY ANWAR" PASS log api-pendirian-ktp
TC-14 Positive API Variasi tanggal digeser (D-POS-01F) AKTA_DATE_WINDOW mengikuti tanggal terekstraksi Sesuai: berubah 2319 hari ke 128 hari PASS results.json

Ringkasan validasi kasus 1-akta (D-POS-01): 30 SKIPPED, 2 WARNING (KTP/NPWP WILLY ANWAR belum ada), 3 FAIL (AKTA_DATE_WINDOW, PENDIRIAN_REQUIRED_DOCS, PENDIRIAN_NAMA_TERSEDIA).

5. Cakupan UI (semua yang diakses user)

Route/Elemen Diuji? Perilaku benar? Catatan
/klasifikasi unggah akta tunggal Ya Ya Fast-path klasifikasi lalu navigasi ke extraction
/pendirian/:id/extraction Ya (navigasi) Ya Auto-start pipeline; belum ada testid stabil (rekomendasi)
/pendirian/:id/review render Ya Ya Field + panel validasi tampil
Tombol Finalisasi (gate) Ya Ya disabled saat gate belum siap (ada FAIL / field belum konfirmasi)
Banner selesai Ya Ya pendirian-pt-completed-banner muncul setelah COMPLETED
/pendirian/:id/status Tidak - Belum diuji terpisah (destinasi step 4)

6. Temuan bug & perbaikan

ID bug Severity Ringkas Reproduksi Ekspektasi Aktual Screenshot Rekomendasi perbaikan
BUG-01 Low (data uji) Negative D-NEG-02 tidak efektif Unggah akta dengan NIK dikorupsi tanpa KTP NIK_KTP_AKTA menyalakan mismatch NIK_KTP_AKTA tetap SKIPPED ("Belum ada KTP WNI yang cocok"); validasi identik positif results.json Regenerasi D-NEG-02 sebagai paket akta + KTP ber-NIK salah (sudah dibuktikan via D-KTP-B). Perbarui gen-synthetic.ts
OBS-2 Med (desain) Dokumen wajib perseroan bisa di-override Override PENDIRIAN_REQUIRED_DOCS dengan alasan Aturan keberadaan dokumen biasanya terkunci 200 OK; notaris bisa finalisasi tanpa Slip Bank/Rekening Koran/Neraca/Surat Keterangan/dst results.json Sesuai komentar kode ini disengaja (override tercatat dengan alasan), berbeda dari aturan keberadaan yayasan/PP yang hard-lock. Konfirmasikan ke produk apakah harus dikunci seperti REQUIRED_SUPPORTING_DOCS
OBS-3 Low (reliability) Kadang ERROR transient saat proses PDF baru Jalankan flow berulang atas PDF sintetis baru Selalu READY Sekali gagal (submission ERROR) lalu lolos saat diulang test-results Selidiki kegagalan OCR sesekali; pertimbangkan retry/backoff di pipeline extraction

Catatan (bukan bug pasti): nama PT unik hasil generate tetap dilaporkan "sudah dipakai (pengajuan Pendirian PT yang sedang berjalan)". excludeSubmissionId sudah benar di fromInFlight; dugaan kuat ini bertabrakan dengan submission "UJI ..." sisa uji sebelumnya di DB lokal (pencocokan pada nama ternormalisasi), bukan self-match. Perlu verifikasi terpisah bila muncul untuk user nyata.

7. Ringkasan & rekomendasi

  • Total skenario: 14 (PASS 13 / FAIL 1). Satu FAIL adalah ketidakefektifan data uji (BUG-01), bukan cacat sistem.
  • Cakupan UI: 5 dari 6 elemen inti diuji (status step 4 belum diuji terpisah).
  • Bug: High 0, Med 1 (OBS-2, sifatnya desain untuk dikonfirmasi), Low 2 (BUG-01, OBS-3).
  • Perilaku gate finalisasi terbukti benar: memblokir sampai semua field dikonfirmasi (termasuk field NOT_FOUND) dan tidak ada FAIL tersisa; deed di luar jendela 60 hari tidak bisa di-override (terkunci, sesuai UUPT Pasal 10) sehingga akta lama benar-benar tidak bisa difinalisasi.
  • Happy path terminal COMPLETED terbukti di API dan UI menggunakan deed dalam jendela + nama unik.
  • Rekomendasi prioritas: (1) klarifikasi kebijakan override dokumen wajib (OBS-2); (2) perbaiki data uji negatif NIK (BUG-01); (3) tambah data-testid pada halaman extraction untuk uji UI yang stabil.
  • Gap/keterbatasan: dokumen pendukung penuh (bukti setor 5 subtipe, domisili, NPWP) belum diuji end-to-end sampai PASS penuh; nama-availability memakai DB SABH read-only sehingga hasil bergantung data registry nyata.