Lewati ke konten utama

Konfigurasi Environment

Semua nilai di bawah dibaca dari .env. .env tidak pernah masuk git — perubahannya diterapkan manual per server.


Peta konfigurasi


Aplikasi

VariabelFungsiCatatan
APP_KEYKunci enkripsi Laravel⚠️ Mengubahnya membuat semua kolom terenkripsi tidak terbaca
APP_URLBase URL aplikasiDipakai eksplisit untuk membangun URL webhook WhatsApp
APP_ENVlocal | staging | production
APP_DEBUGTampilkan detail errorHarus false di produksi
APP_KEY adalah kunci semua kredensial

Kolom terenkripsi: ai_agents.llm_api_key, whatsapp_business_accounts.gateway_api_key, gateway_api_secret, gateway_client_secret, gateway_password. Kehilangan APP_KEY berarti semua ini harus diisi ulang manual.


Database utama

VariabelDefaultCatatan
DB_CONNECTIONsqliteProduksi: pgsql
DB_HOST / DB_PORT127.0.0.1 / 5432
DB_DATABASElaravelProduksi: laravel_db
DB_USERNAME / DB_PASSWORDProduksi: laravel_user
DB_SSLMODEprefer

Koneksi pgsql_crm dan pgsql_ai memakai variabel yang sama, hanya search_path-nya berbeda.


Database SIMRS (read-only)

VariabelDefault
SIMRS_DB_HOST127.0.0.1
SIMRS_DB_PORT3306
SIMRS_DB_DATABASEdev_simrs_b
SIMRS_DB_USERNAME(kosong)
SIMRS_DB_PASSWORD(kosong)

Koneksi memakai strict = false karena data lama SIMRS tidak selalu memenuhi mode ketat MySQL.


SIMRS Sync

VariabelDefaultFungsi
SIMRS_SYNC_CHUNK1000Baris per chunk
SIMRS_SYNC_SCHEDULE_ENABLEDtrueNyalakan jadwal harian 01:00 WIB
SIMRS_SYNC_SCHEDULE_TIME01:00Informatif (cron di-hardcode 0 1 * * *)
Matikan di lokal & staging

Sinkronisasi ini menarik seluruh gudang data SIMRS eksternal. Setel SIMRS_SYNC_SCHEDULE_ENABLED=false di lingkungan non-produksi.


WhatsApp

VariabelDefaultFungsi
WHATSAPP_TEST_MODEfalse⚠️ Wajib false di produksi
WHATSAPP_WEBHOOK_VERIFY_TOKEN(kosong)Fallback global; bisa dioverride per akun
WHATSAPP_CONTACT_SYNC_ENABLEDtrueSapuan kontak terjadwal
WHATSAPP_CONTACT_SYNC_CRON*/10 * * * *Kadens sapuan kontak
Efek WHATSAPP_TEST_MODE=true di produksi

AI hanya membalas nomor whitelist, dan setiap pesan keluar dialihkan ke nomor tester pertama — termasuk link pembayaran dan konfirmasi lunas. Kalau whitelist kosong, semua pesan keluar diblokir dengan error.

Kredensial gerbang WhatsApp tidak ada di .env — disimpan per akun di tabel whatsapp_business_accounts (terenkripsi).


Duitku

VariabelDefaultFungsi
DUITKU_MERCHANT_CODEKode merchant
DUITKU_API_KEYKunci untuk signature
DUITKU_ENVsandboxsandbox | production
DUITKU_RESERVATION_FEE25000Tarif reservasi (rupiah)
DUITKU_CALLBACK_URLhttps://crmrsi.balascepat.com/webhook/duitkuHarus didaftarkan di dashboard Duitku
DUITKU_RETURN_URLhttps://crmrsi.balascepat.com/booking/thanksHalaman setelah bayar
DUITKU_EXPIRY_MINUTES60Umur link pembayaran
DUITKU_RESERVATION_FEE adalah satu-satunya sumber tarif

Tidak ada satu pun tool AI yang menerima argumen nominal. Mengubah nilai ini langsung mengubah tarif semua link pembayaran berikutnya. Draft lama tetap menyimpan tarif yang berlaku saat link dibuat.


Akses panel

VariabelDefault
FILAMENT_IMPERSONATOR_ROLESsuper_admin,admin
FILAMENT_IMPERSONATION_BLOCKED_ROLESsuper_admin

Dipisah koma. Kalau kosong/tidak valid, sistem jatuh ke default.


API Inimedia

VariabelDefault
INIMEDIA_API_BASE_URLhttp://139.255.23.90/api_inimedia
INIMEDIA_CLIENT_ID
INIMEDIA_CLIENT_SECRET

Antrean & cache

VariabelNilai produksiCatatan
QUEUE_CONNECTIONdatabaseButuh worker hidup
CACHE_STOREredisCache token Toschat & ChatPanel
SESSION_DRIVER
Tanpa queue worker

Pesan WhatsApp masuk tersimpan tapi tidak pernah dibalas, dan tombol SIMRS Sync di UI tidak melakukan apa-apa.


Checklist go-live