Lanjut ke konten
Samkarsa Logbook

v1.0.0-006 : Perbaikan NLP Parser, Item-Level RAG, & Local OCR

Memperbaiki logika kalkulasi jatuh tempo pada Python Backend, mengintegrasikan Item-Level RAG secara rapi, dan menurunkan model OCR lokal Blonjo.

Jualan,Sajen,Blonjo1mnt baca

Pada rilis ini, kami fokus membereskan sisa permasalahan akurasi dari Parser Transaksi yang mengandalkan LLM, menuntaskan tahap 1 implementasi RAG pada entri barang, dan menstabilkan kapabilitas OCR lokal pada browser.

  • Masalah: AI menganggap teks “Jatuh Tempo: 14 Hari” sebagai tanggal transaksi absolut (gagal menghitung H+14), dan menghitung “1 Dus (40 Pcs) @ 110.000” sebagai 40 dikali 110.000, padahal seharusnya harga per dus.
  • Penyelesaian:
    1. Modifikasi parseTransactionSystemPrompt di MCP Server: LLM sekarang diinstruksikan tegas untuk membiarkan nilai relatif (“14 Hari”) masuk ke field due_date tanpa diproses, dan menganggap qty dalam kurung hanya sekadar penjelasan string.
    2. Fallback di sajen/app/api/v1/accounting.py: Jika due_date memuat kata “hari” atau “day”, logika Backend Python akan memotong string tersebut, mengambil angkanya, lalu menggunakan timedelta untuk menambahkannya secara definitif dari tanggal transaksi.

Sistem sekarang tidak lagi memanggil requests HTTP biasa, melainkan menggunakan mcp_client.py yang lebih terstruktur.

  • Search (Resolve): Jika produk dari OCR tidak sinkron (misal “Teh Gelas” terbaca “Teh Gelas 130ml”), sistem akan menanyakan ke MCP Server (alias resolution) yang kemudian memetakan nama tersebut ke produk master yang benar.
  • Ingest (Learn): Bila backend mengenali perubahan atau perbaikan nama dari OCR ke nama produk asli, backend otomatis mengirim Ingest ke MCP Vector DB, sehingga di pindaian OCR berikutnya nama varian yang typo otomatis dikenali.

  • Masalah: Beberapa browser mengalami kendala kompatibilitas (Missing required scale) pada arsitektur decoder saat memuat model Xenova/donut-base-finetuned-cord-v2. Hal ini juga memakan resource RAM yang cukup signifikan.
  • Penyelesaian: Model dikembalikan ke versi yang jauh lebih ringan, yaitu Xenova/trocr-small-printed (~60MB dalam bentuk quantized). Model ini terbukti lebih stabil berjalan pada ONNX Runtime Web tanpa kendala out-of-memory, sedangkan ekstraksi JSON kompleks diserahkan sepenuhnya ke Hybrid Fallback AI Server/MCP.