Lanjut ke konten
Samkarsa Logbook

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).

Jualan,Sajen,MCP1mnt baca

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.ts agar menyertakan parameter (Tanggal Nota: YYYY-MM-DD) pada string noteText yang 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, maka summary.discount_total WAJIB diset 0 agar diskon tidak terhitung ganda. Potongan nota global hanya diisi jika tidak ada diskon per-baris.
  • Frontend (useOcrUpload.ts): Menambahkan pengecekan hasInlineDiscount. Jika tidak ada diskon per item namun ada diskon global nota, maka informasi (Diskon Nota: X) dimasukkan ke dalam noteText.

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.py untuk menyertakan regex pemindaian (Tanggal Nota: YYYY-MM-DD) pada _extract_date(text).
  • Modifikasi mcp-server/src/tools/transactionParser.ts untuk mempertegas penggunaan tanggal nota otentik dari teks.

  • Pengujian unit _extract_date telah dijalankan dan lulus 100% untuk memproses tanggal nota eksplisit.