v1.0.0-017 : Hybrid AI Local-First (Ollama) & Fix Bug Tanggal Transaksi
Arsitektur Hybrid AI Local-First Ollama serta perbaikan bug tanggal transaksi.
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 denganmcp-server/src/tools/transactionParser.ts. Wajib disinkronisasi manual jika prompt MCP berubah di masa mendatang.src/lib/ollamaClient.ts— Modul klien Ollama. BerisicheckLocalParseModel()untuk mengecek ketersediaan model danrunOllamaParse()untuk menjalankan parsing. Nilaitoday_datediinjeksi 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:
OLLAMA_ORIGINS="http://localhost:5173" ollama serveollama run qwen3.5:4bSetelah 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.