Apostille K.13 — atestasi verifikator, refresh redraw, frame perbandingan, kalibrasi 520 lembar
Deployed: app ahu-ai-ocr:af3395cc :3520 + ahu-signature-verify knot v2.1 · backend 2549 ✅ / frontend 976 ✅ · semua diverifikasi live pada e4229ea8
1. Spacing blok penandatangan
mt-1 → mt-2 di ketiga varian blok (cocok/ambiguous/unmatched) — kini mengikuti ritme
space-y-2 daftar field di atasnya.
2. Verifikator WAJIB mengonfirmasi perbandingan tanda tangan
Panel "Keputusan Verifikator" mendapat checkbox wajib:
☑ Saya telah membandingkan tanda tangan pada dokumen dengan spesimen pejabat di registri
secara manual. (wajib sebelum menyetujui — skor AI hanya advisori)
- Tombol Setujui disabled sampai dicentang (Tolak/Minta Perbaikan tidak terpengaruh — keduanya
tidak mengatestasi kecocokan). - Backend ikut menegakkan:
/decide APPROVEtanpasignatureConfirmed:true→ 400
SIGNATURE_NOT_CONFIRMED, jadi gate-nya tak bisa dilewati dari luar UI. - Diverifikasi live: Setujui disabled → centang → enabled.
3. UI basi setelah update kotak tanda tangan — akar masalah & fix
Refetch data sebenarnya sudah jalan; yang basi adalah gambarnya: URL crop/peta konstan per
dokumen, jadi browser menyajikan cache lama. URL kini membawa ?v=<timestamp analisis> — begitu
analisis ulang selesai, refetch membawa URL baru dan gambar ikut berganti. Berlaku untuk pemohon
dan verifikator. (Toast juga diperbarui: "Area tanda tangan diperbarui — analisis dijalankan
ulang".)
4. AI dijamin re-run setelah kotak diubah — dan kotak manual kini DIHORMATI
- Route
signature-regionmemang menunggu perbandingan selesai sebelum membalas; kini ia juga
menyegarkan validasi (SPESIMEN_TTD_MATCHmembaca skor baru). - Bug tersembunyi yang ikut terpetik: re-run OTOMATIS (ganti kandidat, refresh spesimen) dulu
diam-diam membuang kotak manual dan balik ke deteksi otomatis. Sekarang kotak manual yang
tersimpan dipakai ulang pada semua re-run. Diverifikasi live: setelah re-run otomatis,
manual: truetetap.
5. Frame perbandingan seragam
Crop dokumen vs spesimen bisa jomplang rasionya (strip pendek vs sel tinggi — persis
screenshot-mu). Kini kedua figur duduk di kotak tinggi-tetap (modal h-56, panel kecil h-24) dengan
object-contain — selalu sejajar dan mudah dibandingkan.
6. AI terus membaik: kalibrasi di-refresh dari korpus 520 lembar
Korpus otomatis diperbesar 140 → 520 lembar (dari registri + MinIO): 94 pasangan genuine
lintas-lembar nyata (setelah membuang re-upload file identik) + 2.000 pasangan impostor.
- AUC ensemble 0.745 — konsisten dengan estimasi korpus kecil (0.755): pipeline stabil.
- Knot kalibrasi di-refresh dengan estimasi persentil yang jauh lebih presisi:
cos 0.672/0.833/0.897/0.977 ↔ 0/50/80/100%. - Artinya sekarang: skor ≥80% menangkap ~33% pasangan genuine dengan hanya ~1% false-accept;
≥50% menangkap ~49% pada ~5%. Self-pair tetap 100% (cos 0.9997). - Korpus ini juga korpus training siap-pakai untuk fine-tune metric model (langkah C5 berikutnya —
lompatan akurasi terbesar).
Teknis
- BE:
/decideguard + audit; projector cache-bust?v=;runSignatureVerifymanual-box reuse;
route revalidate; test decide +1 kasus (atestasi) & semua APPROVE call di-update. - FE: checkbox atestasi (gate Setujui saja), hook decide membawa flag, mark-hook typing/toast
disesuaikan, CompareFigure & panel berbingkai tinggi-tetap, spacing. - Service: knot v2.1 (korpus 520); docstring disegarkan.