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.
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:
- 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.
- Kekakuan Sintesis & Prompt Larangan: Model terbebani instruksi “DILARANG KERAS” yang menghasilkan gaya bahasa kaku, apologetis, serta tidak mencerminkan wawasan bisnis (Executive Storytelling).
- 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.
- 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:
- Explicit Alias Matching: Pemetaan langsung dari tabel
ocr_alias_mappings(Score: 1.00). - Exact Token & Word Boundary Regex: Pencarian kata kunci utuh menggunakan batas kata
\yPostgreSQL untuk menghindari false match sepertiSIPmencocokkanSAMPURNA(Score: 0.85). - Trigram Similarity: Menggunakan ekstensi
pg_trgm(similaritydanword_similarity> 0.25) untuk menangani typo sepertiKacang Tabah➔KACANG TANAH(Score: 0.30 - 0.80).
- Explicit Alias Matching: Pemetaan langsung dari tabel
- Ekstraksi HPP & Harga Bertingkat: Otomatis menarik harga pokok modal (
moving_average_cost), harga pembelian terakhir (last_purchase_price), serta aturan harga tier daritenant_pricing_rules. - Hasil Pengujian: 8 dari 8 item uji Sesi #39 berhasil dipetakan 100% akurat ke master produk PostgreSQL
blonjo_dbdengan 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 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
CASHIERlangsung ditolak dengan status HTTP 403 Forbidden (“Hanya Pemilik Toko yang berwenang mengeksekusi aksi ini”). - Akses role
ADMINatauis_superuserdiizinkan dengan status HTTP 200 OK.
- Akses role
- Prinsip Draft-First Mutation:
- Aksi
CREATE_PURCHASE_PLAN_DRAFTsecara atomik membuat entri rencana belanja baru di tabelpurchase_plansdan item dipurchase_plan_itemstanpa langsung memotong saldo kas/stok fisik sebelum disetujui di modul Pengadaan. - Aksi
REGISTER_PRODUCT_ALIASmencatat relasi alias baru ke tabelocr_alias_mappings.
- Aksi
- 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.
- Parsing otomatis tag
| 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.