D
Engineering

Schema MongoDB

Bentuk dokumen MongoDB per koleksi kritis di engine-bot. Tidak ada migration — sumbernya Mongoose schema di models. Mencakup orders, customers, products, agents, carts, settings.

Tidak ada migration sebagai acuan skema di engine-bot. Bentuk dokumen diturunkan dari Mongoose schema di models/*.js. Halaman ini mendokumentasikan 6 koleksi kritis.

Konvensi umum

  • Semua model memakai Mongoose — ada layer ODM tipis
  • Primary key: field id (string UUID) — bukan _id Mongo default
  • _id Mongo tetap ada (auto ObjectId), tapi query bisnis berdasarkan id string
  • Field nullable memakai default: null — bukan pointer
  • Tidak ada index DB yang didefinisikan di kode. Multi-tenant scoping via store_id hanya di layer aplikasi
  • Banyak field memakai require: true (typo) — bukan Mongoose required. Validasi tidak aktif

Koleksi terdokumentasi

KoleksiModelDipakai untukStatus
Ordersmodels/orders.jsOrder state, shipping, payment, address, follow-upAktif
customersmodels/customers.jsCustomer per store — WA, nama, metadata, tagsAktif
Productsmodels/products.jsKatalog, harga, variant, stock, shipping, digital attachmentAktif
agentsmodels/agents.jsPrompt, personality, QnA, follow-up configAktif
cartsmodels/carts.jsStaging item sebelum checkoutAktif
settingsmodels/settings.jsOrigin, payment methods, couriers, store settingsAktif

Koleksi lain (belum terdokumentasi)

KoleksiModelCatatan
Order_Itemsmodels/orderItems.jsSnapshot produk/variant/price per order
banksmodels/banks.jsRekening transfer
Devicesmodels/devices.jsToken device messaging (hanya id + token)
OpenAI logsmodels/log_request_openai.jsToken, cost, latency main calls
conversationmodels/conversation.jsRiwayat percakapan (embedding)
chat_inboxmodels/chatInbox.jsPesan masuk
chat_outboxmodels/chatOutbox.jsAntrian pesan keluar
chat_listmodels/chat_list.jsDaftar percakapan per customer
notificationsmodels/notifications.jsNotif chat/order
promptmodels/prompt.jsPrompt template
warehousemodels/warehouse.jsGudang
categoriesmodels/categories.jsKategori produk
cities, province, sub_districtsmodels/cities.js, dll.Data wilayah untuk ongkir
user_stores, usersmodels/user_stores.js, models/users.jsUser + tenant pivot

Inkonsistensi lintas-koleksi

MasalahDetail
Orders vs ordersNama model Orders (capital), Mongoose auto-pluralize → orders
payment_method duplikatField payment_method dideklarasikan dua kali di order schema (models/orders.js:203 dan :255) — Mongoose mengambil yang terakhir
require vs requiredBanyak field order memakai require: true (typo) — validasi tidak aktif
cancel vs cancelledWriter memakai cancel, scheduler/worker memeriksa cancelled — cancelled order dapat tetap menerima reminder
Field naming non-standardstore_id, customer_id, order_number (snake_case) vs variant_product, followUp, progress_order (camelCase mix)

Shared dengan dazoapp dan backend-go

Koleksi customers, Products, Orders, agents, settings, devices di-shared dengan dazoapp (writer utama) dan backend-go tanpa schema validation. Lihat Database untuk kontrak implisit.

Catatan verifikasi

Field yang ditulis di luar model yang diperiksa mungkin terlewat — dazoapp dapat menulis field tambahan. Verifikasi dengan db.<collection>.findOne() di staging sebelum dokumentasi ini dijadikan acuan.