Operasional
Sub-Modul CRM (8 Fitur)

👤 Customer Master

  • Data dasar: nama, phone, email, alamat
  • Type: regular / corporate
  • memberCard unique untuk loyalty card
  • totalSpend auto-computed dari WO history
  • Admin: /crm + /crm/create

🚗 Vehicles per Customer

  • 1 customer bisa punya banyak kendaraan
  • Plat unique, brand/model/year/color
  • STNK expiry → trigger auto follow-up
  • Riwayat servis ter-archive
  • Admin: /crm/vehicles

📊 Customer Analytics

  • Dashboard: top spenders, retention rate, lifetime value
  • Segmentation: by tier, by frequency, by spending range
  • Cohort analysis: retention per bulan onboard
  • Filter per cabang / corporate type
  • Admin: /crm/analytics

📞 Follow-up Management

  • Auto-generated dari cron: STNK expired, customer inactive > 6 bulan
  • Manual entry dari operator/marketing
  • Status: pendingcontactedresolved / cancelled
  • FollowupType: stnk_expired, inactive_customer, service_due, custom
  • Admin: /crm/followup

⏰ Deferred Follow-up

  • Snooze follow-up ke tanggal tertentu
  • "Ingatkan saya 2 minggu lagi"
  • Cron auto-aktivasi ketika dueDate tiba
  • Admin: /crm/deferred

🏆 Loyalty Tier

  • Auto-tier berdasar totalSpend: bronze / silver / gold / platinum
  • Threshold: ≥1jt silver, ≥5jt gold, ≥15jt platinum
  • Cron loyalty-tier Senin pagi recalc
  • Tier-based discount, priority booking, free gifts
  • Admin: /crm/loyalty

🔔 Service Reminder

  • Cron service-reminder harian 09:00
  • Trigger ke customer yang last visit ≈ 3 bulan lalu
  • Kirim email + WhatsApp dengan rekomendasi paket
  • Admin: /crm/reminders

⭐ Reviews & Rating

  • Customer rating per WO (post-service)
  • Tampil di profile mekanik (untuk KPI)
  • Negative review → auto-create follow-up untuk recovery
  • Integrasi dengan Google Maps review (one-way: dari Maps ke sistem)
  • Admin: /crm/reviews
Corporate Pricing (B2B Special)

Customer Type: corporate

  • Aktivkan saat type=corporate di customer master
  • Unlock: custom price list, payment term (kredit), invoice ke email PIC
  • Multi-vehicle armada management

CorporatePrice Override

  • Tabel CorporatePrice per customer × jasa/part
  • Override harga master saat WO dibuat untuk customer ini
  • Discount % atau fixed price
  • Effective date range (mulai-berakhir)
  • API: customer/corporatePrice.route.ts

Quotation Multi-Kendaraan

  • Quotation builder support batch (5-50 kendaraan)
  • Import CSV daftar plat
  • Apply paket per kendaraan auto-resolve harga corporate
  • Convert ke multiple WO dengan jadwal staggered

Payment Term & AR

  • Default term: NET 30 / 60 days (configurable per customer)
  • Invoice ter-aging di AR sampai dibayar
  • Reminder otomatis sebelum due date
  • Linked ke modul Finance / AR
Data Flow CRM
flowchart TB C[Customer] --> V[Vehicles 1..N] C --> WO[WorkOrders] C --> P[Payments] C --> RV[Reviews] C --> F[Followups] C --> CP[CorporatePrice
if corporate] WO --> KPI[KPI Mekanik] WO --> totalSpend[totalSpend computed] totalSpend --> LT[Loyalty Tier] CR1[Cron loyalty-tier] -.recalc.-> LT CR2[Cron auto-followup] -.create.-> F CR3[Cron service-reminder] -.email.-> C CR4[Cron booking-reminder] -.WA.-> C AI[AI Workshop Assistant] -.read.-> C AI -.read.-> WO AI -.suggest service.-> C style C fill:#dbeafe,stroke:#3b82f6 style LT fill:#fef3c7,stroke:#d97706 style AI fill:#f0fdf4,stroke:#16a34a
Tabel & Event

Tabel: Customer, Vehicle, Followup, Review, CorporatePrice, NotificationLog

WS Events: followup:created, followup:resolved, review:received

Cron jobs: auto-followup, loyalty-tier, booking-reminder, service-reminder

Queue jobs: email (service reminder), whatsapp (booking reminder, follow-up)