Backend Go melayani 3 tenant paralel via suffix route. Halaman ini mendokumentasikan delta — perbedaan _admin/_crm dari default, bukan duplikasi full.
Perbedaan umum
| Aspek | default | _admin | _crm |
|---|---|---|---|
| Auth | ✅ JWT wajib | ❌ skip (excluded) | ❌ skip (excluded) |
| Database | dazo (via const DBname) | dazo (sama) | crm_dazo (via MongoClientCrm) |
| Handler file | chat_<domain>.go | chat_<domain>_admin.go | chat_<domain>_crm.go |
| Model | mongo_<col>.go | mongo_<col>_admin.go | mongo_<col>_crm.go |
| Status | Aktif | Aktif | ❌ panic (MongoClientCrm nil) |
Route _admin (16 route)
Mirror dari default untuk chat inbound + lifecycle + send. Semua skip auth.
| Route admin | Mirror default |
|---|---|
POST /v1/callback_message_admin | callback_message |
POST /v1/chat_inbox_admin | chat_inbox |
POST /v1/chat_list_admin | chat_list |
POST /v1/chat_markread_admin | chat_markread |
POST /v1/chat_newinbox_admin | chat_newinbox |
POST /v1/chat_inboxdetail_admin | chat_inboxdetail |
POST /v1/chat_finish_admin | chat_finish |
POST /v1/chat_pending_admin | chat_pending |
POST /v1/chat_move_admin | chat_move |
POST /v1/send_message_admin | send_message |
POST /v1/send_image_admin | send_image |
POST /v1/send_document_admin | send_document |
POST /v1/send_audio_admin | send_audio |
POST /v1/send_video_admin | send_video |
POST /v1/send_link_admin | send_link |
POST /v1/send_location_admin | send_location |
POST /v1/send_express_admin | send_express |
Delta admin
- Auth skip — semua route di
excludedPaths(authMiddleware.go:15-32) - Database sama —
dazo, bukan DB terpisah - Model berbeda — beberapa pakai
DeviceStructAdmin(mongo_device_admin.go) dengan field tambahan - Helper terpisah —
saveMessageMongoAdmin(chat_submit_admin.go:471),submitPointAdmin(chat_live_admin.go:1050),SubmitLiveUpdateAdmin(chat_live_admin.go:1012) - Tidak ada route lifecycle lengkap — tidak ada
handle_chat_admin,chat_open_admin,chat_requesthandle_admin,chat_finishhandle_admin(dikomentari diroutes.go:76-77)
Route _crm (16 route)
Mirror default + broadcast crm. Semua skip auth. Saat ini panic karena MongoClientCrm nil.
| Route crm | Mirror default |
|---|---|
POST /v1/callback_message_crm | callback_message |
POST /v1/chat_inbox_crm | chat_inbox |
POST /v1/chat_list_crm | chat_list |
POST /v1/chat_markread_crm | chat_markread |
POST /v1/chat_inboxdetail_crm | chat_inboxdetail |
POST /v1/chat_finish_crm | chat_finish |
POST /v1/chat_pending_crm | chat_pending |
POST /v1/send_message_crm | send_message |
POST /v1/send_image_crm | send_image |
POST /v1/send_document_crm | send_document |
POST /v1/send_audio_crm | send_audio |
POST /v1/send_video_crm | send_video |
POST /v1/send_link_crm | send_link |
POST /v1/send_location_crm | send_location |
POST /v1/send_express_crm | send_express |
POST /v1/send_broadcast_crm | send_broadcast |
Tidak ada varian CRM untuk: chat_inbox_position, chat_newinbox, handle_chat, chat_open, chat_move, chat_requesthandle, chat_finishhandle, semua route notif, broadcast/scheduler.
Delta crm
- Auth skip — semua route di
excludedPaths(authMiddleware.go:33-50) - Database berbeda —
crm_dazoviaMongoClientCrm(yang nil) - Model berbeda —
DeviceCrmStruct(mongo_device_crm.go),ChatHistoryStructCRM(mongo_chathistory_crm.go), dll - Helper terpisah —
saveMessageMongoCrm(chat_submit_crm.go:423),submitPointkeEngineUriCRM,SubmitLiveUpdateCRM(chat_live_crm.go:1131) - Broadcast crm —
broadcast_crm.go:127pakaiEngineUriCRM + "send-broadcast"(:5003),submitPointnon-context, tanpa rate limiter - Tidak ada lifecycle lengkap — tidak ada
handle_chat_crm,chat_open_crm,chat_move_crm, escalation crm
Mengapa 3x duplikasi?
Keputusan desain historis. Setiap tenant punya:
- File handler sendiri (
chat_live.go+_admin.go+_crm.go) - Model sendiri (
mongo_device.go+_admin.go+_crm.go) - Helper sendiri (
saveMessageMongo+Admin+Crm)
Konsekuensi: perubahan di default harus di-propagasi manual ke 2 varian lain. Cleanup ke route param + tenant resolver dinamis adalah tech debt.
Route yang TIDAK punya varian tenant
| Route | Varian | Catatan |
|---|---|---|
chat_inbox_position | default only | Tidak ada _admin/_crm |
chat_newinbox | default only | Hanya default + _admin |
handle_chat | default only | Tidak ada varian |
chat_open | default only | Tidak ada varian |
chat_move | default + _admin only | Tidak ada _crm |
Semua notif (*_notif) | default only | Tidak ada varian |
broadcast/scheduler | default only | Hanya send_broadcast yang punya _crm |
change_ticket_status | default only (CRM context) | Pakai MongoClientCrm internal |
Kembali ke
- API Reference Index — daftar semua grup
- Multi-tenant — konsep tenant
- Tech Debt — issue #8 (MongoClientCrm nil)