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_idMongo default _idMongo tetap ada (auto ObjectId), tapi query bisnis berdasarkanidstring- Field nullable memakai
default: null— bukan pointer - Tidak ada index DB yang didefinisikan di kode. Multi-tenant scoping via
store_idhanya di layer aplikasi - Banyak field memakai
require: true(typo) — bukan Mongooserequired. Validasi tidak aktif
Koleksi terdokumentasi
| Koleksi | Model | Dipakai untuk | Status |
|---|---|---|---|
Orders | models/orders.js | Order state, shipping, payment, address, follow-up | Aktif |
customers | models/customers.js | Customer per store — WA, nama, metadata, tags | Aktif |
Products | models/products.js | Katalog, harga, variant, stock, shipping, digital attachment | Aktif |
agents | models/agents.js | Prompt, personality, QnA, follow-up config | Aktif |
carts | models/carts.js | Staging item sebelum checkout | Aktif |
settings | models/settings.js | Origin, payment methods, couriers, store settings | Aktif |
Koleksi lain (belum terdokumentasi)
| Koleksi | Model | Catatan |
|---|---|---|
Order_Items | models/orderItems.js | Snapshot produk/variant/price per order |
banks | models/banks.js | Rekening transfer |
Devices | models/devices.js | Token device messaging (hanya id + token) |
OpenAI logs | models/log_request_openai.js | Token, cost, latency main calls |
conversation | models/conversation.js | Riwayat percakapan (embedding) |
chat_inbox | models/chatInbox.js | Pesan masuk |
chat_outbox | models/chatOutbox.js | Antrian pesan keluar |
chat_list | models/chat_list.js | Daftar percakapan per customer |
notifications | models/notifications.js | Notif chat/order |
prompt | models/prompt.js | Prompt template |
warehouse | models/warehouse.js | Gudang |
categories | models/categories.js | Kategori produk |
cities, province, sub_districts | models/cities.js, dll. | Data wilayah untuk ongkir |
user_stores, users | models/user_stores.js, models/users.js | User + tenant pivot |
Inkonsistensi lintas-koleksi
| Masalah | Detail |
|---|---|
Orders vs orders | Nama model Orders (capital), Mongoose auto-pluralize → orders |
payment_method duplikat | Field payment_method dideklarasikan dua kali di order schema (models/orders.js:203 dan :255) — Mongoose mengambil yang terakhir |
require vs required | Banyak field order memakai require: true (typo) — validasi tidak aktif |
cancel vs cancelled | Writer memakai cancel, scheduler/worker memeriksa cancelled — cancelled order dapat tetap menerima reminder |
| Field naming non-standard | store_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.