think
16px
820px

Blackbox Testing — Perubahan PT (PT)

  • Domain: PT
  • Fitur: Perubahan PT
  • Role/aktor: notaris (input & pengajuan), verifikator_pt (verifikasi bertahap), admin (akses menyeluruh)
  • Tanggal uji: 2026-08-19
  • Penguji (sesi): Supervisor PT
  • Build/commit: 63c40a17

1. Ringkasan fitur

Perubahan PT memproses Akta Perubahan (Pernyataan Keputusan Rapat/PKR) untuk mengubah data perseroan atau Anggaran Dasar. Notaris mengunggah akta, sistem OCR + LLM mengekstraksi field, mencocokkan perseroan dengan data SABH (company lookup), lalu menghitung diff terhadap data lama dan menjalankan validasi termasuk kuorum kehadiran RUPS. Berbeda dari Pendirian, flow ini bertahap lewat verifikator: setelah notaris menuntaskan atestasi jenis perubahan dan menekan Kirim, permohonan masuk antrean verifikator (MENUNGGU_VERIFIKATOR) dan bisa melalui tahap voting pemegang saham sebelum putusan final.

2. Full workflow

2.1 Diagram state

stateDiagram-v2 [*] --> CREATED CREATED --> EXTRACTING: POST /start EXTRACTING --> AWAITING_COMPANY_SELECTION: lookup >1 kandidat SABH AWAITING_COMPANY_SELECTION --> VALIDATING: select-company EXTRACTING --> VALIDATING: lookup 0/1 kandidat (auto) VALIDATING --> READY READY --> MENUNGGU_VERIFIKATOR: submit (atestasi + gate lolos) MENUNGGU_VERIFIKATOR --> MENUNGGU_VOTING: verifikator APPROVE (butuh voting) MENUNGGU_VOTING --> MENUNGGU_VERIFIKATOR_FINAL: voting selesai MENUNGGU_VERIFIKATOR_FINAL --> COMPLETED: putusan final APPROVE MENUNGGU_VERIFIKATOR --> PERBAIKAN: REVISE MENUNGGU_VERIFIKATOR --> REJECTED: REJECT COMPLETED --> [*]

2.2 Sequence (aktor - sistem)

sequenceDiagram actor N as Notaris actor V as Verifikator PT participant BE as Backend :47014 N->>BE: Unggah akta + start BE->>BE: ekstraksi + company lookup + diff + validasi (kuorum RUPS) N->>BE: (bila perlu) select-company N->>BE: POST /submissions/:id/attestations (jenis perubahan) N->>BE: POST /submissions/:id/submit BE->>BE: gate: atestasi + seksi + fail-gate; buat VerifikasiPerubahan V->>BE: GET /verifikator/submissions/:id/verifikasi V->>BE: POST /verifikator/submissions/:id/decide (APPROVE/REJECT/REVISE) BE-->>N: status COMPLETED / PERBAIKAN / REJECTED

2.3 Peta route & UI

Langkah Route Komponen Elemen interaktif utama Selector
Unggah & klasifikasi /klasifikasi KlasifikasiPage file input input[type=file]
Ekstraksi (step 2) /perubahan/:id/extraction PerubahanExtractionPage auto-start (tanpa testid)
Tinjauan (step 3) /perubahan/:id/review PtPerubahanReviewPageV2 konfirmasi field, atestasi jenis, panel validasi, tombol Kirim (tombol Kirim tanpa testid, lihat OBS-1)
Verifikator /verifikator lalu /verifikator/review/:id VerifikatorDashboardPage, VerifikatorReviewPage Setujui/Tolak/Revisi (perlu cek)
Status /perubahan/:id/status SubmissionStatusPage ringkasan (tanpa testid)

3. Prasyarat & data uji

ID data Tipe Berkas Deskripsi Ekspektasi sistem
D-POS-10 Positive PT__perubahan__positive__D-POS-10__akta-perubahan.pdf Perubahan Pasal 3 genuine (corpus-perubahan-7) READY; diff terisi; validasi jalan
Real-NONPAD..PAD Positive e2e/data/real-intake/pt/perubahan/{5 varian}/ Scan multi-dokumen (akta + sirkuler + AJB saham + daftar hadir) Belum diuji OCR penuh (scan berat)
Kuorum-neg Negative (butuh BA RUPS/daftar hadir dengan kehadiran < ambang) Kehadiran di bawah kuorum RUPS_ATTENDANCE_QUORUM WARNING

4. Matriks skenario uji

