D
Setup

Deployment

Produksi butuh dua process — app (engine-bot-dazo) dan worker (worker-followupai) via PM2. Branch produksi master. Lockfile di-ignore, install memakai --legacy-peer-deps. Tidak ada automated test.

Produksi engine-bot membutuhkan dua process: app (engine-bot-dazo) dan follow-up worker (worker-followupai). Keduanya dikelola via PM2 di GitHub Actions.

Branch dan workflow

BranchEnvironmentApp processWorker process
stagingStagingengine-bot-devworker-followupai-dev
masterProductionengine-bot-dazoworker-followupai

Dua process

App — engine-bot-dazo

bash
pm2 start app.js --name engine-bot-dazo

Menjalankan Express server di port produksi (1212). Memuat routes, Socket.IO, MongoDB connect, dan Redis health.

Worker — worker-followupai

bash
pm2 start scheduler/worker/worker.js --name worker-followupai

Mengonsumsi queue followUpAi dari Redis (concurrency 10). Worker re-check payment/proof sebelum mengirim pesan WhatsApp terjadwal.

Deploy caveats

CaveatDampak
npm install --legacy-peer-depsLockfile saat ini di-ignore — install tidak reproducible
Workflow install tanpa working-directoryStep install mungkin resolve ke path salah
Tidak ada automated testnpm test selalu gagal — tidak ada regression gate
Kredensial hardcoded di config/env.jsapiKey, jwtSecret ada di source (production baca process.env.OPENAI_API_KEY untuk OpenAI)

Setelah deploy

Verifikasi cepat:

  1. pm2 status — pastikan engine-bot-dazo dan worker-followupai online
  2. curl http://localhost:1212/health — harus status: "ok", redis.healthy: true
  3. Cek log PM2 — cari error [REDIS]/[WORKER]
  4. Test satu endpoint ter-auth (mis. POST /api/chatbot-api dengan Bearer token)
  5. Verifikasi Redis queue: cek followUpAi delayed/waiting/failed

Checklist sebelum push ke master

  • node --check lolos untuk file yang berubah
  • Tidak ada console.log / debug tambahan di diff
  • Tidak ada perubahan config/env.js dengan kredensial nyata
  • Tidak ada perubahan jwtSecret tanpa koordinasi dazoapp
  • Tidak ada perubahan URL service tanpa koordinasi tim
  • Prompt Markdown di prompt/ selaras dengan perubahan agent
  • Commit message jelas, terpisah antara fitur dan pembenahan

Runbook failure

Redis down

  1. Cek /health dan log [REDIS]/[WORKER].
  2. Pulihkan Redis service.
  3. Restart app dan worker karena retry memiliki batas.
  4. Verifikasi producer dapat menambah job dan worker menyelesaikannya.
  5. Cek pending orders yang kehilangan follow-up saat outage.

MongoDB down

  1. Cek MongoDB langsung — /health tidak mendeteksinya.
  2. Pulihkan koneksi sebelum menerima traffic.
  3. Restart app jika startup sebelumnya gagal.
  4. Audit partial order writes karena checkout belum transactional.

Worker down

  1. Cek PM2 process worker-followupai.
  2. Restart worker-followupai sesuai environment.
  3. Cek queue delayed/waiting/failed.
  4. Verifikasi messaging API reachable.

DazoApp payment down

  1. Nonaktifkan instant_payment pada store settings bila outage panjang.
  2. Pertahankan metode lain yang aman dan aktif.
  3. Cek timeout/error log [INSTANT_PAYMENT].
  4. Rekonsiliasi order pending setelah DazoApp pulih.

Log prefixes

PrefixMakna
[Guard]Dedup request
[FastPath]Direct shipping cost path
[MAIN_ORCHESTRATOR]Main agent invocation/routing
[ADMIN_AGENT]Cart/order agent
[SUBAGENT_PAYMENT]Payment agent
[INSTANT_PAYMENT]Checkout creation
[CHECK_PAYMENT_STATUS]DazoApp status check
[FollowUp]Scheduling
[WORKER]Job processing
[WEBHOOK_PAYMENT]Payment callback
[REDIS]Queue Redis connection
[REDIS_HEALTH]Health client connection

Langkah berikutnya