Lewati ke konten utama

Pemantauan & Troubleshooting


Pohon diagnosis cepat


1. Pesan masuk tidak dibalas AI

Perintah:

docker logs --tail 100 crm_queue
docker exec crm_php php artisan queue:failed
docker exec crm_php tail -100 storage/logs/laravel.log

2. Chat Rooms kosong / gagal kirim

GejalaPenyebabPerbaikan
Daftar percakapan kosongTidak ada akun is_active dengan gateway_provider = jasnitaAktifkan akun di menu WhatsApp Business
Log ChatPanel conversations gagalAPI Jasnita menolak / berubahCek kredensial OAuth; endpoint chatpanel/* tidak terdokumentasi publik dan bisa berubah
Toschat menolak kredensial (HTTP 401)client_id/secret/username/password salahPerbarui kredensial akun
"Pesan gagal terkirim"Jendela 24 jam lewatPakai Compose Message dengan template
"Tidak ada akun WhatsApp Jasnita aktif"Akun nonaktif atau bukan jasnitaAktifkan / perbaiki gateway_provider
Media tidak tampilProksi menolak (izin) atau path kosongCek izin halaman Chat Rooms user tersebut
Mode testing: pasien tidak menerima apa punDisengajaSetel WHATSAPP_TEST_MODE=false

3. Pembayaran & booking ⚠️ prioritas tertinggi

Cari draft yang bermasalah

Buka menu Booking Requests (/admin/booking-requests) dan saring:

StatusArtinyaTindakan
Failed💰 Uang masuk, janji temu GAGAL dibuatBuat janji temu manual, hubungi pasien
Pending melewati expires_atSapuan belum berjalanCek scheduler hidup
Paid tanpa appointment_idAnomaliPeriksa log

Pesan log penting

Pesan logTingkatArtinya
Gagal membuat Appointment dari booking berbayarerror💰 Uang masuk, janji temu gagal. Draft → Failed
Booking diselamatkan sapuan tapi notifikasinya gagalerror💰 Pasien punya jadwal tanpa tahu apa pun. Kirim pesan manual — sapuan tidak akan menengoknya lagi
Booking sudah terkonfirmasi tapi notifikasinya gagalerrorSama seperti di atas, dari jalur listener
Pembayaran lunas gagal jadi janji temu dan drafnya tak terbacaerror💰 Pasien tidak bisa dihubungi sama sekali
Gagal mengonfirmasi booking dari pembayaran lunaserrorListener melempar; sapuan 5 menit akan memungutnya
Callback Duitku dilewati: Payment tidak ditemukanwarningBaris Payment sudah terhapus (mis. pasien dihapus). Satu-satunya jejaknya
Callback Duitku dilewati: merchantOrderId tidak berbentuk RESV-{id}warningOrder integrasi lain, atau format Duitku berubah → pembayaran berhenti dibukukan
Callback lunas mendahului status lokal; Payment dibuka kembali jadi SuccesswarningNormal — sapuan sempat menandai Expired/Failed duluan
Callback lunas dilewati: Payment sudah RefundedwarningPembukuan Duitku dan kami tidak sepakat — urusan manusia
Callback lunas diulang untuk Payment yang sudah SuccessinfoRetry Duitku biasa
Pembayaran lunas tanpa draft bookingwarningReservasi manual (wajar) atau insert draft gagal (tidak wajar)
Duitku callback: invalid signaturewarningSignature salah — cek DUITKU_API_KEY
Tool AI di luar allowlist ditolak sebelum dieksekusiwarningModel mengarang nama tool, atau ada yang mencoba menyetirnya

Perintah pencarian log

docker exec crm_php grep -E "booking|Duitku|Payment" storage/logs/laravel.log | tail -50
docker exec crm_php php artisan bookings:reconcile # jalankan sapuan manual

Alur penyelamatan otomatis


4. Data SIMRS tidak diperbarui

GejalaPenyebabPerbaikan
Baris SIMRS ada tapi tidak masuk CRMRelasi (pasien/dokter/poli) belum ada → baris dilewatiJalankan entitas prasyarat dulu, sesuai urutan FK-safe
Error tanggal PostgreSQLZero-date MySQLSudah ditangani cleanDate() — kalau muncul lagi, laporkan
Error CHECK constraint genderNilai sex di luar L/PSudah dipetakan; nilai lain jadi null
Tombol Sync tidak melakukan apa-apaQueue worker matidocker restart crm_queue
Koneksi SIMRS gagalTerowongan matiCek kontainer crm_simrs_tunnel
Data salah masukRollback batch tersebut dari UI
docker exec crm_php php artisan simrs:sync patient
docker ps --format "{{.Names}}\t{{.Status}}" | grep simrs

5. Daftar kontak basi

Halaman Kontak menampilkan waktu sinkron terakhir di subheading. Merah = lintasan terakhir gagal.

GejalaPenyebabPerbaikan
Tidak ada info "sinkron terakhir"Belum pernah sinkronTekan tombol manual
Info merahLintasan gagalBaca pesan error di contact_sync_runs
Waktu tidak pernah majuWHATSAPP_CONTACT_SYNC_ENABLED=false atau scheduler matiCek env + scheduler
Nomor baru tidak muncul seketikaJob webhook gagal mencatat kontakCari log Gagal mencatat kontak dari pesan masuk
Nama kontak tidak ikut diperbaruiDisengaja — nama editan petugas tidak ditimpaBukan bug
docker exec crm_php php artisan contacts:sync

6. Menu tidak muncul / akses ditolak

shouldRegisterNavigation() memanggil canAccess() — jadi menu yang hilang selalu berarti izinnya belum diberikan.


7. Antrian bermasalah

GejalaPenyebabPerbaikan
"Selesaikan antrian aktif di loket ini dulu"Loket masih memegang nomorKlik Selesai dulu
"Tidak ada antrian menunggu"Tidak ada nomor Waiting pada tanggal terpilihNormal
Papan tayang kosongTidak ada loket aktif yang memegang antrianPanggil satu nomor
Video YouTube tidak munculURL tidak dikenaliPakai youtu.be/XXX atau youtube.com/watch?v=XXX
Nomor lompat / berulangPenomoran per poli per hari; periksa queue_date dan poly_id
Loket memanggil nomor poli lainPerilaku sistem: callNext() tidak menyaring poliAtur pembagian loket secara prosedural

Pemantauan rutin

Perintah pemeriksaan cepat

# Kesehatan kontainer
docker ps --format "{{.Names}}\t{{.Status}}" | grep crm_

# Worker & scheduler
docker logs --tail 30 crm_queue
docker logs --tail 30 crm_scheduler
docker exec crm_php php artisan schedule:list

# Job gagal
docker exec crm_php php artisan queue:failed

# Kesalahan terbaru
docker exec crm_php grep -i "ERROR" storage/logs/laravel.log | tail -30

# Ketersediaan aplikasi
curl -s -o /dev/null -w "%{http_code}\n" https://crmrsi.balascepat.com/admin/login

Kapan harus eskalasi

Eskalasi segera kalau menemukan
  • Draft berstatus Failed — uang masuk tanpa jadwal
  • Log Callback Duitku dilewati: merchantOrderId tidak berbentuk RESV-{id} yang berulang — kemungkinan format Duitku berubah dan semua pembayaran berhenti dibukukan
  • Log Booking diselamatkan sapuan tapi notifikasinya gagal — pasien punya jadwal tanpa tahu apa pun, dan tidak ada sapuan berikutnya yang akan menengoknya
  • crm_queue mati lebih dari beberapa menit — pesan masuk menumpuk tanpa dibalas
Perhatikan tapi tidak mendesak
  • Callback lunas mendahului status lokal sesekali — normal
  • Pembayaran lunas tanpa draft booking — wajar untuk reservasi manual dari Chat Rooms
  • Lintasan contacts:sync gagal sesekali — sapuan berikutnya 10 menit lagi
  • Batch SIMRS failed — akan dilanjutkan dari cursor