User Manual — WaktuKerja¶
Manual pengguna untuk aplikasi WaktuKerja (Platform HRIS Lengkap). Mencakup alur dari pendaftaran tenant baru sampai eksekusi kalkulasi gaji per periode, plus portal mobile untuk karyawan.
Untuk siapa manual ini?¶
- HR / Payroll Admin — yang setup master data, kelola pengajuan, dan eksekusi payroll bulanan via portal web admin (Bab 1-9)
- Karyawan — fitur self-service via aplikasi mobile WaktuKerja (Bab 10) — Progressive Web App yang di-install ke home screen HP
- Pemilik Aplikasi (super admin) — sebagian master global (mis. Bank) dikelola via CLI; tidak dibahas di manual ini
Prerequisites¶
Sebelum memulai: - Browser modern (Chrome, Firefox, Edge versi 2 tahun terakhir) - Email kerja yang valid (untuk verifikasi akun HR) - Mengetahui struktur organisasi perusahaan (jabatan + atasan) - Kebijakan ketenagakerjaan (jam kerja, hari libur, jenis status karyawan) - Komponen gaji yang berlaku (gaji pokok, tunjangan, potongan)
Daftar Isi¶
| # | Bab | Topik utama |
|---|---|---|
| 1 | Pendaftaran Tenant | Registrasi organisasi, profile, login pertama, billing (tier Basic/Standar + periode bayar 3 bulan / 1 tahun) + galeri add-ons |
| 2 | Master Organisasi & Karyawan | Jabatan (tree), tambah karyawan, biodata, setting payroll |
| 3 | Master Waktu Kerja | Shift, pola mingguan, kelompok kerja, assignment |
| 4 | Master Pendukung | Hari libur, status kekaryawanan, komponen gaji, formula, fasilitas, pinjaman |
| 5 | Pengajuan & Workflow | Cuti, ijin, tukar shift, lembur, perjalanan dinas |
| 6 | Pipeline Periode | Buat periode, generate jadwal harian, kalkulasi realisasi, tutup bulan |
| 7 | Proses Gaji | Data waktu kerja, fasilitas, pinjaman, upload, pengecualian, kalkulasi, Konfirmasi (Tutup Bulan) + auto-arsip ke Elasticsearch |
| 8 | Gaji Non Reguler | Run di luar siklus bulanan: THR, Bonus, Gaji XIII, Insentif (setup + komponen + override per karyawan + konfirmasi) |
| 9 | Laporan | Reporting dari Elasticsearch: 6 laporan live (4 Waktu Kerja + 2 Penggajian: Riwayat Transfer & Distribusi Komponen). 4 menyusul (Jurnal Penggajian + 3 Non Reguler) |
| 10 | Mobile App (Portal Karyawan) | Aplikasi mobile WaktuKerja (PWA): install ke home screen, bottom tab navigation, Check In/Out face capture, notifikasi (badge + polling), pengajuan full CRUD (Cuti/Ijin/Lembur/Tukar Shift), Riwayat Gaji breakdown, jadwal kerja, realisasi kehadiran (kalender visual), profil + personalia CRUD (alamat/keluarga/riwayat kerja/pendidikan) |
| 99 | Lampiran | Konstanta formula, glosarium, troubleshooting |
Alur singkat (happy path)¶
Untuk tenant baru, urutan setup dan operasional bulanan:
Setup (sekali saat onboarding):
- Daftar tenant → terima kredensial admin via email
- Master Organisasi: bikin pohon jabatan, tetapkan level (golongan)
- Master Waktu Kerja: bikin shift (Pagi/Siang/Malam), pola mingguan, kelompok kerja, assign jadwal
- Master Pendukung:
- Miscellaneous: input hari libur tahunan, status kekaryawanan (TETAP/KONTRAK/dll), komponen perjalanan dinas
- Penggajian: komponen gaji + formula + fasilitas progressif + jenis pinjaman
- Tambah Karyawan: bulk via CSV atau satu-per-satu via form
- Setting Karyawan: isi gaji pokok + status + bank rekening per karyawan
Operasional bulanan:
- Buat Periode baru (mis. Mei 2026)
- Generate Jadwal Harian untuk seluruh karyawan
- Setiap hari: kelola pengajuan (cuti, ijin, tukar shift, lembur)
- Akhir periode: tutup bulan → snapshot evaluasi otomatis ter-buat
- Proses Gaji:
- Review Data Waktu Kerja (jumlah hari kerja + lembur per karyawan)
- Review Data Fasilitas (preview budget tunjangan)
- Input/replicate Data Pinjaman (transaksi cicilan)
- Upload CSV Data Upload (komponen yang nominalnya manual)
- Set Pengecualian untuk karyawan yang butuh override khusus
- Klik tombol Kalkulasi — sistem hitung gaji per karyawan idempotent
- Konfirmasi (Tutup Bulan): review komponen + karyawan vs periode lewat (2 tab gap IDR & gap %) → centang ack → Konfirmasi & Tutup Bulan. Aksi ini snapshot evaluasi ke MySQL + arsip periode + create periode baru + index ke Elasticsearch untuk Laporan (Bab 9).
Operasional ad-hoc (di luar siklus bulanan):
- Gaji Non Reguler — THR, Bonus, Gaji XIII, Insentif:
- Setup: buat header run (jenis + nomor SK + periode dasar + syarat eligibility)
- Komponen Income: pilih komponen yang ikut + atur override nominal per karyawan
- Konfirmasi: review proyeksi total per kategori (per karyawan & per komponen) → Finalize
Reporting:
- Laporan — analisis historis menarik data dari Elasticsearch (auto-ter-arsip saat Tutup Bulan). 10 sub-laporan dalam 3 group (Waktu Kerja / Penggajian / Gaji Non Reguler). Status: 6/10 implemented — 4 Waktu Kerja (Jadwal Kerja, Realisasi Kehadiran dengan clock-in/out, Realisasi Lembur, Kelebihan WK) + 2 Penggajian (Riwayat Transfer dengan filter bank + bar chart distribusi, Distribusi Komponen dengan drill-down list karyawan). 4 menyusul: Jurnal Penggajian (butuh master GL account) + 3 Gaji Non Reguler. Lihat 09-laporan.md.
Navigasi UI¶
- Sidebar (kiri): navigasi operasional harian — Beranda (Dashboard + Karyawan), Pengajuan, Pipeline, Proses Gaji, Gaji Non Reguler, Laporan.
- Header (atas, sebelah informasi user): dropdown Master Data — Surat Keputusan, Organisasi, Waktu Kerja, Penggajian, Miscellaneous. Berisi setup data yang jarang diubah; sengaja dipindah dari sidebar supaya menu sidebar fokus ke operasi & reporting.
- Header → avatar user: Profile Organisasi, Billing, System Trail, Ganti Password, Keluar.
Glosarium ringkas¶
| Istilah | Arti |
|---|---|
| Tenant | Organisasi/perusahaan yang menyewa aplikasi. Setiap tenant punya data terpisah. |
| Biodata | Data identitas seseorang (KTP, alamat, keluarga, pendidikan). 1 biodata bisa jadi karyawan di banyak penempatan. |
| Karyawan | Penempatan biodata pada satu jabatan + kelompok kerja, dengan nomor induk + tanggal bergabung. |
| Jabatan | Posisi/role di organisasi. Jabatan punya hierarki (parent_id) dan level (golongan 1-20). |
| Golongan | jabatan.level (1-20). Dipakai untuk lookup tarif (fasilitas progressif, komponen perjalanan dinas). |
| Shift / Waktu Kerja | Definisi jam masuk/pulang plus toleransi clock-in/clock-out. |
| Jadwal Kerja | Pola mingguan: shift apa di hari Senin/Selasa/.../Minggu. |
| Kelompok Kerja | Grup karyawan yang dapat assignment jadwal yang sama (mis. "Front Office", "Operasional"). |
| Assignment | Penugasan jadwal kerja ke kelompok kerja untuk rentang tanggal. |
| Periode | Periode payroll satu bulanan (mis. "2026-04"). Punya tanggal mulai/selesai dan cut-off. |
| Realisasi | Hasil kalkulasi presensi harian per karyawan: hadir / izin / cuti / dinas / libur. |
| Evaluasi | Snapshot agregat per periode (excess working hours, kelebihan hari kerja, akumulasi lembur). |
| Komponen Gaji | Baris yang muncul di slip gaji, dengan Model (sumber nilai): Formula / Fasilitas / Upload / Pinjaman. |
| Formula | Ekspresi DSL kecil seperti [GP] * [WH] / 173. Konstanta seperti [GP] (Gaji Pokok), [WH] (Excess Working Hours). |
| Fasilitas Progressif | Tunjangan dengan tarif berbeda per golongan (mis. Uang Transport: Golongan 1 = 35rb/hari, Golongan 2 = 25rb/hari). |
| Pengecualian | Override final per (komponen × karyawan × periode). Bypass kalkulasi standar; nominal=0 = tidak berhak. |
| Gaji Non Reguler | Run penggajian di luar siklus bulanan (THR / Bonus / Gaji XIII / Insentif). Tiap run punya Setup (header) + komponen + override per karyawan. |
| Periode Dasar | Periode reguler yang dipakai sebagai sumber nominal default komponen di run gaji non reguler (mis. THR 2026 pakai komponen periode 2026-06). |
| Snapshot vs Override (non reguler) | Snapshot = nilai dari kalkulasi periode dasar. Override = nilai eksplisit per karyawan yang menggantikan snapshot. Sparse — hanya yang berbeda yang disimpan. |
| Status Setup (non reguler) | Baru = belum ada override; Proses = sudah ada override; Selesai = sudah di-Finalize (dibekukan). |
| Elasticsearch (ES) | Cluster pencarian/agregasi yang dipakai sebagai sumber data Laporan. Index dipopulasi otomatis saat Tutup Bulan. Bukan canonical (MySQL tetap source of truth). |
Index hris-realisasi |
1 dokumen ES per (karyawan × tanggal) — snapshot status efektif harian setelah tutup bulan. |
Index hris-evaluasi |
1 dokumen ES per (karyawan × periode) — gabungan 3 metric: excess working hours, kelebihan hari kerja, akumulasi lembur. |
| Surat Keputusan (SK) | Container/versi struktur jabatan. SK baru auto-clone struktur dari SK aktif. Status: Draft (belum berlaku) / Aktif (berlaku) / Lewat (digantikan). |
| PWA | Progressive Web App — aplikasi web yang bisa di-install ke home screen HP (Android via Chrome, iOS via Safari "Add to Home Screen"). Setelah install, jalan fullscreen seperti native app. Mobile WaktuKerja dibangun sebagai PWA. |
| Kawung Jam | Logo brand WaktuKerja — 4 kelopak Kawung (motif batik) di posisi 12/3/6/9 + jarum jam di tengah. Sogan + prada emas + indigo batik. File logo-waktukerja.svg shared antara portal web & mobile. |
| Notifikasi | Feed event per karyawan: pengajuan diproses HR, tukar shift dari rekan, slip gaji baru, gaji non reguler, jadwal override. Di-trigger otomatis saat HR aksi terkait. Tampil di tab Notifikasi mobile app dengan badge unread. |
| Face Capture (Check In/Out) | Tombol absen masuk/pulang di Beranda mobile, pakai kamera depan + overlay face frame. Foto di-capture jadi JPEG; (upload ke server face recognition di-develop terpisah). |
| Tier | Paket berlangganan WaktuKerja: Basic (gratis ≤15 karyawan, lalu Rp 4.500/karyawan + hosting Rp 12.000/bulan) untuk fitur waktu kerja saja; Standar (Rp 7.200/karyawan, min 10) untuk paket lengkap termasuk payroll, PPh 21, BPJS. |
| Periode Pembayaran | Pilihan billing cycle: Bayar 3 Bulan (subtotal × 3) atau Bayar 1 Tahun dengan diskon 15% (subtotal × 12 × 0.85). Konfirmasi pembayaran via WhatsApp ke tim WaktuKerja. |
| Add-On | Modul opsional di atas tier Standar — 9 add-on dalam 3 kategori (Integrasi: Multibank/WA; HR Lanjutan: Karir/Survey/Rekrutmen/Performance; Asesmen: Matriks/Exercise/AI Scoring). Aktivasi via galeri di halaman Billing → request WhatsApp. |
Bantuan¶
Issue / fitur missing → laporkan ke admin sistem internal organisasi Anda.
Untuk troubleshooting umum, lihat 99-lampiran.md.