Analytics
4 Sub-Feature AI
bengkelpintar.app/ai/chat
AI
💬 Chat Assistant
⚠️ Anomaly
📈 Forecast
🔧 Workshop
AI Chat — Tool-calling Assistant
You: Berapa revenue cabang Bekasi minggu ini, dan top 3 jasa terbanyak?
🤖 AI: [calling tool: get_revenue_summary]
Revenue cabang Bekasi minggu ini: Rp 38.4jt (+12% vs minggu lalu).
Top 3 jasa:
1. Tune-up — 28 WO
2. Ganti Oli — 22 WO
3. Servis Berkala 10rb km — 15 WO
You: Customer mana yg paling banyak spending bulan ini?
🤖 AI: [calling tool: top_customers]
Top spender April 2026: PT Maju Jaya — Rp 12.8jt (8 kendaraan armada). Mau saya buat penawaran loyalty?
Arsitektur AI Module
flowchart TB U[User Frontend] --> R[/api/ai/chat] R --> O[ai.orchestrator.ts
Decide tool to call] O --> T[ai.tools.ts
Tool implementations] T --> DB[(Postgres)] T --> Q[Queue: heavy aggregations] O --> P[Provider Client
ai.client.ts] P -->|HTTPS| LLM[(LLM Provider
OpenAI-compat
Gemma/GPT/Claude)] LLM -->|stream| O O --> R R -->|SSE stream| U CFG[ai.config.ts] -.read.-> O CFG -.read.-> P TC[AIToolConfig table] -.allowlist.-> T ANOM[Anomaly Detector
ai.insights.ts] --> DB FCST[Forecast Engine
ai.specialized.ts] --> DB WS_AI[Workshop Assistant
ai.specialized.ts] --> DB style LLM fill:#fee2e2,stroke:#dc2626 style O fill:#dbeafe,stroke:#3b82f6 style T fill:#fef3c7,stroke:#d97706
Detail Per Feature

💬 Chat Assistant (tool-calling)

  • Conversational interface dengan akses ke data ERP via tool calling
  • Tools: get_revenue, top_customers, parts_low_stock, kpi_summary, dst
  • Streaming response (SSE) untuk UX cepat
  • Tabel AIConversation + AIMessage untuk history
  • Permission: tool dibatasi by role (admin bisa lihat finance, mekanik tidak)

⚠️ Anomaly Detection

  • Periodic scan (cron) atau on-demand
  • Detect: transaksi mencurigakan (deviasi kas tinggi, discount aneh, multiple void)
  • Detect: stok aneh (out tanpa source, qty besar tiba-tiba)
  • Output: alert dashboard + WS notif ke admin
  • Module: ai.insights.ts

📈 Demand Forecast

  • Predict revenue minggu/bulan depan
  • Predict parts demand (untuk PO planning)
  • Time-series analysis pakai data historical 12 bulan
  • Output: chart + recommendation parts to stock-up
  • Module: ai.specialized.ts

🔧 Workshop Assistant

  • Recommend servis berdasarkan history kendaraan + brand/model
  • "Customer X belum servis 4 bulan, terakhir ganti oli — saatnya tune-up"
  • Cross-sell suggestion (parts upgrade, paket promo)
  • Embed di workflow operator saat check-in
Provider & Configuration

AISettings (Singleton Config)

  • 1 row di DB (id="default")
  • provider: openai-compat (universal)
  • baseUrl: endpoint LLM (bisa self-hosted Ollama, Groq, Gemini, OpenAI)
  • model: nama model (default gemma4)
  • apiKey: encrypted at rest
  • temperature, maxTokens: tunable
  • systemPrompt: prompt dasar (context bengkel)
  • UI: Settings → AI (super-admin only)

AIToolConfig

  • Per tool: enable/disable, custom description, allowed roles
  • Mis. matikan get_payroll_data untuk role manager (privacy)
  • Description override: tunjuk LLM kapan harus pakai tool ini
  • Sort order untuk priority di tool selection

Streaming & Performance

  • SSE (Server-Sent Events) untuk streaming response
  • Response chunk by chunk → UX cepat
  • Token usage tercatat di AIMessage.tokensIn/Out
  • Cost tracking per conversation (untuk monitoring spend)

Privacy & Compliance

  • Data sensitive (gaji, NIK) di-mask sebelum kirim ke LLM
  • Setting enabled matiin total kalau perlu
  • Audit log: setiap query AI tercatat (siapa, kapan, tool dipakai)
  • Bisa pilih provider self-hosted untuk full data residency
Use Case Praktis
  • Owner: "Berapa profit cabang Bekasi vs Bandung quarter ini?" → AI query finance, tampil chart komparasi
  • Manager: "Mekanik mana yang KPI turun 2 bulan beruntun?" → AI scan KPI history, list nama + suggestion coaching
  • Operator: Customer datang, AI auto-suggest "Bpk. Andi, terakhir servis 3 bulan lalu, biasanya pakai paket X"
  • Gudang: "Parts apa yang slow-moving?" → AI list 20 parts no-movement > 6 bulan, suggest discount/return
  • Finance: "Cek transaksi anomali bulan ini" → Anomaly engine list 5 entry suspicious, drill-down
  • Marketing: "Customer mana yang loyal dan high-spend tapi nggak datang 6 bulan?" → AI pull list, langsung connect ke follow-up campaign