D
Engineering

Customers

Koleksi customers — customer per store, WA, nama, metadata, tags. Multi-tenant via store_id. Soft delete via deleted_at.

Koleksi customers menyimpan customer per store — nomor WhatsApp, nama, metadata, dan tags. Tenant scope via store_id.

Model

models/customers.js:3 — CustomerSchema, mongoose.model("customers", CustomerSchema).

Field

FieldTipeNullableCatatan
idString❌Primary key (UUID) — required: true
store_idString❌Tenant scope — required: true
waString❌Nomor WhatsApp — required: true
nameString❌Nama customer — required: true
typeString❌Default "Customer"
categoryString❌Default "private"
emailString✅Default null
tagsArray❌Default []
otherArray❌Default [] — metadata bebas
latest_contactDate✅Default null
created_atDate❌Default Date.now
updated_atDate❌Default Date.now
deleted_atDate✅Default null — soft delete

Catatan

  • deleted_at dipakai untuk soft delete — query harus filter deleted_at: null bila hanya ingin customer aktif
  • latest_contact diupdate saat ada interaksi baru
  • tags array bebas — tidak ada schema enforcement untuk nilai tag
  • other array metadata bebas — bentuk tidak konsisten antar store

Cara akses di service

js
// service/customer.js (atah di controller)
const customer = await Customer.findOne({
  id: customerId,
  store_id: storeId,
  deleted_at: null,
});

Multi-tenant

Shared dengan dazoapp dan backend-go

Koleksi customers di-shared dengan dazoapp (writer utama) dan backend-go. Engine Bot membaca + kadang menulis (auto-create customer dari percakapan baru). Lihat Database.

Kembali ke