AI Analytics & Assistant
Modul AI terintegrasi untuk: chat assistant berbasis tool-calling (akses semua data ERP), anomaly detection (transaksi mencurigakan), demand forecast (prediksi parts & revenue), dan workshop assistant (rekomendasi servis berdasarkan riwayat). Provider configurable: OpenAI compatible API (Gemma4, GPT, Claude, dst).
4 Sub-Feature AI
Bengkel
Pintar
Pintar
AI
💬 Chat Assistant
⚠️ Anomaly
📈 Forecast
🔧 Workshop
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
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?
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
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+AIMessageuntuk 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 (defaultgemma4)apiKey: encrypted at resttemperature,maxTokens: tunablesystemPrompt: prompt dasar (context bengkel)- UI: Settings → AI (super-admin only)
AIToolConfig
- Per tool: enable/disable, custom description, allowed roles
- Mis. matikan
get_payroll_datauntuk 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
enabledmatiin 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