Some checks are pending
CI - Production Readiness / Verify (push) Waiting to run
71 lines
2.8 KiB
Markdown
71 lines
2.8 KiB
Markdown
# Production Readiness Checklist - WhatsApp Inbox
|
|
|
|
## Pre-Deployment
|
|
|
|
- [ ] Semua migration sudah terapkan (`npm run db:deploy`).
|
|
- [ ] Seed data baseline siap (`npm run db:seed`) jika memang dibutuhkan environment pertama.
|
|
- [ ] Environment sudah lengkap:
|
|
- `DATABASE_URL`
|
|
- `AUTH_SECRET`
|
|
- `APP_URL` (atau `OPS_BASE_URL`)
|
|
- `WHATSAPP_WEBHOOK_VERIFY_TOKEN` + `WHATSAPP_WEBHOOK_SECRET`
|
|
- `CAMPAIGN_RETRY_JOB_TOKEN`
|
|
- `SESSION_TTL_SECONDS` (opsional, contoh `86400` untuk 24 jam)
|
|
- `SESSION_COOKIE_DOMAIN` (opsional untuk cookie shared subdomain)
|
|
- optional production hardening:
|
|
- `HEALTHCHECK_TOKEN`
|
|
- `WEBHOOK_FAILURE_RATE_THRESHOLD_PER_HOUR`
|
|
- `RETRY_WORKER_STALE_MINUTES`
|
|
- `WHATSAPP_WEBHOOK_RATE_LIMIT_GET`
|
|
- `WHATSAPP_WEBHOOK_RATE_LIMIT_POST`
|
|
- `WHATSAPP_WEBHOOK_RATE_LIMIT_WINDOW_MS`
|
|
- `AUTH_TOKEN_CONSUMED_RETENTION_HOURS`
|
|
- `CAMPAIGN_RETRY_STALE_LOCK_MINUTES`
|
|
- `WEBHOOK_EVENT_RETENTION_DAYS`
|
|
- `AUDIT_LOG_RETENTION_DAYS`
|
|
- [ ] Run `npm run typecheck`.
|
|
- [ ] Run `npm run build`.
|
|
- [ ] Run `npm run ops:smoke` sebelum deploy dan setelah restart service.
|
|
- [ ] Jika aplikasi pakai PM2, verifikasi restart aman:
|
|
- `npm run ops:safe-restart` (hanya di server, setelah cek git/env terbaru).
|
|
- [ ] Review `.env` tidak mengandung placeholder (contoh `change-me`, `your-*`).
|
|
|
|
## Runtime Readiness (Post-Deploy)
|
|
|
|
- [ ] Start app (`npm start` atau platform runner).
|
|
- [ ] Start campaign retry worker:
|
|
- one-shot cron, or daemon (`npm run job:campaign-retry:daemon`)
|
|
- token dan url job benar.
|
|
- run `npm run ops:maintenance` on a broader schedule (daily/weekly) for cleanup.
|
|
- [ ] Run ops readiness: `npm run ops:readiness`.
|
|
- [ ] Check endpoint health: `GET /api/health`.
|
|
- [ ] Verify sesi login valid dan cookie lifetime:
|
|
- set `OPS_SESSION_CHECK_EMAIL` dan `OPS_SESSION_CHECK_PASSWORD`
|
|
- `npm run ops:session-check`
|
|
- [ ] Verify webhook endpoint reachable: `POST /api/webhooks/whatsapp`.
|
|
- [ ] Verify campaign retry endpoint state:
|
|
- `GET /api/jobs/campaign-retry?token=<CAMPAIGN_RETRY_JOB_TOKEN>`
|
|
|
|
## Observability
|
|
|
|
- [ ] Pastikan alert webhook di `CAMPAIGN_RETRY_ALERT_WEBHOOK_URL` aktif.
|
|
- [ ] Pantau dashboard:
|
|
- `super-admin/alerts` untuk channel disconnect/webhook retry warning.
|
|
- `super-admin/webhook-logs` untuk event gagal.
|
|
- [ ] Jadwalkan pengecekan:
|
|
- `/api/health` setiap 1 menit.
|
|
- campaign retry satu run berkala (cron/daemon) sesuai SLA.
|
|
|
|
## Incident & Recovery
|
|
|
|
- [ ] SOP fallback jika `/api/health` status `down`:
|
|
- cek `prisma.backgroundJobState` (`campaign-retry-worker`)
|
|
- cek `prisma.webhookEvent` status `failed`
|
|
- cek status channel di `super-admin/channels`
|
|
- cek koneksi provider WhatsApp
|
|
- [ ] SOP rollback:
|
|
- `git checkout`/release target sebelumnya
|
|
- restart aplikasi
|
|
- verifikasi `/api/health` kembali `ok`
|
|
- jalanin `npm run ops:readiness`
|