Lanjut ke konten
Samkarsa Logbook

v1.0.0-017 : Hybrid AI Local-First (Ollama) & Fix Bug Tanggal Transaksi

Arsitektur Hybrid AI Local-First Ollama serta perbaikan bug tanggal transaksi.

Jualan,Sajen1mnt baca

Rilis ini memperkenalkan arsitektur Hybrid AI Local-First pada Frontend Blonjo, sekaligus memperbaiki bug kritis di mana transaction_date selalu menampilkan tanggal lama (contoh: 22/05/2025) pada hasil parsing Smart Note.

Fitur OCR dan Parsing kini menggunakan jalur terpisah yang dioptimalkan berdasarkan keterbatasan hardware MacBook Pro M1 8GB:

  • Upload Foto Nota (OCR) → Tetap ke Gemini via MCP Server (model Vision lokal butuh >5GB RAM).
  • Parsing Smart Note (Teks → JSON)Ollama Lokal (qwen3.5:4b) sebagai prioritas utama. Jika Ollama mati, sistem fallback otomatis ke Server tanpa menampilkan error ke pengguna.

Dua file baru ditambahkan di blonjo-ui:

  • src/lib/parsePrompt.ts — Konstanta system prompt parsing yang identik dengan mcp-server/src/tools/transactionParser.ts. Wajib disinkronisasi manual jika prompt MCP berubah di masa mendatang.
  • src/lib/ollamaClient.ts — Modul klien Ollama. Berisi checkLocalParseModel() untuk mengecek ketersediaan model dan runOllamaParse() untuk menjalankan parsing. Nilai today_date diinjeksi dari browser klien (bukan dari jam container VPS), sehingga tanggal selalu akurat secara inheren.

Hook useSmartNote.ts diperbarui dengan alur baru: Cek Ollama → Parse Lokal → Fallback ke Server. Hook useOcrUpload.ts dibersihkan dari seluruh pipeline ONNX TrOCR @huggingface/transformers yang sudah lama tidak terpakai dan terbukti menghasilkan halusinasi pada gambar struk penuh.

Untuk mengaktifkan Ollama, jalankan:

Terminal window
OLLAMA_ORIGINS="http://localhost:5173" ollama serve
ollama run qwen3.5:4b

Setelah investigasi, jam container VPS terbukti sudah benar (UTC, sinkron dengan waktu nyata). Penyebab sebenarnya adalah model Gemini mengabaikan konteks today_date yang sebelumnya dikirim di akhir prompt, lalu menggunakan tanggal dari pengetahuan pelatihannya sendiri.

Perbaikan dilakukan di sajen/app/api/v1/accounting.py dengan menambahkan blok Sanity Check Tanggal: jika transaction_date yang dikembalikan AI berada di luar rentang wajar (sebelum tahun 2020 atau lebih dari satu tahun ke depan), nilai tersebut di-override paksa dengan today_date. Perbaikan di sisi MCP Server dicatat secara terpisah di mcp-v1-0-0-008.