10 · Laporan, Notifikasi & Kesehatan Sistem
Modul Laporan merangkum pendapatan, pasien, operasional, SDM, dan stok dalam grafik serta angka ringkas. Di bagian ini juga dijelaskan pusat notifikasi dan halaman Kesehatan Sistem. Tiap laporan hanya muncul di menu bila peran Anda punya izinnya.
1 Dashboard Eksekutif
Buka modul Laporan lalu menu Dashboard Eksekutif (halaman Ringkasan Eksekutif). Halaman ini butuh izin report:executive.
- Pilih Periode (Hari ini, Kemarin, Bulan berjalan) dan Cakupan Cabang (Semua Cabang atau satu cabang) di kanan atas.
- Baca kartu KPI: Pendapatan Periode Ini, Pasien Periode Ini, Janji Temu Periode Ini, Margin Kotor, Beban, dan Margin Bersih.
- Gulir ke bawah untuk grafik Tren Pendapatan dan Tren Pasien (6 bulan terakhir), Pendapatan per Cabang, tabel Perbandingan Cabang, Peringatan Operasional (mis. no-show tinggi) dan Status Laporan Terjadwal. Setiap grafik punya tombol Grafik / Tabel untuk berganti tampilan.
Dashboard Eksekutif: filter periode dan cabang serta kartu KPI.
Bagian bawah dashboard: perbandingan cabang dan peringatan operasional.
💡 Kartu "AI insight" belum aktif; ia menampilkan pesan bahwa endpoint insight belum tersedia. Abaikan saja.
💡 Keadaan kosong: bila belum ada tagihan atau janji temu pada periode itu, kartu menampilkan Rp 0 atau 0 dan grafik tampil datar. Data muncul setelah ada transaksi, jadwal, atau jurnal beban.
2 Multi Cabang dan Ranking Cabang
Menu Multi Cabang membandingkan Total Revenue, Total Pasien, dan Total Janji Temu seluruh cabang pada satu periode, ditambah grafik Pendapatan per Cabang dan Pertumbuhan vs Periode Lalu. Ranking Cabang mengurutkan cabang menurut Metrik yang Anda pilih. Keduanya butuh izin report:executive.
Pilih periode lewat tombol Bulan Ini, Bulan Lalu, Q1–Q4, atau Custom (pilih bulan lewat kolom bulan yang muncul).
Laporan Multi Cabang.
3 Laporan operasional
Kelompok Klinik & Pasien di menu Laporan (izin report:operational, kecuali Google Review report:google_review dan Demografi report:patient):
- Operasional Harian: kunjungan (Total Janji, Selesai, Dibatalkan), pasien, Okupansi Kursi, Revenue, dan pemakaian promo pada satu Tanggal.
- No-Show: kartu Total Janji, No-Show, No-Show Rate, dan Janji Dibatalkan; tren mingguan (tampilan Tabel memuat kolom Tidak hadir, Batal, dan Rate per minggu) serta no-show per waktu praktik. Filter Cabang, tanggal, Kelompok usia, dan Gender berlaku untuk semua angka. Janji Dibatalkan menghitung jadwal berstatus batal; jadwal yang dipindah (reschedule) tidak dihitung batal karena yang dihitung jadwal barunya, sehingga angkanya bisa lebih kecil dari Dibatalkan di Operasional Harian. Janji batal tetap termasuk Total Janji dan dasar perhitungan No-Show Rate.
- Okupansi Kursi, Rasio Pasien, Supervisi, dan Google Review.
- Performa Shift: pasien, omzet, basket size, dan konversi sumber booking per shift (izin
report:operationalataureport:financial), dengan tombol Unduh Rekap Shift dan Unduh Rincian Transaksi.
Filter Cabang di Operasional Harian, Okupansi Kursi, No-Show, Rasio Pasien, dan Supervisi terbuka pada Semua Cabang: angkanya dijumlahkan dari cabang yang boleh Anda akses. Bila Anda tidak berwenang atas semua cabang, di bawah filter tertulis Cabang yang Anda akses: …. Pilih satu cabang untuk melihat angka cabang itu saja.
Okupansi Kursi pada Semua Cabang = total menit kursi terisi dibagi total menit kapasitas, hanya dari cabang yang buka dan punya jadwal pada rentang itu. Cabang lain tidak dihitung dan disebut di kartu, misalnya 2 cabang tanpa jadwal/tutup tidak dihitung. Tombol Unduh di Okupansi Kursi menghasilkan satu baris per tanggal per cabang yang dihitung.
Rasio Pasien pada Semua Cabang menghitung setiap pasien sekali. Pasien yang mendaftar di cabang A lalu berkunjung ke cabang B terhitung baru di Semua Cabang tetapi kembali di laporan cabang B saja, jadi jumlah per cabang tidak selalu sama dengan totalnya.
Operasional Harian untuk satu tanggal, filter Cabang terbuka pada Semua Cabang.
Laporan No-Show: kartu Janji Dibatalkan dan kolom Batal pada tampilan Tabel tren mingguan.
4 Laporan keuangan
Kelompok Keuangan (izin report:financial): Laba Rugi, Pendapatan, Komisi, Arus Kas, dan Metode Pembayaran.
- Pilih Periode: Bulan Ini, Bulan Lalu, Q1–Q4, atau Custom untuk memilih bulan tertentu.
- Pilih Cabang. Bila kolom masih "Pilih cabang", laporan menunggu pilihan Anda.
- Baca kartu Pendapatan, HPP, Laba Kotor, Laba Bersih, Margin, dan Total Pengeluaran, lalu grafik Laba Rugi Ringkas dan Rincian Beban di bawahnya.
Laba Rugi untuk bulan berjalan.
Periode Custom: pilih bulan lewat kolom yang muncul.
⚠️ Laba Bersih bisa bernilai negatif (mis. -Rp 3.150.000) bila beban lebih besar daripada pendapatan; itu hasil hitungan, bukan galat.
5 Laporan SDM dan inventori
- SDM (izin
report:hr): Absensi (Absensi Karyawan: hadir, terlambat, absen per karyawan), Penggajian, KPI Staf (pilih posisi dulu), dan Dokumen Kedaluwarsa. Untuk absensi, atur Dari Tanggal, Sampai Tanggal, dan Cabang. - Inventori (izin
report:inventory): Level Stok, Pergerakan Stok, Stok Kedaluwarsa, dan Valuasi Inventori. Level Stok membandingkan stok tiap item dengan batas minimumnya (Optimal, Stok Rendah, Habis).
Absensi Karyawan.
Level Stok.
6 Demografi pasien dan Kinerja CS
Demografi Pasien (izin report:patient) menampilkan distribusi usia, gender, sumber, dan sebaran cabang. Tanpa rentang tanggal, angka mencakup seluruh pasien aktif; usia dihitung dari tanggal lahir saat laporan dibuka.
Kinerja CS (izin report:cs_performance) menunjukkan jumlah pasien yang dijadwalkan per tim CS, berapa yang hadir, dan nilai tindakan. Atur Dari/Sampai Tanggal, Cabang, Tim CS, dan Dasar tanggal. Jadwal tanpa tim CS dikumpulkan di baris "Tanpa CS". Laporan serupa untuk admin ada di Kinerja Admin (report:admin_performance).
Demografi Pasien.
Kinerja CS.
💡 Keadaan kosong: bila tidak ada data pada rentang itu, halaman memuat pesan seperti "Belum ada pasien pada rentang ini" atau "Belum ada jadwal pada rentang ini". Ubah rentang tanggal atau cabang.
7 Laporan Promo & Voucher
Kelompok Pemasaran → Promo & Voucher (izin report:voucher) melacak voucher dan promo per program, kode, dan affiliate. Atur Dari/Sampai Tanggal, Cabang, Jenis, Program/Promo, dan Affiliate (pilih Tanpa affiliate untuk program/promo yang belum diberi affiliate).
- Jenis: Voucher Unik (diterbitkan per pasien), Voucher Bersama (satu kode untuk banyak pasien, mis. TikTokLiveSB), Kode Promo, dan Voucher Booking.
- Terbit: voucher unik dan voucher booking yang diterbitkan pada rentang itu di cabang penerbit. Voucher bersama dan kode promo tidak punya angka terbit (tampil "—"); sebagai gantinya tampil Kuota/Sisa, yaitu posisi saat ini dan tidak mengikuti filter.
- Diklaim: jumlah pasien berbeda. Untuk voucher unik/booking = pasien yang menerima voucher; untuk voucher bersama/kode promo = pasien yang memakainya.
- Terpakai: jumlah pemakaian pada rentang itu di cabang tempat tagihan dibayar. Satu pasien yang memakai kode bersama dua kali dihitung Diklaim 1, Terpakai 2. Tagihan yang dibatalkan atau dikembalikan tidak dihitung.
- Nilai Terpakai dan Hangus: voucher alat bayar (voucher unik/bersama) menggerus sisa tagihan seperti metode bayar; bila nominal voucher lebih besar dari sisa tagihan, selisihnya Hangus. Diskon harga (kode promo, voucher booking) menurunkan total tagihan dan tidak punya hangus. Kedua kelompok ditampilkan terpisah dan tidak pernah dijumlah.
- Klik baris tabel ringkasan untuk menyaring satu program/promo. Tabel rincian memuat satu baris per voucher/pemakaian dengan nama dan nomor pasien; nomor telepon tidak ditampilkan. Kolom pencarian rincian tidak tersimpan di alamat halaman.
- Aturan harga dan Dokter tarif (rincian): untuk promo bermatriks, aturan yang menentukan harga pasien itu (Tarif dasar, Tarif hari, Tarif dokter, atau Tarif dokter + hari) dan nama dokter bila harganya harga dokter. Kutipan lama tampil sebagai Tarif dasar.
- Unduh (izin
report:export) menghasilkan Excel dua sheet (Ringkasan dan Rincian) atau CSV rincian. Berkas memuat seluruh rincian sesuai filter, tanpa kata kunci pencarian.
Promo & Voucher: alat bayar dan diskon harga dipisah.
💡 Mengapa angka diskon promo berbeda dari KPI Promo di Operasional Harian? Laporan ini memakai tanggal pemakaian promo dan cabang tagihan, sedangkan KPI Promo Operasional Harian memakai tanggal tagihan. Selisih hari di sekitar pergantian bulan wajar.
Isian Affiliate ada di form Buat Promo dan Tambah Program Voucher (Pengaturan → Kode Promo & Voucher). Isinya boleh diubah kapan saja, juga setelah program menerbitkan voucher; laporan selalu memakai nilai affiliate yang tersimpan saat ini.
8 Mengunduh laporan (CSV / Excel)
Laporan yang punya tombol Unduh di kanan atas menawarkan dua format: CSV dan Excel (XLSX). Atur filter dulu; berkas mengikuti filter yang aktif.
Menu Unduh.
⚠️ Tidak ditemukan tombol unduh PDF di halaman laporan. Pilihan "PDF" hanya ada sebagai format pada jadwal laporan (langkah berikut), yang pengirimannya belum aktif. Tidak semua laporan punya tombol Unduh.
9 Laporan Terjadwal
Menu Terjadwal (izin report:read) menyimpan definisi laporan yang diinginkan. Klik Tambah Jadwal, isi Nama Jadwal, Tipe Laporan (Revenue Harian, Ringkasan Mingguan, P&L Bulanan, Custom), Frekuensi, Waktu Kirim, dan Format, lalu Simpan Jadwal.
Laporan Terjadwal: satu jadwal tersimpan (Tipe Revenue Harian, Jadwal Harian, Format PDF, Status Aktif, kolom Terakhir Dikirim masih "-").
Dialog Tambah Jadwal Laporan.
Untuk apa: menyimpan daftar laporan yang kelak ingin dikirim berkala, misalnya pendapatan harian pukul 20:00. Setelah disimpan: baris baru muncul di tabel dengan status Aktif; klik namanya untuk mengubahnya. Status Laporan Terjadwal juga tampil di Dashboard Eksekutif.
⚠️ Laporan terjadwal belum berjalan otomatis: jadwal hanya tersimpan sebagai definisi dan belum ada laporan yang dikirim ke penerima.
10 Pusat Notifikasi
Halaman Notifikasi (alamat /notifikasi; untuk karyawan di aplikasi presensi: /attendance/notifikasi) berisi pemberitahuan untuk akun Anda, misalnya persetujuan, roster, cuti, payroll, dokumen, dan inventori.
- Subjudul menunjukkan jumlah yang belum dibaca atau "Semua sudah dibaca".
- Saring dengan chip kategori (mis. Persetujuan, Roster, Cuti) atau centang Belum dibaca saja.
- Klik sebuah notifikasi untuk membukanya dan menandainya terbaca (bila memiliki tautan, Anda diarahkan ke halaman terkait).
- Klik Tandai semua dibaca untuk menandai semua (atau semua dalam kategori yang sedang dipilih). Gunakan Sebelumnya / Berikutnya bila lebih dari 20 notifikasi.
Pusat Notifikasi, keadaan kosong: "Belum ada notifikasi."
⚠️ Lonceng notifikasi tidak terpasang di header aplikasi manajer: komponen lonceng ada di kode tetapi belum dipasang di halaman mana pun. Notifikasi hanya dapat dibuka lewat alamat /notifikasi (manajer) atau /attendance/notifikasi (karyawan); belum ada tautan menu untuknya. Tampilan berisi notifikasi belum dapat diperagakan karena akun demo belum menerima satu pun (contoh pemicu: pengajuan cuti, pengajuan reimbursement, stok menipis; pengaju tidak diberi notifikasi atas pengajuannya sendiri).
💡 Belum ada pengaturan preferensi notifikasi di aplikasi; halaman hanya menyediakan penyaringan dan penandaan terbaca.
11 Kesehatan Sistem
Menu Admin → Kesehatan Sistem (/admin/health, hanya peran dengan izin system:health_read) memantau kondisi sistem dan diperbarui otomatis tiap 30 detik.
- Empat kartu: Application (versi, uptime), Database (latensi, koneksi), Redis, dan Integrations (jumlah provider dan yang sehat).
- Lencana status: Operational (normal), Degraded (terganggu atau belum terhubung), atau Error. Saat memuat tampil Checking.
- Bagian Integrasi Pihak Ketiga mencantumkan tiap provider (pembayaran, WhatsApp, bank, dan sebagainya) dengan waktu pemeriksaan terakhir.
Kesehatan Sistem.
💡 Integrasi yang belum dikonfigurasi di lingkungan percobaan tampil sebagai Degraded; ini wajar dan bukan kerusakan aplikasi.
12 Laporan SDM tambahan
Untuk apa: memeriksa kelengkapan data karyawan, biaya gaji, dan siapa memegang peran apa.
- Profil Karyawan (
/reports/hr-profile): Rekap Tanggungan & PTKP membandingkan status PTKP tercatat dengan yang seharusnya, lalu Kelengkapan Data Karyawan serta Demografi & Pendidikan. Pada data demo, 14 karyawan berstatus "PTKP tidak cocok" karena PTKP tercatat masih kosong ("—") sedangkan seharusnya TK/0. Tombol Unduh tersedia. - Biaya Gaji & Skala Upah (
/reports/hr-pay-structure): atur Cabang, Periode mulai, Periode selesai; ada Cetak dan tiga unduhan CSV (departemen, posisi, skala upah). Kolom realisasi kosong bila belum ada run payroll pada periode itu. - Keanggotaan Peran (
/reports/hr/role-membership, izinreport:role_membership): pilih peran di kiri untuk melihat akun pemegangnya; angka di samping nama peran adalah jumlah pemegang (mis. Direktur 1, Dokter Gigi 4). Peran tanpa pemegang menampilkan "Belum ada pengguna yang memegang peran ini". - Kinerja Admin (
/reports/admin, izinreport:admin_performance): Rasio Konversi, Rasio Review Admin, dan Rasio Review Cabang per admin. Tanpa data, tampil "—" atau 0.00%. Faktur yang tidak punya admin penutup masuk baris "Tanpa admin dikenal".
Profil Karyawan.
Biaya Gaji & Skala Upah (belum ada run payroll sehingga grafik masih datar).
Keanggotaan Peran.
Kinerja Admin.
13 Jejak audit dan log
Catatan siapa mengubah apa tidak berada di modul Laporan, melainkan di Pengaturan dan butuh izin audit:read: /settings/audit-trail (Jejak Audit), /settings/audit (jejak perubahan konfigurasi), dan /settings/exports (riwayat ekspor data). Langkah rinci dan gambarnya ada di bab Pengaturan. Detail transaksi per laporan (/reports/<id>/drill-down) dibuka dari tautan di dalam laporan, mis. angka bergaris bawah di Kinerja Admin.