Lanjut ke konten
Samkarsa Logbook

Jualan & MCP Server: Fix OCR Nota Tulisan Tangan dan Integrasi JSON

Perbaikan OCR Nota Tulisan Tangan dan integrasi REST Bridge JSON pada MCP Server untuk sistem Jualan.

bugfix1mnt baca

Pembaruan ini menangani serangkaian masalah yang membuat ekstraksi nota tulisan tangan selalu gagal atau menyebabkan sistem loading tanpa henti pada saat pengguna mengunggah gambar.

Sebelumnya, backend mencoba menghubungi fitur OCR terbaru dari MCP Server (ocr_receipt), namun tool tersebut belum terdaftar (unregistered) dengan benar di REST Bridge.

  • Penyelesaian: Telah mendaftarkan ocr_receipt secara resmi ke objek server.tool MCP dan juga pada HTTP Endpoint /tools/:toolName di index.ts.

Ketika dites mengirimkan file nota asli menggunakan curl, sistem MCP menolak (Payload Too Large) karena gambar dalam bentuk base64 melewati batas bawaan ExpressJS.

  • Penyelesaian: Mengubah batas maksimum unggahan JSON pada express.json() menjadi 50MB.

Terdapat mismatch format data. Setelah MCP berhasil merespons dengan JSON terstruktur, worker Celery (ocr_worker.py) di Jualan masih mengekspektasikan data berbentuk Markdown String, yang mengakibatkan string kosong dan memicu sistem fallback ulang ke Gemini AI (yang kemudian terkendala limit quota 429).

  • Penyelesaian: Memperbaiki logika ekstraksi raw_ocr_text di ocr_worker.py. Jika respon dari MCP sudah berupa dictionary/object terstruktur (dibuktikan dengan adanya atribut merchant atau items), maka sistem akan otomatis men-serialize (json.dumps) object tersebut agar parser bawaan Jualan bisa bekerja dengan normal.

Dengan perbaikan ini, sistem OCR berhasil mengekstrak nota (termasuk tulisan tangan) dengan tingkat akurasi tinggi dan format JSON yang sempurna dalam hitungan detik. Seluruh komponen (mcp, sajen-api, sajen-worker) telah berhasil di-deploy ke VPS.