Lanjut ke konten
Samkarsa Logbook

Jualan v1.5.0-082: VibesChat Intelligence V2 - Batch Entity Resolver, Smart Chart Synthesis, dan Chat-Driven CRUD

Rilis besar VibesChat Intelligence V2: Batch Entity Resolver akurasi 100%, Smart Chart Synthesis bebas kata larangan, Chat-Driven CRUD dengan proteksi RBAC, dan Glassmorphism Action Card.

4mnt baca

Rilis v1.5.0-082 menghadirkan transformasi besar pada ekosistem kecerdasan buatan VibesChat (mcp-server, sajen-api, dan blonjo-ui). Pembaruan ini merevolusi kapabilitas asisten AI dari yang sebelumnya berorientasi read-only dengan pencocokan nama produk rapuh, menjadi Cognitive Operational Copilot yang cerdas, visual, dan berdaya eksekusi nyata (Chat-Driven CRUD) secara aman.


Berdasarkan audit obrolan pada sesi interaksi belanja pengguna, ditemukan 4 kendala fundamental:

  1. Kegagalan Resolusi Singkatan & Typo Nota: Permintaan seperti “Sgtg Biru 4dus, Lencana Merah 1dus, beras siip 150kg” gagal dicocokkan ke database atau salah memetakan entitas produk resmi karena query pencarian teks parsial yang dangkal.
  2. Kekakuan Sintesis & Prompt Larangan: Model terbebani instruksi “DILARANG KERAS” yang menghasilkan gaya bahasa kaku, apologetis, serta tidak mencerminkan wawasan bisnis (Executive Storytelling).
  3. Ketiadaan Visualisasi Kontekstual: Data komparasi multi-item anggaran belanja hanya disajikan dalam teks datar tanpa grafik otomatis, sementara prompt sebelumnya sering memicu grafik tidak relevan (chart spam) pada pertanyaan fakta sederhana.
  4. Obrolan Pasif (Read-Only Dead End): Setelah AI menyusun estimasi belanja, pengguna harus keluar dari chat dan menginput ulang data belanjaan secara manual ke menu Pengadaan/PO.

Pembaruan ini diselesaikan melalui 4 fase arsitektural terintegrasi:

  • Lokasi File: ~/kerjaan/mcp-server/src/tools/batchItemResolver.ts
  • Multi-Factor Weighted Scoring: Menggabungkan 3 lapis pencocokan data paralel:
    1. Explicit Alias Matching: Pemetaan langsung dari tabel ocr_alias_mappings (Score: 1.00).
    2. Exact Token & Word Boundary Regex: Pencarian kata kunci utuh menggunakan batas kata \y PostgreSQL untuk menghindari false match seperti SIP mencocokkan SAMPURNA (Score: 0.85).
    3. Trigram Similarity: Menggunakan ekstensi pg_trgm (similarity dan word_similarity > 0.25) untuk menangani typo seperti Kacang Tabah ➔ KACANG TANAH (Score: 0.30 - 0.80).
  • Ekstraksi HPP & Harga Bertingkat: Otomatis menarik harga pokok modal (moving_average_cost), harga pembelian terakhir (last_purchase_price), serta aturan harga tier dari tenant_pricing_rules.
  • Hasil Pengujian: 8 dari 8 item uji Sesi #39 berhasil dipetakan 100% akurat ke master produk PostgreSQL blonjo_db dengan total estimasi Rp 5.298.456,66.

  • Lokasi File: ~/kerjaan/mcp-server/src/tools/vibeCopilot.ts
  • Zero Chart Spam vs Smart Auto-Chart:
    • Pertanyaan satu fakta (misal: pengeluaran bensin harian) dijawab padat 1-2 kalimat langsung dari mutasi kas/bank tanpa memunculkan chart.
    • Resolusi belanja multi-item atau komparasi ≥3\ge 3 entitas secara otomatis menyertakan Bar Chart/Donut Chart Plotly yang interaktif.
  • Executive Storytelling: Menghapus kata larangan kaku, menyajikan tabel rincian dengan nama produk resmi database, dan menambahkan blok proposal aksi mesin <!-- ACTION_PROPOSAL -->.

  • Lokasi File: sajen/app/api/v1/insights.py
  • Endpoint Baru: POST /api/v1/insights/action/execute
  • Role-Based Access Control (RBAC):
    • Akses role CASHIER langsung ditolak dengan status HTTP 403 Forbidden (“Hanya Pemilik Toko yang berwenang mengeksekusi aksi ini”).
    • Akses role ADMIN atau is_superuser diizinkan dengan status HTTP 200 OK.
  • Prinsip Draft-First Mutation:
    • Aksi CREATE_PURCHASE_PLAN_DRAFT secara atomik membuat entri rencana belanja baru di tabel purchase_plans dan item di purchase_plan_items tanpa langsung memotong saldo kas/stok fisik sebelum disetujui di modul Pengadaan.
    • Aksi REGISTER_PRODUCT_ALIAS mencatat relasi alias baru ke tabel ocr_alias_mappings.

  • Lokasi File: blonjo/src/pages/insights/VibesChat.tsx
  • Interactive Action Card:
    • Parsing otomatis tag <!-- ACTION_PROPOSAL --> tanpa mengganggu teks obrolan Markdown.
    • Kartu aksi interaktif dengan desain Glassmorphism menampilkan jumlah item teridentifikasi dan total estimasi nominal.
    • Tombol interaktif “Simpan sebagai Draf PO” yang mengeksekusi mutasi langsung ke backend Sajen.
    • State sukses menyediakan tautan langsung (deep-link) menuju menu Pengadaan (/procurement/orders).
    • Proteksi UI otomatis mendisable tombol jika pengguna login sebagai kasir.

Kasus Uji Skenario Hasil yang Diharapkan Status
Batch Resolver Input 8 item nota singkatan Sesi #39 8 item cocok 100% ke master ID database LULUS (100%)
Zero Chart Spam Tanya pengeluaran bensin hari ini Teks naratif kas 1-2 kalimat, tanpa chart LULUS
Smart Chart Rencana belanja multi-item Bar chart Plotly otomatis ter-render LULUS
RBAC Security Eksekusi draft PO menggunakan token Kasir HTTP 403 Forbidden LULUS
CRUD Execution Eksekusi draft PO menggunakan token Owner HTTP 200 OK, Record masuk ke DB ID #41 LULUS
UI Integration Klik Simpan Draf PO di VibesChat Feedback nomor PO & link ke Pengadaan LULUS

Seluruh layanan telah berhasil disinkronkan dan beroperasi penuh di server produksi VPS:

  • mcp-backend-prod (Port 3000): Re-compiled TypeScript & restart container.
  • sajen_backend_api (Port 8005): Sinkronisasi endpoint & restart container.
  • blonjo_frontend (Port 7500): Local Vite build (< 2 detik) & rsync dist ke container Nginx tanpa downtime.