Mock output SK Pendirian PT (demo 28 Agustus 2026)
Status: landed on master working tree, behind SK_MOCK_DEMO (default OFF).
Tracking: https://app.clickup.com/t/z92046m13u
Tujuan: demo terlihat utuh sampai output — setelah step tinjauan (step 4)
selesai, notaris bisa membuka Contoh SK yang terisi dari data ekstraksi
dokumen yang diunggah.
Sistem ini tidak menerbitkan SK. Penerbitan SK resmi tetap di AHU Online /
AHU Rebuild. Semua keluaran di sini diberi watermark "CONTOH — BUKAN DOKUMEN
RESMI", banner mock, dan disclaimer; nomor SK/pendaftaran/daftar perseroan dan
tanda tangan pejabat adalah dummy.
Cara mengaktifkan di environment demo
SK_MOCK_DEMO=on # wajib — tanpa ini endpoint 404 & tombol tidak muncul
# SK_MOCK_TEMPLATE_DIR=/srv/templates/sk-pendirian-pt # opsional: tukar layout tanpa rebuild
# SK_MOCK_PEJABAT="(nama pejabat)" # opsional: nama di blok tanda tangan
Restart backend. Tidak ada migrasi DB, tidak ada perubahan skema.
Alur
(konfirmasi per-field)"] R -->|Finalisasi| C[COMPLETED] C --> B1["Tombol 'Lihat Contoh SK'
banner selesai + halaman status"] B1 --> P["/pendirian/:id/sk-mock"] P -->|"GET /api/submissions/:id/sk-mock"| S["loadSkMock()"] S --> D["buildSkMockTokens()
ekstraksi → field SK"] D --> T["template HTML swappable
+ watermark CONTOH"] T --> V["iframe srcDoc
Cetak / Simpan PDF · Unduh HTML"]
Yang landed
| Berkas | Isi |
|---|---|
backend/templates/sk-pendirian-pt/sk-pendirian-pt.html |
template swappable — halaman 1 (keputusan) + halaman 2 (lampiran), A4, watermark, QR placeholder |
backend/templates/sk-pendirian-pt/README.md |
kontrak token + cara menukar template & logo |
backend/src/lib/sk-mock-template.ts |
renderer {{TOKEN}} / {{{RAW}}} / {{#LOOP}} (±60 baris) |
backend/src/services/sk-mock-pendirian-pt.ts |
pemetaan ekstraksi → field SK (buildSkMockTokens, murni) + pembacaan Prisma (loadSkMock) |
backend/src/routes/sk-mock.ts |
GET /api/submissions/:id/sk-mock (di mount /api/submissions yang sudah ada ⇒ kebijakan auth tidak berubah) |
backend/src/config.ts, lib/env-schema.ts, routes/public-config.ts |
flag SK_MOCK_DEMO + SK_MOCK_TEMPLATE_DIR + SK_MOCK_PEJABAT |
frontend/src/pages/SkMockPage.tsx |
halaman pratinjau: iframe srcDoc, Cetak/Simpan PDF, Unduh HTML, catatan data |
frontend/src/routes.tsx |
rute /pendirian/:submissionId/sk-mock |
PtPendirianReviewPageV2.tsx, SubmissionStatusPage.tsx |
tombol "Lihat Contoh SK" (hanya saat flag on) |
Tes: sk-mock-pendirian-pt.test.ts (9, tanpa DB), sk-mock-load.test.ts (3,
baca Prisma), sk-mock.test.ts (3, gate flag + rute), SkMockPage.test.tsx (2).
Pemetaan data (ekstraksi → SK)
| Field SK | Sumber |
|---|---|
{{NAMA_PT}} |
akta nama_perseroan (prefix PT dinormalkan, tidak dobel) |
{{NOTARIS}} / {{KEDUDUKAN_NOTARIS}} |
akta nama_notaris / kedudukan_notaris |
{{NO_AKTA}} / {{TGL_AKTA}} |
akta nomor_akta / tanggal_akta (dinormalkan "15 Juli 2026") |
{{KEDUDUKAN}} / {{JENIS_PERSEROAN}} |
akta kedudukan_perseroan / jenis_perseroan |
{{TGL_PERMOHONAN}} |
submission.createdAt |
{{TGL_PENETAPAN}} / {{TGL_DAFTAR}} |
submission.updatedAt saat COMPLETED |
{{MODAL_DASAR/DITEMPATKAN/DISETOR}} |
AktaModal |
| tabel lampiran | AktaPemegangSaham + AktaKomisaris + AktaDireksi, satu baris per orang (digabung by nama ternormalisasi; jabatan digabung "Pemegang Saham / Direktur Utama") |
{{NO_SK}}, {{NO_PENDAFTARAN}}, {{NO_DAFTAR}} |
dummy deterministik (hash submission id) — bukan nomor registri |
{{PEJABAT}} |
SK_MOCK_PEJABAT, default (nama pejabat) |
Nilai yang tidak ada dirender — dan dilaporkan lewat notes (ditampilkan
sebagai "Catatan data" di halaman) — celah data terlihat, bukan disembunyikan.
Trade-off yang diambil
- HTML + cetak-browser, bukan PDF/docx server-side. Generator lain di repo
ini memakai docxtemplater + LibreOffice. Untuk mock ini HTML dipilih karena:
contoh SK resmi AHU belum ada (template wajib bisa ditukar cepat),
watermark/kop/QR jauh lebih murah di CSS, dan tidak ada round-trip
LibreOffice per tampilan. Konsekuensi: tidak ada artefak PDF di server —
PDF dihasilkan lewat "Cetak / Simpan PDF" di browser. Kalau AHU minta berkas
PDF/DOCX resmi, itu pekerjaan lanjutan (bisa dipasang di generator yang sama). - Endpoint JSON, bukan
text/html. Endpoint HTML bisa dibuka di tab baru
tanpa konteks aplikasi; untuk dokumen yang terlihat seperti keputusan
menteri, afordansi itu sengaja tidak diberikan. SPA mengambil HTML lewat
apiFetch(bearer) dan menaruhnya di<iframe srcDoc>. - Nomor dummy deterministik, bukan acak — demo yang diulang menampilkan
nomor yang sama, dan tidak ada peluang bertabrakan dengan urutan AHU. Klasifikasi Saham= "Saham Biasa" (label generik): ekstraksi akta belum
punya field kelas saham. Dilaporkan dinotes.- Logo tidak di-commit. Template menampilkan kotak placeholder sampai
logo.pngditaruh di direktori template (repo ini tidak menyimpan lambang
resmi Kemenkumham).
Butuh keputusan / lanjutan
- Contoh SK resmi dari AHU — begitu PDF-nya masuk repo, template dipotong
ulang mengikuti tata letak resmi (token tidak perlu berubah). - Logo Kemenkumham — taruh
logo.pngdi direktori template. - QR code — sekarang placeholder. Kalau demo perlu QR yang bisa dipindai,
perlu keputusan isinya (URL verifikasi? id submission?). - Terbilang modal dan kolom kelas saham menunggu contoh resmi.
- Flow lain (Perubahan/PP/Yayasan) belum punya mock output — hanya
PENDIRIAN_PT yang diminta untuk demo ini.