Tidak ada migration sebagai acuan skema di engine-whatsapp. Bentuk dokumen diturunkan dari Mongoose schema di src/model/*.model.ts. Halaman ini mendokumentasikan 4 koleksi yang dikelola engine.
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 berdasarkanidstringchat_inboxmemakaistrict: false— field tambahan dari writer (backend-go) tetap tersimpan- Nama model di
model()menentukan nama koleksi (Mongoose auto-pluralize + lowercase)
Koleksi terdokumentasi
| Koleksi | Model | Dipakai untuk | Status |
|---|---|---|---|
devices | src/model/devices.model.ts | Device milik user — diupdate saat koneksi open/close | Aktif |
admin_devices | src/model/admin_devices.model.ts | Fallback bila instanceId tidak ada di devices — punya field ekstra status | Aktif |
chat_inbox | src/model/chatInbox.model.ts | Pesan — dibaca engine untuk cari temp_id. strict: false | Aktif (read-only di engine) |
chat_histories | src/model/chatHistory.model.ts | Sesi percakapan per nomor — dibuat otomatis saat pesan masuk | Aktif |
devices vs admin_devices
Saat status koneksi berubah, engine mencari devices lebih dulu. Jika tidak ketemu, update diarahkan ke admin_devices:
| Aspek | devices | admin_devices |
|---|---|---|
Field id | ✅ (UUID = instanceId) | ✅ (UUID = instanceId) |
no_wa, is_connected | ✅ | ✅ |
status (0/1) | ❌ | ✅ (field ekstra) |
iduser, store_id, token | ✅ | ✅ |
| Dipakai saat | Device ada di devices | Fallback bila tidak ada di devices |
Inkonsistensi yang diketahui
| Masalah | Detail |
|---|---|
Nama model Admin_Device | model('Admin_Device', ...) → Mongoose auto-pluralize → koleksi admin_devices. Tapi export DeviceAdminModel — verifikasi nama koleksi aktual di DB |
chat_inbox.strict: false | Field tambahan dari writer (backend-go) tetap tersimpan tanpa validasi engine |
| Tidak ada index komposit | Query chat_histories filter store_id + instance + nohp + end_date + status tanpa compound index |
Lihat Tech Debt untuk daftar lengkap.
Shared dengan dazoapp dan backend-go
| Koleksi | Engine WhatsApp | Dibagi dengan |
|---|---|---|
devices | ✅ update no_wa, is_connected | dazoapp (writer), backend-go |
admin_devices | ✅ update (fallback) | dazoapp |
chat_inbox | read-only (cari temp_id) | backend-go (writer) |
chat_histories | ✅ create | backend-go |
Catatan verifikasi
Field yang ditulis di luar model yang diperiksa mungkin terlewat — backend-go dapat menulis field tambahan ke chat_inbox (karena strict: false). Verifikasi dengan db.<collection>.findOne() di staging sebelum dokumentasi ini dijadikan acuan.