D
Engineering

Carts

Koleksi carts — staging item sebelum checkout. Custom UUID id, no compound unique index (rawan duplikat). Cart dihapus saat checkout (tidak transactional).

Koleksi carts menyimpan staging item sebelum checkout. Engine Bot menulis + membaca koleksi ini (tidak shared dengan dazoapp).

Model

models/carts.js:3 — cartsSchema, mongoose.model("carts", cartsSchema).

Field

FieldTipeNullableCatatan
idString❌Primary key — unique: true, required: true (custom UUID)
wa_customerString❌Nomor WhatsApp customer — required: true
store_idString❌Tenant scope — required: true
product_idString❌required: true
variant_idString✅Default null — optional
quantityNumber❌Default 0 — required: false
type_productString❌required: true — physical / digital
created_atDate❌Default Date.now
updated_atDate❌Default Date.now

Inkonsistensi yang diketahui

Cara akses di service

js
// service/carts.js
const carts = await Cart.find({
  wa_customer: phone,
  store_id: storeId,
});

// checkout — cart dihapus (tidak transactional)
await Cart.deleteMany({ wa_customer: phone, store_id: storeId });

Checkout flow

text
addToCarts
  -> cart items
  -> initiateOrChangeProductOrder(id_carts)
  -> create/update Orders + Order_Items
  -> cart cleanup (deleteMany)

Mixed physical dan digital cart ditolak oleh order service saat checkout. Lihat Order Flow.

Cart/product scope tidak konsisten

Kembali ke