Lewati ke konten utama

Perintah Artisan

Di produksi, semua perintah dijalankan di dalam kontainer PHP:

docker exec crm_php php artisan <perintah>

Perintah khusus aplikasi

simrs:sync

Sinkronisasi data dari SIMRS.

php artisan simrs:sync patient # satu entitas
php artisan simrs:sync --all # semua entitas, urutan FK-safe
EntitasKeterangan
polyclinic · doctorRingan, berjalan langsung
patient · appointment · billingBesar, lewat antrean (queued)

Aman diulang: melanjutkan dari cursor terakhir kalau run sebelumnya terputus. Detail di SIMRS Sync.

bookings:reconcile

Sapuan draft booking: selamatkan yang sudah dibayar, matikan yang batas waktunya lewat.

php artisan bookings:reconcile

Output:

Reconciled paid-but-unconfirmed bookings: 2
Expired stale drafts: 5

Kalau ada notifikasi yang gagal:

Confirmation notifications that failed: 1 (see log)
Expiry notifications that failed: 2 (see log)
Aman diulang

Kedua sapuan yang dipakainya idempoten — lintasan kedua tidak membuat janji temu kedua maupun mengirim pesan yang sama dua kali.

Berjalan otomatis tiap 5 menit. Tidak punya saklar config — untuk menghentikannya di suatu lingkungan, cukup tidak menjalankan cron schedule:run.

contacts:sync

Tarik daftar kontak dari ChatPanel Jasnita.

php artisan contacts:sync

Output sukses:

Sync kontak selesai: 12 baru, 45 diperbarui, 300 dilewati.

Kalau konfigurasi belum siap (bukan kegagalan — keluar sukses):

Tidak ada akun WhatsApp aktif — Aktifkan salah satu akun di menu WhatsApp Business Account terlebih dahulu.

Berjalan otomatis tiap 10 menit; bisa dimatikan lewat WHATSAPP_CONTACT_SYNC_ENABLED=false.


Perintah Laravel yang sering dipakai

Penjadwalan & antrean

php artisan schedule:run # dijalankan cron tiap menit
php artisan schedule:list # lihat semua tugas terjadwal
php artisan queue:work # jalankan worker
php artisan queue:failed # daftar job gagal
php artisan queue:retry all # coba ulang semua job gagal

Migrasi

php artisan migrate --force # produksi WAJIB --force
php artisan migrate:status
php artisan migrate:rollback --step=1 --force
Jangan pernah di server

migrate:fresh dan db:wipe menghapus seluruh data. Tidak ada situasi di mana keduanya benar di produksi maupun staging.

Cache

php artisan optimize:clear # bersihkan semua cache
php artisan config:cache
php artisan route:cache
php artisan view:cache

Urutan yang dipakai skrip deploy: optimize:clearconfig:cacheroute:cacheview:cache.

Filament

php artisan filament:assets # publikasikan aset vendor Filament
php artisan shield:generate --all # generate permission untuk resource/page baru
php artisan shield:super-admin # tetapkan super admin
Setelah menambah resource atau halaman

Jalankan shield:generate, lalu centang permission barunya di menu Peran User. Permission baru tidak otomatis diberikan ke peran yang sudah ada.

Diagnostik

php artisan about # ringkasan lingkungan
php artisan about --only=environment
php artisan tinker # REPL
php artisan db:show --database=pgsql_crm # info koneksi

Seeder

php artisan db:seed --class=RolePermissionSeeder

Membuat 5 peran + 5 akun bawaan. Password bawaan password wajib diganti sebelum produksi.

Seeder data contoh lain tersedia (PatientSeeder, DoctorSeeder, PolyclinicSeeder, dst.) — hanya untuk pengembangan.


Pengembangan lokal

composer install
npm install
php artisan key:generate
php artisan migrate
php artisan serve

npm run dev # Vite dev server
npm run build # build produksi

./vendor/bin/pint # format kode (menulis ulang berkas)
php artisan test # jalankan test

Ringkasan tugas terjadwal

Semua memakai zona Asia/Jakarta, withoutOverlapping(), dan onOneServer().

Verifikasi dengan:

docker exec crm_php php artisan schedule:list