v1.0.0-018 : Perbaikan Presisi OCR Tanggal Transaksi & Aturan Diskon Anti-Double Counting
Changelog perbaikan bug ekstraksi tanggal transaksi pada UI SmartNote, pembersihan skema OCR di MCP Server, serta implementasi logika diskon mutually-exclusive (anti-double counting).
Pada update v1.0.0-018 ini, telah diselesaikan keluhan berulang terkait hasil ekstraksi nota/struk belanja (OCR) di mana tanggal transaksi sering salah/mundur ke tahun lalu (2025-05-22) serta nilai diskon yang tidak terbaca atau terhitung ganda (double counting).
Masalah:
Meskipun AI Vision berhasil mengekstrak tanggal otentik nota (misal 2026-07-28), kode di useOcrUpload.ts tidak menyertakan tanggal transaksi saat menyusun string catatan (noteText) yang dimasukkan ke textarea kiri UI. Akibatnya, saat tombol Auto Parse dipanggil, AI Parser kehilangan konteks tanggal nota dan terpaksa melakukan fallback ke tanggal lama atau halusinasi LLM.
Solusi:
- Memperbarui
blonjo/src/pages/transaction/hooks/useOcrUpload.tsagar menyertakan parameter(Tanggal Nota: YYYY-MM-DD)pada stringnoteTextyang diset ke textarea.
Masalah:
Skema JSON prompt di mcp-server/src/tools/ocrTool.ts sebelumnya memiliki duplikasi key "summary" yang ambigu. Selain itu, belum ada aturan yang mencegah diskon terhitung dua kali (double counting) jika pada nota terdapat diskon per baris item (inline discount) sekaligus angka diskon di bagian ringkasan.
Solusi:
- MCP Server (
ocrTool.ts): Merapikan skema JSON summary dan menegaskan bahwa jika diskon per baris item (inline discount) terdeteksi, makasummary.discount_totalWAJIB diset0agar diskon tidak terhitung ganda. Potongan nota global hanya diisi jika tidak ada diskon per-baris. - Frontend (
useOcrUpload.ts): Menambahkan pengecekanhasInlineDiscount. Jika tidak ada diskon per item namun ada diskon global nota, maka informasi(Diskon Nota: X)dimasukkan ke dalamnoteText.
Masalah:
Fungsi _extract_date(text) pada smart_parser.py dan instruksi AI Parser di MCP transactionParser.ts memerlukan penegasan untuk menangkap pola tanggal nota eksplisit.
Solusi:
- Modifikasi
sajen/app/services/smart_parser.pyuntuk menyertakan regex pemindaian(Tanggal Nota: YYYY-MM-DD)pada_extract_date(text). - Modifikasi
mcp-server/src/tools/transactionParser.tsuntuk mempertegas penggunaan tanggal nota otentik dari teks.
- Pengujian unit
_extract_datetelah dijalankan dan lulus 100% untuk memproses tanggal nota eksplisit.