D
API Reference

Tenant Variants

Perbedaan route _admin dan _crm vs default. 16 route admin + 16 route crm, hampir identik dengan delta kecil. Catatan field dan behavior yang berbeda.

Backend Go melayani 3 tenant paralel via suffix route. Halaman ini mendokumentasikan delta — perbedaan _admin/_crm dari default, bukan duplikasi full.

Perbedaan umum

Aspekdefault_admin_crm
Auth✅ JWT wajib❌ skip (excluded)❌ skip (excluded)
Databasedazo (via const DBname)dazo (sama)crm_dazo (via MongoClientCrm)
Handler filechat_<domain>.gochat_<domain>_admin.gochat_<domain>_crm.go
Modelmongo_<col>.gomongo_<col>_admin.gomongo_<col>_crm.go
StatusAktifAktif❌ panic (MongoClientCrm nil)

Route _admin (16 route)

Mirror dari default untuk chat inbound + lifecycle + send. Semua skip auth.

Route adminMirror default
POST /v1/callback_message_admincallback_message
POST /v1/chat_inbox_adminchat_inbox
POST /v1/chat_list_adminchat_list
POST /v1/chat_markread_adminchat_markread
POST /v1/chat_newinbox_adminchat_newinbox
POST /v1/chat_inboxdetail_adminchat_inboxdetail
POST /v1/chat_finish_adminchat_finish
POST /v1/chat_pending_adminchat_pending
POST /v1/chat_move_adminchat_move
POST /v1/send_message_adminsend_message
POST /v1/send_image_adminsend_image
POST /v1/send_document_adminsend_document
POST /v1/send_audio_adminsend_audio
POST /v1/send_video_adminsend_video
POST /v1/send_link_adminsend_link
POST /v1/send_location_adminsend_location
POST /v1/send_express_adminsend_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 di routes.go:76-77)

Route _crm (16 route)

Mirror default + broadcast crm. Semua skip auth. Saat ini panic karena MongoClientCrm nil.

Route crmMirror default
POST /v1/callback_message_crmcallback_message
POST /v1/chat_inbox_crmchat_inbox
POST /v1/chat_list_crmchat_list
POST /v1/chat_markread_crmchat_markread
POST /v1/chat_inboxdetail_crmchat_inboxdetail
POST /v1/chat_finish_crmchat_finish
POST /v1/chat_pending_crmchat_pending
POST /v1/send_message_crmsend_message
POST /v1/send_image_crmsend_image
POST /v1/send_document_crmsend_document
POST /v1/send_audio_crmsend_audio
POST /v1/send_video_crmsend_video
POST /v1/send_link_crmsend_link
POST /v1/send_location_crmsend_location
POST /v1/send_express_crmsend_express
POST /v1/send_broadcast_crmsend_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_dazo via MongoClientCrm (yang nil)
  • Model berbeda — DeviceCrmStruct (mongo_device_crm.go), ChatHistoryStructCRM (mongo_chathistory_crm.go), dll
  • Helper terpisah — saveMessageMongoCrm (chat_submit_crm.go:423), submitPoint ke EngineUriCRM, SubmitLiveUpdateCRM (chat_live_crm.go:1131)
  • Broadcast crm — broadcast_crm.go:127 pakai EngineUriCRM + "send-broadcast" (:5003), submitPoint non-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

RouteVarianCatatan
chat_inbox_positiondefault onlyTidak ada _admin/_crm
chat_newinboxdefault onlyHanya default + _admin
handle_chatdefault onlyTidak ada varian
chat_opendefault onlyTidak ada varian
chat_movedefault + _admin onlyTidak ada _crm
Semua notif (*_notif)default onlyTidak ada varian
broadcast/schedulerdefault onlyHanya send_broadcast yang punya _crm
change_ticket_statusdefault only (CRM context)Pakai MongoClientCrm internal

Kembali ke