backend-go memanggil tiga service eksternal via HTTP, plus AWS S3 untuk upload. URL service di-hardcode di handlers/environtment.go — bukan dari .env.
Peta service
| Service | Konstanta | URL | Port | Dipanggil via |
|---|---|---|---|---|
| WhatsApp gateway | EngineUri | http://localhost:5002/api/ | :5002 | submitPoint |
| CRM engine | EngineUriCRM | http://localhost:5003/ | :5003 | submitPoint / SubmitLiveUpdateCRM |
| Chatbot engine | EngineBot | http://localhost:1313/ | :1313 | submitPoint |
| AWS S3 | AWS_* env | — | — | handlers/upload.go |
WhatsApp gateway (EngineUri)
Dipanggil via submitPoint(uri, formData, ...) di handlers/chat_live.go:2828-2879 — http.Post dengan application/x-www-form-urlencoded.
Endpoint yang dipanggil
| Endpoint | Lokasi pemanggilan | Fungsi |
|---|---|---|
EngineUri + "update-chatlist" | chat_live.go:1951,2065,2165,2394,2610,2688 dll | Update chat list setelah finish/pending/move |
EngineUri + "send-broadcast" | broadcast.go:689,794,808,822 | Kirim broadcast fan-out |
EngineUri + "send-media" | broadcast.go:935,944,958,972 | Kirim media broadcast |
EngineUri + "submit-pixel" | chat_order.go:417 | Tracking pixel/ads conversion |
EngineUri + "push-notif" | notif_live.go:583 | Push notifikasi ke device |
Tenant admin
chat_live_admin.go memakai submitPointAdmin (chat_live_admin.go:1050) dan SubmitLiveUpdateAdmin (chat_live_admin.go:1012) — wrapper ke EngineUri yang sama.
CRM engine (EngineUriCRM)
| Endpoint | Lokasi | Fungsi |
|---|---|---|
EngineUriCRM + "update-chatlist" | chat_live_crm.go:580,708 | Update chatlist CRM |
EngineUriCRM + "send-broadcast" | broadcast_crm.go:127 | Kirim broadcast CRM |
Dipanggil via SubmitLiveUpdateCRM (chat_live_crm.go:1131).
Chatbot engine (EngineBot)
Dipanggil dari chat_callback.go untuk dispatch bot reply. Endpoint spesifik dibaca dari handler — lihat handlers/chat_callback.go untuk detail.
AWS S3 — handlers/upload.go
Upload file via aws-sdk-go-v2:
func UploadFile(c *fiber.Ctx) error {
// parse multipart
// upload ke S3 bucket
// return URL via config.Env.AwsUrl
}Kredensial dari .env:
| Env | Penggunaan |
|---|---|
AWS_ACCESS_KEY_ID | Access key |
AWS_SECRET_ACCESS_KEY | Secret key |
AWS_DEFAULT_REGION | Region |
AWS_BUCKET | Bucket name |
AWS_URL | CDN base URL untuk response |
Pola submitPoint
Helper submitPoint (chat_live.go:2828) mem-post form data ke service eksternal:
func submitPoint(uri string, formData url.Values, ...) {
resp, err := http.Post(uri, "application/x-www-form-urlencoded",
strings.NewReader(formData.Encode()))
// ... handle response
}Tidak ada retry, tidak ada timeout eksplisit, tidak ada circuit breaker. Jika service eksternal down, request blocking sampai default timeout HTTP.
Dependency diagram
┌──────────────────┐
│ dazoapp (Vue) │
│ localStorage │
│ access_token │
└────────┬─────────┘
│ Bearer <jwt>
▼
┌──────────────────┐
│ backend-go │
│ Fiber :8081 │
└──┬────────┬──────┘
│ │
submitPoint │ │ mongo-driver
▼ ▼
┌──────────────┐ ┌──────────────┐
│ WA gateway │ │ MongoDB │
│ :5002/:5003 │ │ dazo │
│ :5004 │ │ crm_dazo │
└──────────────┘ └──────────────┘
▲
│ shared collections
│ (chat_outbox, chat_inbox)
┌──────────────┐
│ Node engine │
│ cron + BullMQ│
│ Redis │
└──────────────┘Yang TIDAK boleh diubah tanpa koordinasi
| Area | Lokasi |
|---|---|
EngineUri, EngineUriCRM, EngineBot | handlers/environtment.go (gitignored) |
Payload update-chatlist, send-broadcast, submit-pixel | Format form-data di submitPoint call sites |
callback_message payload dari WA gateway | Format body yang diterima handler |
Langkah berikutnya
- Cara pesan mengalir? Baca Message Flow.
- Known issues? Baca Tech Debt.