D
Engineering

External Services

Tiga service eksternal dipanggil via HTTP — WA gateway :5002, CRM engine :5003, chatbot engine :1313. URL hardcoded di handlers/environtment.go, bukan config.

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

ServiceKonstantaURLPortDipanggil via
WhatsApp gatewayEngineUrihttp://localhost:5002/api/:5002submitPoint
CRM engineEngineUriCRMhttp://localhost:5003/:5003submitPoint / SubmitLiveUpdateCRM
Chatbot engineEngineBothttp://localhost:1313/:1313submitPoint
AWS S3AWS_* 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

EndpointLokasi pemanggilanFungsi
EngineUri + "update-chatlist"chat_live.go:1951,2065,2165,2394,2610,2688 dllUpdate chat list setelah finish/pending/move
EngineUri + "send-broadcast"broadcast.go:689,794,808,822Kirim broadcast fan-out
EngineUri + "send-media"broadcast.go:935,944,958,972Kirim media broadcast
EngineUri + "submit-pixel"chat_order.go:417Tracking pixel/ads conversion
EngineUri + "push-notif"notif_live.go:583Push 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)

EndpointLokasiFungsi
EngineUriCRM + "update-chatlist"chat_live_crm.go:580,708Update chatlist CRM
EngineUriCRM + "send-broadcast"broadcast_crm.go:127Kirim 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:

go
func UploadFile(c *fiber.Ctx) error {
    // parse multipart
    // upload ke S3 bucket
    // return URL via config.Env.AwsUrl
}

Kredensial dari .env:

EnvPenggunaan
AWS_ACCESS_KEY_IDAccess key
AWS_SECRET_ACCESS_KEYSecret key
AWS_DEFAULT_REGIONRegion
AWS_BUCKETBucket name
AWS_URLCDN base URL untuk response

Pola submitPoint

Helper submitPoint (chat_live.go:2828) mem-post form data ke service eksternal:

go
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

text
                 ┌──────────────────┐
                 │   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

AreaLokasi
EngineUri, EngineUriCRM, EngineBothandlers/environtment.go (gitignored)
Payload update-chatlist, send-broadcast, submit-pixelFormat form-data di submitPoint call sites
callback_message payload dari WA gatewayFormat body yang diterima handler

Langkah berikutnya