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
| Branch | Environment | App process | Worker process |
|---|---|---|---|
staging | Staging | engine-bot-dev | worker-followupai-dev |
master | Production | engine-bot-dazo | worker-followupai |
Dua process
App — engine-bot-dazo
pm2 start app.js --name engine-bot-dazoMenjalankan Express server di port produksi (1212). Memuat routes, Socket.IO, MongoDB connect, dan Redis health.
Worker — worker-followupai
pm2 start scheduler/worker/worker.js --name worker-followupaiMengonsumsi queue followUpAi dari Redis (concurrency 10). Worker re-check payment/proof sebelum mengirim pesan WhatsApp terjadwal.
Deploy caveats
| Caveat | Dampak |
|---|---|
npm install --legacy-peer-deps | Lockfile saat ini di-ignore — install tidak reproducible |
Workflow install tanpa working-directory | Step install mungkin resolve ke path salah |
| Tidak ada automated test | npm test selalu gagal — tidak ada regression gate |
Kredensial hardcoded di config/env.js | apiKey, jwtSecret ada di source (production baca process.env.OPENAI_API_KEY untuk OpenAI) |
Setelah deploy
Verifikasi cepat:
pm2 status— pastikanengine-bot-dazodanworker-followupaionlinecurl http://localhost:1212/health— harusstatus: "ok",redis.healthy: true- Cek log PM2 — cari error
[REDIS]/[WORKER] - Test satu endpoint ter-auth (mis.
POST /api/chatbot-apidengan Bearer token) - Verifikasi Redis queue: cek
followUpAidelayed/waiting/failed
Checklist sebelum push ke master
-
node --checklolos untuk file yang berubah - Tidak ada
console.log/ debug tambahan di diff - Tidak ada perubahan
config/env.jsdengan kredensial nyata - Tidak ada perubahan
jwtSecrettanpa koordinasidazoapp - 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
- Cek
/healthdan log[REDIS]/[WORKER]. - Pulihkan Redis service.
- Restart app dan worker karena retry memiliki batas.
- Verifikasi producer dapat menambah job dan worker menyelesaikannya.
- Cek pending orders yang kehilangan follow-up saat outage.
MongoDB down
- Cek MongoDB langsung —
/healthtidak mendeteksinya. - Pulihkan koneksi sebelum menerima traffic.
- Restart app jika startup sebelumnya gagal.
- Audit partial order writes karena checkout belum transactional.
Worker down
- Cek PM2 process
worker-followupai. - Restart
worker-followupaisesuai environment. - Cek queue delayed/waiting/failed.
- Verifikasi messaging API reachable.
DazoApp payment down
- Nonaktifkan
instant_paymentpada store settings bila outage panjang. - Pertahankan metode lain yang aman dan aktif.
- Cek timeout/error log
[INSTANT_PAYMENT]. - Rekonsiliasi order pending setelah DazoApp pulih.
Log prefixes
| Prefix | Makna |
|---|---|
[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
- Detail workflow GitHub Actions? Baca CI/CD & GitHub Actions.
- Setup environment? Baca Environment.
- Cara kerja follow-up? Baca Follow-up Scheduler.