Template BSBHP — desain formulir standar paket Berakhirnya Status Badan Hukum PT
Keputusan arah (2026-07-16): hybrid — template jadi jalur utama untuk dokumen yang
DIBUAT pemohon, perbaikan classifier tetap jalan sebagai fallback tapi di-scope turun.
Menggantikan sebagian scopePLAN-fix-klasifikasi-berakhirnya.md(lihat Addendum di sana).
Draft template: folder ini (BSBHP-0{3,4,5,6}-*.md+.docxhasil pandoc).
1. Kenapa hybrid, bukan murni opsi 1 atau murni opsi 2
Murni opsi 1 (kejar classifier) kalah oleh dua fakta dari 5 sample:
- Variasi bentuk tak terkendali: 5 transaksi saja sudah memuat 4 bentuk laporan likuidasi
berbeda (judul "Laporan Pertanggungjawaban", surat pernyataan bermeterai, bilingual
appendix-first, dwifungsi BAR+laporan) dan 2 bentuk permohonan (surat langsung vs bundel
berawalan Pencabutan NIB). Populasi nyata hanya akan menambah bentuk.
- Plafon OCR yang tidak bisa ditembus logic: di 4 dari 10 koran sample, box iklan pemohon
adalah grafis kecil yang tidak menghasilkan teks sama sekali — classifier sepintar apa pun
tidak bisa mengklasifikasi teks yang tidak ada.
Murni opsi 2 (template saja) juga tidak cukup:
- Koran tetap artefak pihak ketiga — tidak bisa di-template; yang bisa distandarkan hanya
lembar sampulnya.
- Berkas yang sudah telanjur dibuat notaris/likuidator dengan format bebas (seluruh 5 sample
hari ini) tetap harus bisa diproses → jalur classifier tidak boleh dibuang.
Hybrid: template menghilangkan masalah klasifikasi DAN ekstraksi untuk pengguna baru
(deterministik, presisi ~100% via kode formulir), classifier yang sudah diperbaiki menangkap
sisa dunia lama. Preseden pola ini sudah ada di codebase dan terbukti: sp-pendirian-pp
(backend/templates/*.docx + docxtemplater + LibreOffice→PDF + extractor OCR khusus).
2. Empat formulir (RUPS & akta TIDAK di-template — sudah terklasifikasi baik)
| Kode | Dokumen (lane) | Bentuk |
|---|---|---|
| BSBHP-03 | SURAT_PERMOHONAN (SABH PDF #3) | Surat permohonan pemberitahuan, siap isi |
| BSBHP-04 | LAPORAN_LIKUIDASI (SABH PDF #4) | Surat pernyataan + pertanggungjawaban, lampiran neraca wajib di halaman berikutnya |
| BSBHP-05 | BUKTI_PENGUMUMAN_149 (SABH PDF #5) | Lembar sampul + kliping koran dilampirkan di belakangnya |
| BSBHP-06 | BUKTI_PENGUMUMAN_152 (SABH PDF #6) | Lembar sampul + kliping koran dilampirkan di belakangnya |
Trik lembar sampul (BSBHP-05/06) mengubah masalah klasifikasi tersulit (box grafis di halaman
koran penuh) menjadi deklarasi pemohon: pasal dipilih oleh likuidator saat mengisi sampul,
sistem tinggal mengenali sampulnya. Nama koran + tanggal terbit ikut terisi → ekstraktor
bukti-pengumuman-extract dapat data bersih dari sampul, kliping hanya pendukung visual.
Placeholder memakai sintaks docxtemplater {nama_field} — nama field disamakan dengan kolom
manifest.csv / schema ekstraksi yang ada (nama_perseroan, nama_likuidator,
nomor_akta_notaris→nomor_akta, nama_surat_kabar_149, dst.) supaya pre-fill dari hasil
ekstraksi akta langsung nyambung.
3. Pengenalan template saat upload (tanpa retraining GPU — ADR-0012)
Baris pertama setiap formulir adalah konstanta:
FORMULIR SABH BSBHP-0N — … dan footer menyebut kode yang sama.
- Rule baru paling atas di
suggestByKeyword(supporting-doc-classifier):
head-anchored/FORMULIR\s+SABH\s+BSBHP-0([3-6])\b/(fallback/BSBHP-0([3-6])\b/di head
800 char untuk OCR yang menelan kata) → map langsung ke docType lane,confidence 0.98,
autoAcceptable: true, evidence "formulir BSBHP-0N (kode formulir)". - String "BSBHP" tidak mungkin muncul di dokumen lain → presisi praktis 100%, aman untuk
autoAcceptable meski label GPU-nya confidently-wrong apa pun. Tambahkan label GPU yang
terlihat di baseline untuk formulir ini keCONFIDENTLY_WRONG_SUPPORTING_LABELSagar
re-examine selalu jalan (atau — lebih murah — cek rule BSBHP ini juga di tier
refineSupportingLabelsebelum gate confidence; putuskan dari matriks Tahap 0). - Halaman 1 selalu formulir (sampul di depan) → masalah "bundel lampiran-di-depan" hilang
by construction untuk jalur template. - OPSIONAL v2: QR berisi
BSBHP-0N|{nomor_transaksi}untuk anti-typo scan buruk; tidak
diperlukan untuk v1 (judul tercetak bersih dari generator, bukan tulisan tangan).
4. Generate dari code (mirror pola sp-pendirian-pp)
backend/templates/bsbhp-03-surat-permohonan.docx…bsbhp-06-…docx(konversi final dari
draft di folder ini; rapikan kop/spacing di Word/LibreOffice seperlunya, JANGAN mengubah
baris judul formulir).- Service
backend/src/services/bsbhp-form-generator.tsmenirusp-pendirian-pp-generator.ts
(docxtemplater +libreoffice --convert-to pdf), satu fungsi per formulir, data dari
ekstraksi akta/RUPS yang sudah ada + input manual field yang belum terekstrak. - Route
backend/src/routes/bsbhp-form.ts(GET blank / POST filled → PDF). - FE: tombol "Unduh template" di lane kosong pada
kelengkapan-checklist.tsxuntuk 4 lane
tsb (paling kecil sentuhannya; generate-terisi menyusul setelah ekstraksi akta jalan). - Dua mode pemakaian yang SAMA-SAMA dikenali: (a) generate dari sistem → cetak → ttd+meterai
→ scan → upload; (b) user download blank, isi manual, upload — pengenalan tetap via kode
formulir, bukan via siapa yang mencetak.
5. Re-scope PLAN classifier (fallback path)
| Tahap PLAN | Status baru |
|---|---|
| Tahap 0 (baseline PaddleOCR) | Tetap wajib — juga jadi alat uji formulir BSBHP |
| Tahap 1 (gate laporan pernyataan) | Tetap — murah, menolong semua berkas lama |
| Tahap 2 (anchoring pass kedua) | Turun ke nice-to-have — chip koran cukup benar-arah |
| Tahap 3 (rekalibrasi axis 149/152) | Kerjakan yang murah saja: literal PASAL 149/152 + buang HASIL LIKUIDASI dari axis 152 + seri→undefined; sisanya turun prioritas |
| Tahap 4 (head per halaman) | Regex permohonan (+PEMBERITAHUAN, jarak {0,60}) tetap; scan per halaman turun prioritas (template sampul menyelesaikan kasus utamanya) |
| Tahap 5 (auto-adopt) | Auto-adopt jalur formulir BSBHP (rule kode). Dokumen bebas: tetap chip |
| Tahap 6 (verifikasi) | Tambah skenario: 1 transaksi sintetis memakai 4 formulir BSBHP terisi → 6/6 auto |
Guardrail PLAN §2 tetap berlaku seluruhnya (jangan sentuh flow lain, konvensi komentar/test,
soft-fail, commit format, push tanpa force).
6. Risiko & mitigasi
- Adopsi: notaris lama tetap kirim format bebas → justru alasan jalur fallback tetap ada;
formulir ditawarkan di UI saat lane kosong, bukan dipaksakan. - Formulir diedit orang (judul dihapus/diketik ulang): fallback classifier menangkap
seperti dokumen bebas biasa; tidak lebih buruk dari hari ini. - Keabsahan format: BSBHP-03/04 disusun dari bahasa hukum sample nyata (acquit et de
charge, Ps.143/149/152 UUPT); tetap minta review tim legal/verifikator SEBELUM dipakai
publik — tandai v1 sebagai internal. - Scan miring/kotor: kode formulir diulang di footer; rule memeriksa head + footer.