D
Setup

Setup Environment

Satu sumber konfigurasi — config/env.js yang berisi seluruh URL service, kredensial, dan branched per environment. File config/ di-gitignore. JWT_SECRET wajib sinkron dengan dazoapp.

Ada satu sumber konfigurasi utama di engine-bot: config/env.js. File ini memilih environment berdasarkan field env.env dan memegang seluruh URL service, kredensial, dan JWT secret.

Prasyarat

KebutuhanVersi
Node.jsmendukung ES modules + global fetch (18+)
MongoDBberjalan, port 27017
Redisport 6379 (wajib jika fitur follow-up dipakai)
OpenAI API keyuntuk orchestration, vision, transcription
RajaOngkir API keyuntuk ongkir domestik
Messaging API tokenuntuk kirim pesan WhatsApp

Sumber config — config/env.js

File config/env.js memuat dotenv, lalu mendefinisikan object env dengan branched nilai per environment.

Field yang dipakai

FieldTipeCatatan
envstringSelector environment: local, development, production
portstringLocal/development: 1313, production: 1212
base_urlstringURL dazoapp — contoh http://127.0.0.1:8000/
urlEnginestringURL WhatsApp gateway — http://localhost:5002/api/
urlApistringURL backend-go — http://127.0.0.1:8081/v1/
urlAwsstringCDN base URL untuk gambar
allowedIPstringComma-separated — IP yang bypass auth
apiKeystringOpenAI API key (production: dari process.env.OPENAI_API_KEY)
jwtSecretstringWajib sinkron dengan dazoapp
apiKey_RajaOngkirV2stringRajaOngkir API key
base_url_rajaOngkirstringhttps://pro.rajaongkir.com/api
TOKEN_SEND_MESSAGEstringToken untuk messaging API
BASE_URL_SEND_MESSAGEstringURL messaging API (/v1/send_message_admin)

Branch environment

env.envportbase_urlurlApiurlEngineapiKey
local1313http://127.0.0.1:8000/http://127.0.0.1:8081/v1/http://localhost:5002/api/hardcoded
development1313https://app.dazo.dev/http://127.0.0.1:9091/v1/https://engine.dazo.dev/api/hardcoded
production1212https://app.dazo.id/https://api.dazo.dev/v1/https://engine.dazo.id/api/process.env.OPENAI_API_KEY

config/db.js — koneksi MongoDB

js
// config/db.js — ConnectDb()
if (env.env === 'local') {
  url = `mongodb://127.0.0.1:27017/dazo`;
} else {
  // remote — kredensial hardcoded (redacted)
  url = `mongodb://<user>:<pass>@<host>:27017/<dbname>?authSource=admin`;
}
await mongoose.connect(url);
EnvironmentDatabaseHost
localdazo127.0.0.1:27017
lainnyadazodevremote (kredensial hardcoded, redacted)

JWT_SECRET — kontrak lintas-service

Langkah setup

bash
# 1. Install dependensi
npm install

# 2. Buat config/env.js (gitignored — minta dari tim)
#    Set env.env, port, URL service, apiKey, jwtSecret, dll.

# 3. Pastikan MongoDB lokal berjalan di 127.0.0.1:27017

# 4. (Opsional) Redis untuk follow-up worker
#    Berjalan di 127.0.0.1:6379

# 5. Jalankan
npm run dev

Health check

bash
curl http://localhost:1313/health

Response:

json
{
  "status": "ok",
  "service": "engine-bot",
  "redis": {
    "healthy": true,
    "message": "Redis is available - follow-up messages enabled",
    "timestamp": "..."
  },
  "timestamp": "..."
}

Worker follow-up — process terpisah

bash
node scheduler/worker/worker.js

Worker membutuhkan Redis untuk mengonsumsi queue followUpAi. Tanpa Redis, follow-up dilewati — lihat Follow-up Scheduler.

Catatan

  • config/env.js tidak punya .example — berbeda dari .env. File ini harus ada persis sebelum npm run dev.
  • Kredensial DB hardcoded di config/db.js untuk non-local environment — konfirmasi ke tim apakah sudah dipindahkan ke secret manager.
  • allowedIP kosong = tidak ada IP yang bypass auth. Isi hanya IP internal terpercaya.
  • npm test belum menjalankan test suite — script selalu gagal. Lihat Tech Debt.

Langkah berikutnya

Setup selesai? Lanjut ke Local Development untuk menjalankan project.