Status & Enum
Daftar lengkap nilai yang diterima setiap kolom berstatus. Di PostgreSQL, sebagian besar ditegakkan CHECK constraint di level database.
BookingRequest
| Nilai | Arti | Terminal di confirmPaid()? |
|---|---|---|
Pending | Link terbit, belum dibayar | ❌ |
Paid | Lunas, janji temu terbit | ✅ |
Expired | Batas waktu lewat | ❌ (link lama masih bisa dibayar) |
Cancelled | Digantikan link baru | ❌ (link lama masih bisa dibayar) |
Failed | Uang masuk, janji temu gagal dibuat | ✅ |
Payment
| Nilai | Arti | Bisa dibuka kembali oleh callback lunas? |
|---|---|---|
Pending | Menunggu | — (belum terminal) |
Success | Lunas | No-op (retry biasa) |
Failed | Ditolak Duitku / invoice gagal | ✅ Ya — Duitku yang menang |
Expired | Tebakan lokal: batas waktu lewat | ✅ Ya — Duitku yang menang |
Refunded | Dikembalikan | ❌ Tidak — keputusan sadar setelah lunas |
payment_method: VA · QRIS · E-Wallet · Credit-Card · BPJS · Cash · null
Billing
Unpaid · Partial · Paid · Refunded · Disputed
Appointment
Scheduled · Confirmed · Completed · Cancelled · Rescheduled
Janji temu yang lahir dari booking berbayar selalu Confirmed. Yang dari SIMRS Sync: Completed bila b_kunjungan.pulang = 1, selain itu Scheduled.
HospitalQueue (queues)
Waiting · Called · In-Service · Done · Skipped
Alur QueueBoardPage hanya memakai Waiting → Called → Done. Dua nilai lain tersedia untuk pengisian manual lewat resource Antrian RS.
WhatsappMessage
| Kolom | Nilai |
|---|---|
direction | IN · OUT |
message_type | Text · Template · Media · Interactive · System · null |
status | Queued · Sent · Delivered · Read · Failed |
sent_by | ai · human · system · null |
Pesan masuk selalu disimpan sebagai direction=IN, status=Delivered.
sent_by — atribusi pesan keluar
| Nilai | Diisi oleh | Dipakai untuk |
|---|---|---|
ai | WhatsappAutoReplyService | Penanda pemegang "AI" |
human | ChatRoomService (semua jalur kirim agen) + sent_by_user_id | Penanda pemegang bernama, dan menghidupkan "Stop AI When Human Chat" |
system | Pesan sistem | — |
null | Pesan masuk, notifikasi pembayaran, dan baris lama | Diperlakukan sebagai bot saat mengevaluasi behavior |
direction di PostgreSQL ber-paddingdirection bertipe CHAR(3), sehingga nilai "IN" dibaca ulang sebagai "IN ". Model memasang accessor/mutator yang mem-trim() nilainya — tanpa itu perbandingan === 'IN' gagal dan pesan masuk dianggap balasan asisten.
Pemegang percakapan (ChatHandlerResolver)
Bukan kolom database — nilai turunan yang ditampilkan di daftar Chat Rooms.
| Nilai | Label UI | Artinya |
|---|---|---|
none | Belum dibalas | Belum ada pesan keluar sama sekali, atau identitasnya tidak bisa dipastikan |
bot | Bot | Autoresponder Jasnita (user_id = 0), di luar kendali CRM |
ai | AI | Balasan AI Agent kita |
human | Nama agen, atau "Agen" | Diketik manusia — dari Chat Rooms (nama diketahui) atau dari panel Jasnita (nama tidak diketahui) |
Pemegang eksplisit (contacts.handled_by)
| Nilai | Efek |
|---|---|
human | AI tidak membalas sama sekali di percakapan ini |
ai atau kosong | Tidak ada takeover; AI boleh membalas bila gerbang lain lolos |
Warna label percakapan (chat_labels.color)
gray · red · amber · green · blue · purple · pink
Contact
| Kolom | Nilai |
|---|---|
chat_status | Unassigned (default saat dibuat) · Assigned · Solved |
platform | whatsapp_cloud (default) atau nilai type dari Jasnita |
ChatbotSession & ChatbotMessage
| Model | Kolom | Nilai |
|---|---|---|
ChatbotSession | status | Active · Closed · Escalated |
ChatbotMessage | role | user · assistant · system |
Complaint
| Kolom | Nilai |
|---|---|
priority | Low · Medium · High · Critical |
status | Open · In-Progress · Resolved · Closed |
Keluhan dari tool AI: status=Open, priority default Medium (AI boleh menetapkan Low/Medium/High; nilai lain dipaksa jadi Medium).
Survey
| Kolom | Rentang |
|---|---|
csat_score | 1–5 atau null |
nps_score | 0–10 atau null |
Tool create_survey menolak kalau ketiganya (csat_score, nps_score, feedback_text) kosong semua.
Patient
| Kolom | Nilai |
|---|---|
gender | M · F · null |
loyalty_tier | Regular · Silver · Gold · Platinum |
Pemetaan dari SIMRS: L → M, P → F, lainnya → null.
PatientInsurance & InsuranceClaim
| Model | Kolom | Nilai |
|---|---|---|
PatientInsurance | type | BPJS · Swasta · Mandiri |
InsuranceClaim | status | Submitted · Processing · Approved · Rejected · Paid |
LoyaltyPointsLog
change_type: Earn · Redeem · Expire · Adjust
DoctorSchedule
day_of_week: 0–6
SyncBatch (SIMRS)
| Nilai | Arti |
|---|---|
running | Sedang berjalan |
success | Selesai; tombol Rollback muncul |
failed | Gagal atau terputus; run berikutnya melanjutkan dari cursor |
rolled_back | Sudah dibatalkan |
trigger_source: manual · schedule
ContactSyncRun
| Nilai | Arti |
|---|---|
running | Sedang berjalan |
success | Selesai |
failed | Gagal; pesan error disimpan (maks 2000 karakter) |
trigger_source: manual · scheduled
Hasil confirmPaid() (bukan kolom database)
| Outcome | Arti | Tindakan listener |
|---|---|---|
created | Janji temu baru terbit | Kirim konfirmasi lunas |
noop | Sudah pernah dikonfirmasi | Tidak mengirim apa pun |
failed | Uang masuk, janji temu gagal | Kirim pesan tindak lanjut manual + Log::error |
none | Tidak ada draft | Kirim konfirmasi reservasi + Log::warning |
Kapabilitas Knowledge Data Model AI
| Key | Kapabilitas | Efek |
|---|---|---|
doctors | READ | Record dokter di-dump ke knowledge |
polyclinics | READ | Record poliklinik di-dump ke knowledge |
packages | READ | Record paket layanan di-dump ke knowledge |
appointments | WRITE | Tool create_appointment + check_payment_status |
complaints | WRITE | Tool create_complaint |
surveys | WRITE | Tool create_survey |
Model WRITE tidak pernah di-dump ke knowledge. Model sensitif (User, Patient, Contact, Setting, FollowUpManagement) tidak ada di katalog sama sekali.
Provider LLM
| Key | Model default |
|---|---|
openai | gpt-4o-mini |
anthropic | claude-3-5-sonnet-20241022 |
google_gemini | gemini-2.5-flash-lite |
mistral | mistral-small-latest |
groq | llama-3.3-70b-versatile |
Peran (Spatie Role)
super_admin · admin · petugas · dokter · pasien
Gateway provider akun WhatsApp
| Nilai | Efek |
|---|---|
jasnita | Memakai driver ToschatClient (OAuth2). Wajib untuk Chat Rooms & sinkronisasi kontak |
| lainnya | Memakai gerbang HTTP generik (sendViaGenericGateway) — hanya kirim teks |