think
16px
820px

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 scope PLAN-fix-klasifikasi-berakhirnya.md (lihat Addendum di sana).
Draft template: folder ini (BSBHP-0{3,4,5,6}-*.md + .docx hasil 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_notarisnomor_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 ke CONFIDENTLY_WRONG_SUPPORTING_LABELS agar
    re-examine selalu jalan (atau — lebih murah — cek rule BSBHP ini juga di tier
    refineSupportingLabel sebelum 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.docxbsbhp-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.ts meniru sp-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.tsx untuk 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.