think
16px
820px

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-1mt-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 APPROVE tanpa signatureConfirmed: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-region memang menunggu perbandingan selesai sebelum membalas; kini ia juga
    menyegarkan validasi (SPESIMEN_TTD_MATCH membaca 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: true tetap.

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: /decide guard + audit; projector cache-bust ?v=; runSignatureVerify manual-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.