think
16px
820px

Apostille smoke wave K.9 — spesimen legacy, ranking kandidat, kejujuran state

Deployed: ahu-ai-ocr:038f961e di staging :3520 · backend 2548 ✅ / frontend 970 ✅ · diverifikasi live pada permohonan e4229ea8

1. "Spesimen belum tersedia" padahal MinIO sudah ada → BUG NYATA, sudah diperbaiki

Akar masalah: entri registri pra-migrasi (spesimen 2655 terdaftar ±2008) menyimpan kunci berkas
sebagai path web lama — /uploads/spesimen_migrasi/36/…pdfdengan leading slash. Penandatangan
SigV4 kita memakai kunci itu apa adanya, menghasilkan URL double-slash (/apostille-prod//uploads/…)
→ S3 menjawab 404. Entri modern (spesimen-file/202411/…) tidak terdampak, jadi bug ini hanya
muncul pada pejabat lama.

flowchart LR A["registri: /uploads/spesimen_migrasi/36/….pdf"] -->|"dulu: verbatim"| B["S3 GET …-prod//uploads/… → 404"] A -->|"kini: strip leading slash"| C["S3 GET …-prod/uploads/… → 200 (83 KB)"]

Setelah fix: GET /api/apostille/spesimen/2655/file200 application/pdf 82.972 bytes, dan
perbandingan tanda tangan otomatis berjalan untuk pilihanmu (Darsani 2655).

Catatan hasil perbandingannya: 0% — kemungkinan berbeda (jujur, advisory). Lembar spesimen 2655
adalah form "CONTOH TANDA TANGAN" 2008 yang ter-scan miring 90°; detektor memotong sel PARAF
(coretan kecil), bukan sel TANDATANGAN. Ini item kalibrasi Phase C5 (rotasi + lembar multi-sel),
bukan blocker — verifikator bisa membuka PDF spesimen utuh lewat tautan yang kini berfungsi.

2. Tautan "Lihat spesimen tanda tangan" tidak lagi menuju halaman JSON 404

Projector sebelumnya selalu memancarkan URL spesimen selama MinIO dikonfigurasi. Kini URL hanya
muncul bila berkasnya benar-benar ada di disk; kalau belum ada:

  • tampil "Berkas spesimen belum tersedia" + tombol unggah manual (bukan tautan mati),
  • fetch background dijalankan supaya load berikutnya sembuh sendiri,
  • dan pick/set penandatangan melakukan warm berkas ≤5 detik sebelum membalas, jadi refetch
    halaman langsung membawa tautannya.

3. Kandidat pejabat kini diurutkan + berpersentase

Skor komposit per kandidat: 0,7 × kemiripan nama-bersih (gelar/honorifik distrip: Drs., H.,
M.Si, dst.) + 0,3 × konteks dokumen (overlap token jabatan hasil OCR vs position+institutions
registri). Gate MATCHED/AMBIGUOUS tetap berbasis nama (tidak ada perubahan perilaku auto-match);
konteks hanya MENGURUTKAN dan memberi angka. Tie penuh memprioritaskan entri yang punya berkas
spesimen. Pada kasus Darsani (nama bersih identik semua → dulu tampak "duplikat" tak terbedakan):

Kandidat Jabatan terdaftar Kecocokan
Drs.H.DARSANI,M .Si (291063455) Kepala Dinas · Dinas Kependudukan dan Pencatatan Sipil 100%
Drs. H. Darsani, M.Si (2655) Kepala Dinas Kependudukan dan Pencatatan Sipil Kab. Garut 100%
Drs. Darsani, M.Si (291092585) Kepala Kantor Kependudukan dan Catatan Sipil 88%
Drs. Darsani, M.Si (290994327) Kepala Kantor Kependudukan dan Catatan Sipil · NIP 480082007 88%

(Jabatan ter-OCR: "Kepala Dinas Kependudukan dan Pencatatan Sipil" — dua teratas menutup semua
token-nya, dua bawah kehilangan "dinas"/"pencatatan".)

4. Tidak ada lagi klaim hijau/100% saat belum terverifikasi

  • Pick manual → footer "Dipilih manual dari registri" (dulu: "Keyakinan kecocokan 100%" —
    padahal 100% itu cuma artefak pilihan operator, bukan hasil komputasi).
  • Blok ambiguous → "Belum dipilih — pilih kandidat yang paling sesuai" (dulu: "Keyakinan
    tertinggi 100% — belum dipilih").
  • MATCHED tapi spesimen tidak tersedia → blok dirender amber + badge "Spesimen belum
    tersedia", bukan hijau; perbandingan AI menyatakan belum berjalan.

5. Wording

"ttd" hilang seluruhnya: tombol sorot = "Tandai tanda tangan di dokumen", gambar-kotak manual =
"Gambar kotak tanda tangan" / "Gambar ulang kotak", prefiks advisory = "AI tanda tangan:".

State permohonanmu (e4229ea8) sekarang

Pilihanmu (Darsani 2655) dipertahankan: blok hijau "cocok di registri", tautan spesimen jalan
(PDF 83 KB), panel perbandingan tampil dengan crop dokumen vs spesimen + skor advisory. Kandidat
ber-skor tersimpan — tombol "Perbaiki" memperlihatkan urutan baru bila ingin menukar pilihan.

Bukan bagian wave ini (tercatat)

  • Kalibrasi detektor untuk lembar spesimen legacy ter-rotasi / multi-sel (C5) — penyebab skor 0%
    di atas.
  • Ranking hasil pencarian di modal "Perbaiki" mengikuti query yang diketik operator (bukan skor
    OCR) — by design.