Lanjut ke konten
Samkarsa Logbook

v1.0.0-013 : Perbaikan OpenCV, OCR UoM & Date Parsing, dan Layout PDF Jurnal

Resolusi atas isu visual template OpenCV yang gagal tersimpan, penyempurnaan AI OCR untuk membaca UoM dan tanggal secara cerdas, serta perbaikan tabel layout PDF pada laporan jurnal.

Jualan,Sajen,MCP2mnt baca

Pembaruan ini mencakup investigasi dan penyelesaian masalah terkait gagalnya OpenCV menyimpan visual template, perbaikan instruksi LLM (Gemini Vision) pada modul OCR untuk menghindari halusinasi tanggal dan pemetaan satuan (UoM), serta perbaikan tata letak PDF laporan Jurnal yang saling tumpang tindih.


Berdasarkan keluhan pengguna mengenai data koordinat OpenCV (visual_templates) yang kosong meskipun gambar telah diunggah berkali-kali, hasil audit menemukan 2 penyebab utama:

  • Konektivitas MCP Server: Sebelumnya, pemanggilan learn_visual_template melalui API terputus (Error: Temporary failure in name resolution) karena layanan mcp-backend-prod sedang restarting/downtime saat nota selesai di-OCR, sehingga query INSERT gagal tereksekusi.
  • Isu Koordinat 0x0: Sistem deteksi OpenCV sebelumnya kerap membuahkan dimensi 0x0 yang dianggap tidak valid (dibatalkan oleh fungsi keamanan OpenCV).
  • Resolusi: Isu 0x0 telah teratasi sejak versi v1.0.0-011 dengan logika Canny & Dilate. Isu koneksi sudah diatasi dengan penyatuan arsitektur jkk-backbone. Saat ini Visual Template sudah diprogram dengan benar dan dapat dipelajari dengan hanya melakukan unggah ulang (re-upload) nota Indogrosir dan Kasir Yoko melalui SmartNote.

Dilakukan revisi instruksi untuk menghindari sistem menebak tanggal (seperti 25/07/2026) dan mengabaikan tulisan “DUS”.

  • Smart Mapping UoM: Backend (Sajen) saat ini akan menarik seluruh daftar UoM riil dari database (misalnya box) sesuai dengan tenant_id pengguna dan mengirimkannya sebagai “Konteks Referensi UOM” ke mcp-server. AI OCR akan memetakan DUS atau singkatan lainnya ke ID database tersebut secara cerdas.
  • Tenggat Tanggal Presisi: Aturan pada Prompt OCR diperketat. AI DILARANG KERAS membuat atau menebak tahun sendiri jika tidak tercetak. Namun, jika teks fisik (seperti pada Kasir Yoko) HANYA memuat hari dan bulan, AI baru diperbolehkan mengambil konteks tahun sistem hari ini.

Laporan Jurnal (journal_list) dan Transaksi Bukti yang berwujud PDF Preview sebelumnya mengalami masalah baris yang tumpang tindih (overlapping) atau berantakan, khususnya pada uraian teks yang panjang.

  • Perhitungan Tinggi Baris Dinamis: Mengganti tinggi baris bawaan di sajen/app/services/reports.py dengan fungsi yang menghitung batas tinggi berdasarkan panjang teks (multi_cell line calculation).
  • Manajemen Page Break: Menerapkan pengecekan pdf.get_y() + max_height > pdf.page_break_trigger secara mandiri pada setiap baris data untuk mencegah penulisan keluar batas kertas.

  • Lakukan re-deploy aplikasi mcp-server dan sajen dengan prompt dan logika PDF terbaru.
  • Evaluasi dan verifikasi kalkulasi Diskon Global & HPP (Telah selesai di v1.0.0-006).
  • Perbaikan layout baris laporan PDF Jurnal agar rapi dan dinamis.
  • Pembaruan skema mcp-client Python untuk meneruskan tenant_id ke pemrosesan OCR.
  • Lakukan unggah ulang (re-upload) dokumen Kasir Yoko dan Indogrosir oleh pengguna agar model OpenCV menyimpan bounding box ke database secara permanen.
  • Eksekusi “Fitur Edit Purchase Plan” (Drafting Rencana Belanja).