- Hanya [email protected] yang memiliki dashboard admin penuh.
- Manager dan head memiliki akses approval extend hours untuk department crew mereka, Team Energy, dan Kotak Saran.
- Leave approval hanya bisa dilakukan oleh admin utama.
- Manager dan head tetap memakai portal staff untuk attendance, leave request, dan payslip pribadi.
Cara kerja portal admin
Halaman ini menjelaskan alur approval, payroll, settings, dan batas akses admin agar operasional cafe tetap konsisten dan mudah diaudit.
Hak Akses
Akun Staff Baru
- Untuk membuat password akun staff baru, jalankan `npm run password:new-staff` dari folder aplikasi.
- Untuk menghasilkan beberapa password sekaligus, gunakan `npm run password:new-staff -- --count 5`.
- Salin password ke catatan onboarding yang aman dan jangan menyimpannya di source code atau chat grup.
- Password generator hanya menampilkan password; profile staff tetap dibuat dan diisi melalui alur onboarding/import yang berlaku.
Approval Flow
Extend Hours
- Staff mengirim request extend hours dari portal staff, atau sistem otomatis membuat pending request saat clock-out melewati batas normal plus toleransi.
- Head department review lebih dulu jika sesuai department.
- Setelah head approve, manager memberi approval final.
- Jika request ditolak di salah satu tahap, status menjadi rejected.
Leave Requests
- Leave request diajukan dari portal staff.
- Hanya admin utama yang dapat approve atau reject leave.
- Jika approved, attendance record status leave akan dibuat otomatis.
Kotak Saran
- Kotak Saran menampilkan masukan anonim dari staff tanpa nama, email, department, atau profile ID pengirim.
- Gunakan filter status untuk melihat Baru, Dibaca, Sedang Ditindaklanjuti, Selesai, atau Diarsipkan.
- Admin/manager/head dapat menambahkan Catatan Internal untuk mencatat tindak lanjut.
- Status Dibaca berarti saran sudah dilihat, Sedang Ditindaklanjuti berarti ada action yang berjalan, dan Selesai berarti follow-up sudah ditutup.
- Jangan meminta staff menuliskan nama di isi saran jika tujuannya tetap anonim.
Payroll dan Attendance Review
Payroll Flow
- Admin membuka tab Payroll Generator.
- Pilih periode payroll yang ingin dihitung.
- Atur parameter kompensasi payroll di Employee Record: Base Salary, Tunjangan Jabatan (Manager/Head), dan Subside BBM.
- Saat menaikkan gaji atau daily rate, form otomatis mendefaultkan Effective Date (Salary Change) ke tanggal 1 awal bulan berjalan agar kompensasi baru berlaku untuk satu bulan penuh. Gaji lama otomatis disimpan di staff salary history.
- Semua slip pada Disbursed Transactions Ledger yang berstatus paid beserta preview Payslip PDF bersifat 100% snapshot beku (immutable); perubahan rate bulan berjalan tidak akan mengubah nominal, jam, maupun rincian slip paid bulan-bulan sebelumnya.
- Staff yang sudah berstatus Paid pada periode yang dipilih otomatis ditandai 'Paid (Locked)' pada tabel preview dan field inputnya terkunci agar tidak dapat ditimpa atau dihitung ulang saat admin generate draft baru.
- Cek Payroll Readiness di dashboard untuk memastikan tidak ada blocker pada periode yang sama.
- Sistem menghitung gaji berdasarkan base salary, allowance, position allowance, gasoline subsidy, overtime, bonus performance, deduction, dan rule aktif.
- Default extend rate full-time: gaji bulanan / 26 hari / 8 jam x 60%, mengikuti Settings payroll.
- Default extend rate Casual Worker: fixed daily rate / standard shift hours x 60%, mengikuti Settings payroll.
- Bonus Kinerja & Apresiasi dihitung otomatis dari quest/achievement yang sudah diverifikasi dan disetujui.
- Preview menampilkan total payroll, total bonus, total deduction, dan pembanding payroll bulan sebelumnya; angka berubah langsung saat bonus atau deduction diedit.
- Preview dan payroll history menampilkan Tunjangan Jabatan, Subside BBM/Transportasi, Bonus, serta Jam & Shift agar komponen net payout mudah diaudit.
- Payroll history menampilkan Finance Transfer Total untuk nominal yang perlu ditransfer ke finance sebelum distribusi gaji.
- Admin bisa membuka Payslip PDF Preview dari payroll history untuk melihat format payslip yang sama dengan portal staff sebelum print/save PDF.
- Jika payroll sudah terlanjur dipublish sebagai draft, admin masih bisa Edit Draft untuk koreksi bonus, staff deduction, deduction note, dan performance note sebelum Mark as Paid.
- Saat Mark as Paid, admin wajib upload bukti transfer salary; admin juga bisa Add/Replace Receipt untuk payroll bulan ini, bulan lalu, atau bulan lain yang sudah paid.
- Screenshot/foto bukti transfer dikompres otomatis ke S3 dan link receipt tersimpan di payroll history untuk audit pembayaran.
- Admin review preview sebelum menandai payroll sebagai paid.
Team Labor Cost
- Dashboard menampilkan Team Labor Cost Hari Ini dan Team Labor Cost Bulan Ini.
- Team Labor Cost bisa dipilih per tanggal, termasuk cek kemarin atau tanggal tertentu.
- Graph Dashboard terpisah tersedia dari dashboard admin untuk membaca trend labor cost, payroll paid bulanan, late pattern, extend exposure, task completion, dan department signal.
- Graph Dashboard memiliki Labor Projection untuk melihat total labor bulan berjalan, fixed monthly, rata-rata cost hari aktif, estimasi akhir bulan, dan jarak terhadap threshold 30 juta.
- Graph Dashboard memiliki Progress Cost Per Staff Bulan Ini untuk melihat progress cost per orang, termasuk base, allowance, fixed, approved extend, worked hours, dan approved extend hours.
- Payroll Payment Trend menunjukkan clean payroll paid per bulan supaya owner bisa melihat bulan dengan pembayaran payroll tertinggi tanpa outlier yang belum direview.
- Payroll Change Reason menjelaskan perubahan payroll bulan paid terbaru vs bulan paid sebelumnya berdasarkan base salary, allowance, overtime pay, bonus, deductions, dan jumlah paid records.
- Review Signal menandai catatan yang perlu dibantu cek seperti payroll paid outlier, pending GPS, shift belum selesai di sistem, shift pendek/panjang, worked extend tanpa approved extend, dan approved extend yang lebih besar dari worked extend.
- Payroll Readiness menampilkan blocker sebelum payroll: pending GPS/clock-out review, shift belum selesai di sistem, extend pending, leave pending, potensi extend belum diajukan, shift pendek, dan payroll record yang sudah ada.
- Generate Jadwal Mingguan dan pembuatan task staff akan melewati task profile yang sudah ada untuk kombinasi judul, tanggal, dan staff yang sama agar import berulang tidak membuat duplikat.
- Halaman Ops menampilkan submission checklist terbaru per staff/tanggal/shift dan menggabungkan item checklist dengan label sama agar review tidak terlihat dobel.
- Dashboard menampilkan Pending GPS Review hari ini dan bisa diklik untuk langsung membuka Attendance Logs.
- Dashboard menampilkan panel Izin Aktif Hari Ini di bagian atas agar admin langsung melihat siapa yang leave approved, sampai kapan, department, dan alasannya.
- Approved leave aktif tidak dihitung sebagai Absence Alerts, walaupun belum ada attendance row status leave.
- Staff memiliki menu Progress Saya untuk melihat estimasi bulan berjalan; angka ini bukan payroll final dan bisa berubah setelah review admin.
- Angka harian dihitung dari attendance yang sudah tercatat, allowance harian, dan extend hours approved.
- Extend cost dihitung dari approved extend hours x extend rate settings, default 60% dari hourly basic.
- Breakdown membedakan worked extend dari attendance dan approved extend yang benar-benar masuk cost.
- Fixed Payroll Items dipakai untuk remote monthly fixed dan daily fixed worker agar biaya masuk labor cost tanpa membuat attendance/GPS/late/extend.
- Profile dengan payroll_mode no-attendance tidak ikut hitungan absent, late, attendance health, atau task scheduling; Payroll Generator tetap menampilkan ledger preview agar admin bisa publish fixed payroll atau memberi bonus manual.
- Monthly fixed di daily labor cost memakai nominal bulanan / Full-time basic working days default, dan tetap tidak tampil pada Weekly Off Days/Blocked Attendance Days seperti Rabu.
- Monthly fixed di Team Labor Cost Bulan Ini masuk full monthly amount jika periodenya overlap; daily fixed masuk penuh di tanggal kerja yang dipilih.
- Angka bulanan adalah month-to-date sampai tanggal yang dipilih, bukan payroll final.
- Paid Payroll This Month tetap menunjukkan payroll yang sudah committed/paid pada bulan berjalan.
- Saat staff clock-out lebih dari normal shift + grace, sistem otomatis membuat Extend Hours pending agar muncul di Approval Extend Hours.
- Dashboard Potensi Extend Hours Belum Diajukan tetap menjadi safety net untuk record lama atau kasus yang belum punya request.
- Admin dapat merevisi jam masuk/pulang attendance dan koreksi request/approved hours pada Extend Hours jika ada salah input.
- Saat membuat atau merevisi Attendance di atas basic shift, sistem juga bisa membuat Extend Hours pending otomatis; admin tetap bisa approve/edit request existing jika perlu.
- Jika sudah ada Extend Hours untuk staff dan tanggal yang sama, admin diarahkan untuk edit request existing agar tidak double cost.
- Breakdown staff tetap menampilkan staff yang sudah clock-in walau biaya belum final, misalnya casual worker belum clock-out atau pending review iOS lama.
- Breakdown staff harian menampilkan semua staff yang relevan dalam area scroll, bukan hanya beberapa staff teratas.
- Attendance menampilkan Total Hours dari selisih clock-out minus clock-in, Basic maksimal 8 jam, dan Extend untuk sisa jam di atas 8 jam.
- Status late mengikuti roster: shift pagi late setelah 07:00, shift siang late setelah 11:00. Jika roster kosong dan staff clock-in area shift siang, sistem fallback ke batas 11:00.
- Attendance Logs default menampilkan hari ini, dengan tombol Kemarin dan date picker untuk cek tanggal tertentu.
- Clock-in atau clock-out dengan GPS meleset atau diajukan lewat tombol darurat bypass (3x gagal) masuk status Pending GPS review; admin/manager bisa approve sebagai present, tandai late jika terlambat, atau reject sebagai absent.
- Clock-out dari luar cafe atau tanpa GPS masuk Pending review; admin bisa approve, mark late, reject, atau koreksi jam pulang.
- Admin dapat membuat attendance manual untuk kasus staff lupa absen, lupa pulang, sakit mendadak, atau device lama gagal mencatat.
- Tombol Set 8 Jam di Attendance Logs mengoreksi clock-out menjadi jam masuk + normal shift hours untuk kasus lupa pulang atau salah tap pulang tanpa membuat Extend Hours.
- Admin utama dapat menghapus attendance yang benar-benar salah tap-in/record keliru supaya tidak ikut cost dan payroll.
- Settings memiliki System Health & Backup untuk melihat estimasi database usage, row count table penting, backup history, dan download backup JSON manual.
- Backup JSON adalah safety export manual; restore otomatis sengaja tidak disediakan agar tidak ada risiko overwrite data produksi tanpa review.
Attendance Monitoring
- Dashboard menampilkan presence, late, approved leave hari ini, dan absence harian.
- Manager dan head tetap masuk approval-only view ketika membuka area admin.
- Data mobile ditampilkan sebagai cards agar mudah dipantau tanpa horizontal scroll.
Team Tasks dan Jadwal Mingguan
- Jadwal kerja mingguan muncul di tab Attendance staff sebagai list jadwal.
- Batas late tetap: pagi setelah 07:00 WIB, siang setelah 11:00 WIB, tanpa grace tambahan. Tepat pada batas belum late; detik setelahnya late. Timezone ditetapkan Asia/Jakarta untuk semua perangkat.
- Jadwal kebersihan mingguan dipublish sesuai tanggal kalender WIB; task besok baru aktif pada tanggalnya. Preview dan hasil Generate Jadwal Mingguan memakai tanggal yang sama.
- Gunakan Generate Jadwal Mingguan di Team Energy setiap Rabu untuk membuat jadwal kerja dan task kebersihan Kamis-Selasa.
- Edit Task Aktif dipakai untuk mengganti staff, due date, catatan, atau cancel task saat jadwal berubah.
- Manager/head melihat task berdasarkan kategori department atau assignee crew department dari Team Energy, tetapi Kunci Moments pribadi hanya menampilkan task yang relevan untuk akun mereka.
- Staff menandai task selesai dari Kunci Moments di portal staff.
- Hanya task hari ini atau overdue yang menahan clock-out; task besok atau tanggal berikutnya tidak memblokir staff pulang.
- Manager/head/admin verify task selesai untuk catatan performa dan bonus review.
- Jika ada nama di jadwal yang belum cocok dengan profil aktif, admin perlu update profile atau assignment dulu.
Settings yang Bisa Diubah
Perubahan settings akan langsung memengaruhi behavior staff portal, termasuk attendance window, blocked weekdays, dan perhitungan payroll terkait rule aktif.
Ringkasan Tugas Admin
Kelola employee profiles, approve leave, proses payroll, review presence, dan ubah settings operasional.
Approve extend hours crew department sendiri, tanpa akses ke dashboard admin penuh dan tanpa akses approve leave.
Cek pending approvals, attendance hari ini, dan pastikan settings attendance sesuai operasional cafe terbaru.
FAQ Admin
Kenapa manager atau head tidak bisa melihat dashboard admin penuh?
Karena akses penuh dibatasi hanya untuk [email protected]. Manager dan head hanya diarahkan ke approval extend hours sesuai department mereka.
Siapa yang boleh approve leave?
Leave hanya bisa di-approve atau di-reject oleh admin utama.
Apakah attendance rule bisa diubah tanpa edit kode?
Ya. Jam buka attendance, jam mulai kerja/late after, jam closing, cutoff sebelum closing, blocked weekdays, late grace minutes, dan threshold deteksi extend bisa diubah dari menu Settings. Clock-out tetap manual supaya cleaning dan extend hours tidak terpotong otomatis.
Kenapa payroll preview berbeda dari bulan sebelumnya?
Payroll mengikuti attendance, overtime approved, allowance, deduction aktif, dan rule settings yang berlaku pada saat perhitungan.
