Jualan v1.5.0-075: Precision Distributor OCR Discount Extraction, Boundary-Safe DP Detection & Self-Healing Math Reconciler
Perbaikan presisi ekstraksi diskon faktur distributor (Discount Product & Customer), pencegahan false-positive DP pada produk EDP, serta rekonsiliasi matematis dot-matrix.
1mnt baca
Pada versi v1.5.0-075, ekosistem Jualan (Sajen API & Blonjo UI) bersama MCP Server diperbarui untuk mengatasi anomali pembacaan faktur distributor multi-halaman dan kesalahan klasifikasi metode pembayaran:
-
Boundary-Safe Payment Method & Purchase Context Protection (
accounting.py&smart_parser.py):- Memperbaiki pencegat metode pembayaran pada
sajen/app/api/v1/accounting.pyyang sebelumnya menggunakan pencocokan substringkw in low_textuntuk"dp ". Pola lama menyebabkan nama varian produk sepertiSOKLIN POWDET DET EDPsalah terdeteksi sebagai sinyal Down Payment (DP). - Menerapkan regex word boundary
\b(dp|down\s*payment|uang\s*muka|panjar)\bdan membatasicustomer_depositHANYA untuk transaksi penjualan (sales), bukan pembelian dari supplier (purchase). - Memastikan tag eksplisit seperti
(Metode Pembayaran: cash)dari hasil OCR diprioritaskan.
- Memperbaiki pencegat metode pembayaran pada
-
Dukungan Multi-Kolom Diskon Distributor (
ocrTool.ts,ocr.py,useOcrUpload.ts):- Mengakomodasi format faktur distributor (seperti PT. Bahagia Sumber Abadi / Wings) yang memiliki dua kolom diskon terpisah:
Discount ProductdanDiscount Customer. - Menjumlahkan kedua kolom tersebut secara otomatis menjadi
discount_amountpada baris item. - Memperbarui
_map_rich_schema_to_frontend()dan endpoint pollingget_ocr_task_detail()disajen/app/api/v1/ocr.pyagar selalu memetakantask.extracted_datasecara konsisten sebelum dikirim ke UI.
- Mengakomodasi format faktur distributor (seperti PT. Bahagia Sumber Abadi / Wings) yang memiliki dua kolom diskon terpisah:
-
Self-Healing Mathematical Reconciler (
ocr_normalizer.py&useOcrUpload.ts):- Mengaktifkan rekonsiliasi diskon otomatis: jika
(qty * unit_price) > subtotalnamun kolom diskon terlewat oleh OCR vision, selisihnya otomatis dipulihkan sebagai diskon baris item (discount = (qty * unit_price) - subtotal). - Merekonsiliasi selisih angka total akibat kesalahan baca titik printer dot-matrix (misal angka
3terbaca8seperti204158vs204153) berdasarkan penjumlahan subtotal item yang valid.
- Mengaktifkan rekonsiliasi diskon otomatis: jika
-
Integritas Jurnal Otomatis (
accounting.py&useSmartConfirm.ts):- Menghilangkan anomali jurnal yang tidak lengkap karena transaksi pembelian kini selalu dipetakan secara benar ke akun Persediaan/Pembelian vs Kas/Bank/Hutang, kebal terhadap kata kunci DP di nama barang.