ID Tipe Lapisan Langkah ringkas Ekspektasi Hasil aktual Status Bukti
TC-01 Positive API Drive D-POS-10 ke terminal type PERUBAHAN_PT, READY, diff terisi Sesuai: READY, 23 SKIPPED/8 PASS/1 WARNING/1 FAIL PASS probe log
TC-02 Aturan API Cek jendela tanggal akta Perubahan pakai jendela 30 hari Sesuai: "sudah 238 hari lalu (maks 30 hari)" FAIL PASS probe log
TC-03 Aturan API Cek dokumen pendukung AKTA_PEMINDAHAN_HAK diminta bila ada peralihan saham Sesuai: REQUIRED_SUPPORTING_DOCS WARNING PASS probe log
TC-04 Aturan API Cek kuorum RUPS tanpa data RUPS SKIPPED Sesuai: RUPS_ATTENDANCE_QUORUM SKIPPED PASS probe log
TC-05 Gate API Submit saat FAIL/atestasi belum ada Ditolak 400 "Attestations not saved" (atestasi jadi gate pertama) PASS probe log
TC-06 Gate API Override AKTA_DATE_WINDOW 200 (overridable di perubahan, lihat OBS-2) 200 OK PASS probe log
TC-07 Gate API Submit lagi setelah override Tetap tertahan gate atestasi 400 "Attestations not saved" PASS probe log
TC-08 State API select-company saat bukan AWAITING 409 Sesuai: 409 "Submission is not awaiting company selection" PASS probe log
TC-09 Positive UI Deep-link /perubahan/:id/review Halaman render, aksi tergate Sesuai render PASS ui-review.png

5. Cakupan UI

Route/Elemen Diuji? Perilaku benar? Catatan
/klasifikasi unggah Ya Ya Navigasi ke extraction perubahan
/perubahan/:id/extraction Ya (navigasi) Ya Auto-start
/perubahan/:id/review render Ya Ya Field + panel validasi + atestasi
Tombol Kirim (gate) Sebagian Ya Tanpa data-testid (OBS-1); gate lewat atestasi/seksi/FAIL
Panel verifikator (Setujui/Tolak/Revisi) Tidak - Butuh atestasi lengkap dulu; didokumentasikan dari kode
Interstitial select-company Tidak (UI) - Diuji di API (409 guard); tidak terpicu data sintetis

6. Temuan bug & perbaikan

ID bug Severity Ringkas Reproduksi Ekspektasi Aktual Screenshot Rekomendasi
OBS-1 Low Tombol Kirim perubahan tanpa testid Buka review perubahan Selector stabil untuk uji Tombol Button biasa tanpa data-testid ui-review.png Tambah data-testid="perubahan-submit-button" (samakan pola dengan pt-finalize-button)
OBS-2 Low (desain) AKTA_DATE_WINDOW overridable di Perubahan Override pada submission perubahan Konsisten dengan Pendirian (terkunci saat tanggal terverifikasi) 200 OK (kebijakan override men-scope docTypes ke AKTA_PENDIRIAN saja) probe log Bila perubahan lewat 30 hari juga harus terkunci saat tanggal terverifikasi, tambah AKTA_PERUBAHAN ke docTypes kebijakan; bila memang legacy-overridable, konfirmasikan
OBS-3 Info Urutan gate submit Submit tanpa apa-apa - Gate atestasi mendahului fail-gate (pesan "Attestations not saved" muncul walau FAIL ada) probe log Bukan bug; catat agar pesan error mengarahkan user ke langkah atestasi lebih dulu

7. Ringkasan & rekomendasi

  • Total skenario: 9 (PASS 9 / FAIL 0).
  • Cakupan UI: render + gate teruji; panel verifikator dan interstitial company-selection didokumentasikan dari kode namun belum didorong end-to-end (butuh atestasi lengkap + data registry multi-match).
  • Bug: High 0, Med 0, Low 2 (OBS-1, OBS-2), 1 catatan info (OBS-3).
  • Aturan kuorum RUPS terverifikasi dari kode: kategori nonAd (Ps.86: ke-1 >1/2, ke-2 min 1/3), ad (Ps.88: ke-1 min 2/3, ke-2 min 3/5), ps89 (Ps.89: ke-1 min 3/4, ke-2 min 2/3). Perubahan bersifat adAware (PAD/PPAD -> ad, NONPAD -> nonAd). Kuorum menghasilkan WARNING (bukan FAIL) bila di bawah ambang, PASS bila terpenuhi, SKIPPED tanpa data RUPS.
  • Perbedaan penting vs Pendirian: jendela tanggal akta 30 hari (bukan 60), REQUIRED_SUPPORTING_DOCS jadi WARNING dan field-based (AKTA_PEMINDAHAN_HAK muncul saat ada peralihan saham), flow bertahap lewat verifikator dengan kemungkinan voting.
  • Gap/keterbatasan: jalur end-to-end sampai COMPLETED lewat verifikator butuh penyiapan atestasi jenis perubahan + (opsional) voting pemegang saham; belum didorong penuh pada sesi ini. Company lookup tidak terpicu oleh data sintetis (perlu nama yang match banyak entri SABH). Kuorum negatif perlu dokumen BA RUPS/daftar hadir nyata dengan kehadiran di bawah ambang. Rekomendasi lanjutan: pakai varian nyata perubahan/PAD+NONPAD (ada daftar hadir) untuk uji kuorum dan alur verifikator penuh.