Lanjut ke konten
Samkarsa Logbook

Jualan v1.5.0-063: Universal Multi-Vector Semantic Basket Duplicate Matcher

Inovasi deteksi duplikasi nota cerdas: pencocokan keranjang semantik multi-vektor lintas variasi singkatan tulisan tangan, penanganan nota pasar tanpa kop/tanggal, dan kalibrasi presisi pHash anti false-positive.

Engineering Log2mnt baca

Pada evaluasi berkas nota di lapangan, ditemukan dua tantangan ekstrem:

  1. False Positive Antar Nota Berbeda: Nota cetak baru dari CV. Bengawan Sumber Makmur salah terdeteksi 100% duplikat dengan nota Sales ABC (Task #411) karena ambang batas visual pHash terlalu longgar (dist <= 24) dan adanya kueri SQL wildcard liar saat nama toko bernilai N/A.
  2. Variasi Ekstrem Nota Tulisan Tangan: Supplier tradisional (seperti Toko Beras Adi Rasa, Budi Bawang, UD. Garam Makmur) seringkali:
    • Tidak mencantumkan kop toko/tanggal nota (Date: None).
    • Menuliskan nama barang dengan singkatan dan tulisan tangan yang selalu berbeda di setiap nota (misal: SP vs SIP vs BERAS PREMIUM SIIP, atau KT CHUMP vs BAWANG KATING).

Mengembangkan fungsi kecerdasan baru find_semantic_basket_duplicate():

  1. Normalisasi Entitas Kanonikal: Setiap item mentah tulisan tangan otomatis diselaraskan ke master entitas (ocr_alias_mappings) sebelum komparasi.
  2. Kalkulasi Sidik Jari Keranjang (Basket Fingerprint): Basket Similarity=2×∣Item Baru∩Item Lama∣∣Item Baru∣+∣Item Lama∣\text{Basket Similarity} = \frac{2 \times |\text{Item Baru} \cap \text{Item Lama}|}{|\text{Item Baru}| + |\text{Item Lama}|}
  3. Pencocokan Multi-Kriteria Cerdas:
    • Jika invoice_number eksak cocok →\rightarrow 100% Duplikat Faktur Resmi.
    • Jika Total Nominal Cocok (±1%\pm 1\%) DAN Kemiripan Keranjang ≥40%\ge 40\% →\rightarrow Terdeteksi Duplikat Transaksi (mampu menangkap nota manual tanpa kop & tanpa tanggal).
    • Jika Total Nominal Cocok DAN Nama Toko Cocok →\rightarrow Terdeteksi Duplikat Pembelian.

  • Mengembalikan toleransi Hamming Distance visual dHash ke dist <= 10 bit (standar akurasi foto ulang nota identik).
  • Menghilangkan query fallback kosong sehingga berkas nota baru dari supplier berbeda lolos 100% bersih.

Berkas Uji / Skenario Hasil Deteksi Sistem Keterangan Status
CV. Bengawan Sumber Makmur (Total 160.400) 🟢 Bukan Duplikat (is_duplicate: False) Lolos bersih tanpa false positive
Toko Beras Adi Rasa (BERAS SIIP + C4, Total 4.035.000) 🔴 Duplikat Terdeteksi (Similarity: 100%) Mencocokkan Transaksi PUR-2026-0237
UD. Garam Makmur (Grusak / Alus, Total 380.000) 🔴 Duplikat Terdeteksi (Similarity: 100%) Mencocokkan Transaksi PUR-2026-0238