Konfigurasi Environment
Semua nilai di bawah dibaca dari .env. .env tidak pernah masuk git — perubahannya diterapkan manual per server.
Peta konfigurasi
Aplikasi
| Variabel | Fungsi | Catatan |
|---|---|---|
APP_KEY | Kunci enkripsi Laravel | ⚠️ Mengubahnya membuat semua kolom terenkripsi tidak terbaca |
APP_URL | Base URL aplikasi | Dipakai eksplisit untuk membangun URL webhook WhatsApp |
APP_ENV | local | staging | production | |
APP_DEBUG | Tampilkan detail error | Harus false di produksi |
APP_KEY adalah kunci semua kredensialKolom 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
| Variabel | Default | Catatan |
|---|---|---|
DB_CONNECTION | sqlite | Produksi: pgsql |
DB_HOST / DB_PORT | 127.0.0.1 / 5432 | |
DB_DATABASE | laravel | Produksi: laravel_db |
DB_USERNAME / DB_PASSWORD | Produksi: laravel_user | |
DB_SSLMODE | prefer |
Koneksi pgsql_crm dan pgsql_ai memakai variabel yang sama, hanya search_path-nya berbeda.
Database SIMRS (read-only)
| Variabel | Default |
|---|---|
SIMRS_DB_HOST | 127.0.0.1 |
SIMRS_DB_PORT | 3306 |
SIMRS_DB_DATABASE | dev_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
| Variabel | Default | Fungsi |
|---|---|---|
SIMRS_SYNC_CHUNK | 1000 | Baris per chunk |
SIMRS_SYNC_SCHEDULE_ENABLED | true | Nyalakan jadwal harian 01:00 WIB |
SIMRS_SYNC_SCHEDULE_TIME | 01:00 | Informatif (cron di-hardcode 0 1 * * *) |
Sinkronisasi ini menarik seluruh gudang data SIMRS eksternal. Setel SIMRS_SYNC_SCHEDULE_ENABLED=false di lingkungan non-produksi.
WhatsApp
| Variabel | Default | Fungsi |
|---|---|---|
WHATSAPP_TEST_MODE | false | ⚠️ Wajib false di produksi |
WHATSAPP_WEBHOOK_VERIFY_TOKEN | (kosong) | Fallback global; bisa dioverride per akun |
WHATSAPP_CONTACT_SYNC_ENABLED | true | Sapuan kontak terjadwal |
WHATSAPP_CONTACT_SYNC_CRON | */10 * * * * | Kadens sapuan kontak |
WHATSAPP_TEST_MODE=true di produksiAI 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
| Variabel | Default | Fungsi |
|---|---|---|
DUITKU_MERCHANT_CODE | — | Kode merchant |
DUITKU_API_KEY | — | Kunci untuk signature |
DUITKU_ENV | sandbox | sandbox | production |
DUITKU_RESERVATION_FEE | 25000 | Tarif reservasi (rupiah) |
DUITKU_CALLBACK_URL | https://crmrsi.balascepat.com/webhook/duitku | Harus didaftarkan di dashboard Duitku |
DUITKU_RETURN_URL | https://crmrsi.balascepat.com/booking/thanks | Halaman setelah bayar |
DUITKU_EXPIRY_MINUTES | 60 | Umur link pembayaran |
DUITKU_RESERVATION_FEE adalah satu-satunya sumber tarifTidak 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
| Variabel | Default |
|---|---|
FILAMENT_IMPERSONATOR_ROLES | super_admin,admin |
FILAMENT_IMPERSONATION_BLOCKED_ROLES | super_admin |
Dipisah koma. Kalau kosong/tidak valid, sistem jatuh ke default.
API Inimedia
| Variabel | Default |
|---|---|
INIMEDIA_API_BASE_URL | http://139.255.23.90/api_inimedia |
INIMEDIA_CLIENT_ID | — |
INIMEDIA_CLIENT_SECRET | — |
Antrean & cache
| Variabel | Nilai produksi | Catatan |
|---|---|---|
QUEUE_CONNECTION | database | Butuh worker hidup |
CACHE_STORE | redis | Cache token Toschat & ChatPanel |
SESSION_DRIVER |
Pesan WhatsApp masuk tersimpan tapi tidak pernah dibalas, dan tombol SIMRS Sync di UI tidak melakukan apa-apa.