title: “HR Overview” description: “Modul HR SNISHOP ERP: absensi, cuti, rekrmen, payroll, dan manajemen karyawan lengkap dengan GPS tracking dan foto selfie.”
HR Overview
Modul Human Resource (HR) SNISHOP ERP mengelola seluruh siklus hidup karyawan — dari rekrmen, onboarding, absensi harian, cuti dan izin, hingga payroll. Sistem ini dibangun untuk bisnis F&B yang membutuhkan kontrol kehadiran ketat dengan verifikasi GPS dan foto selfie, serta integrasi langsung ke perhitungan gaji.
Arsitektur Modul HR
7 Halaman HR
Entity & Data Model
Employee
AttendanceRecord
LeaveRequest
JobPosting
JobApplication
13 Peran & Hak Akses
Fitur Utama
1. Absensi dengan GPS & Foto Selfie
Sistem absensi menggunakan verifikasi ganda untuk memastikan karyawan benar-benar hadir di lokasi kerja: Verifikasi Kehadiran:2. Leave Management dengan Approval Workflow
Jenis Cuti:3. Recruitment Pipeline
Pipeline Stages:4. Payroll Integration
Modul HR terintegrasi langsung dengan Finance untuk perhitungan gaji otomatis: Komponen Payroll:Arsitektur Patterns
Server-Function-First
Semua operasi CRUD menggunakan base44 entity functions untuk konsistensi dan auditability:Idempotency Keys
Operasi kritis menggunakan idempotency key untuk mencegah duplikasi:Global Caching
Data karyawan dan attendance di-cache di context untuk performa:BroadcastChannel Sync
Multi-tab sync untuk real-time update:12 Shared Components
Integrasi Cross-Module
Cara Akses
Dari sidebar, klik menu HR untuk melihat dashboard overview, atau pilih sub-menu spesifik (Attendance, Leave, Recruitment, Employees, Payroll, Reports).Tips
- Pastikan GPS aktif saat check-in absensi — sistem menolak check-in jika lokasi tidak terdeteksi
- Upload foto selfie dengan pencahayaan baik — foto gelap atau blur menyulitkan verifikasi
- Submit cuti jauh-jauh hari — minimal H-3 untuk cuti tahunan, agar manager punya waktu approve
- Lengkapi dokumen pendukung untuk sick leave > 3 hari — surat dokter wajib di-upload
- Monitor attendance report setiap bulan untuk identifikasi pola keterlambatan atau absensi tidak wajar
- Gunakan recruitment pipeline untuk track semua lamaran secara terstruktur — jangan lewatkan kandidat potensial
Entity Relationship Diagram
Berikut adalah diagram relasi seluruh entitas HR dalam sistem SNISHOP ERP. Setiap entitas terhubung melalui foreign key dan relasi multi-tenant berdasarkancompany_id.
Keterangan Relasi
Tabel di atas membedakan relasi hard foreign key (field eksplisit pada JSONC schema) dengan relasi logis/embedded yang dijaga oleh server-function.
Seluruh entitas di atas juga ter-scoping secara multi-tenant lewat
company_id, kecuali AttendanceRecord yang masih memakai workspace_id sebagai kunci scope.
Entity Schema Reference (Referensi Skema Entitas)
Bagian ini mendokumentasikan seluruh field untuk setiap entitas HR. Semua deskripsi dalam Bahasa Indonesia. Field name mengikuti definisi JSONC entity secara persis.Employee — Data Karyawan
AttendanceRecord — Log Absensi (User-Level)
CompanyAttendance — Log Kehadiran Perusahaan
CompanyLeave — Pengajuan Cuti Perusahaan
Leave — Pengajuan Cuti (Legacy)
CompanyPayroll — Slip Gaji Perusahaan
Payroll — Slip Gaji (Legacy)
JobPosting — Lowongan Kerja
Applicant — Pelamar Kerja (Pipeline Rekrutmen)
Kondisi RLS — Create/Read/Update/Delete:
data.company_id = user.data.active_company_id (dan company_id tidak kosong) ATAU created_by_id = user saat ini ATAU user_condition.role = admin.
JobApplication — Lamaran Kerja
InterviewSchedule — Jadwal Interview
OfferLetter — Surat Penawaran Kerja
Kondisi RLS — Create/Read/Update/Delete:
data.company_id = user.data.active_company_id (dan company_id tidak kosong) ATAU created_by_id = user saat ini ATAU user_condition.role = admin.
Training — Program Pelatihan
KPI — Penilaian Key Performance Indicator
CompanyKPI — KPI Perusahaan
KPITemplate — Template KPI
PerformanceReview — Penilaian Performa Karyawan
Kondisi RLS — Create/Read/Update/Delete:
data.company_id = user.data.active_company_id (dan company_id tidak kosong) ATAU created_by_id = user saat ini ATAU user_condition.role = admin.
TimeEntry — Pencatatan Waktu Kerja
PayrollConfiguration — Konfigurasi Penggajian
PayslipTemplate — Template Slip Gaji
CompanyAttendanceSettings — Pengaturan Absensi Perusahaan
ApprovalWorkflow — Definisi Alur Persetujuan
Kondisi RLS — Aturan
create/read/update/delete didefinisikan kosong ({}) pada entitas ini; kontrol akses ditegakkan di lapisan server-function, bukan di level entitas.
ApprovalRequest — Instance Pengajuan Persetujuan
Kondisi RLS — Sama seperti
ApprovalWorkflow, aturan RLS kosong ({}); validasi approver dilakukan oleh server-function sebelum status berubah.
State Diagrams — Siklus Hidup Data HR
Siklus Hidup Status Karyawan
Siklus Hidup Kehadiran Harian
Siklus Hidup Pengajuan Cuti
Siklus Hidup Payroll Bulanan
Siklus Hidup Rekrutmen
Siklus Hidup Penilaian KPI
Siklus Hidup Performance Review (PerformanceReview.status)
Review performa memiliki siklus 4 tahap dengan satu gerbang wajib: acknowledge dari karyawan sebelum hasil bisa difinalisasi.
Siklus Hidup Surat Penawaran Kerja (OfferLetter.status)
Siklus Hidup Pengajuan Persetujuan (ApprovalRequest.overall_status)
Sequence Diagrams — Alur Data Utama
1. Alur Check-in Absensi dengan Verifikasi GPS & Foto
2. Alur Pengajuan Cuti dengan Approval Workflow
3. Alur Pemrosesan Payroll Bulanan
4. Alur Rekrutmen dari Lamaran hingga Interview
5. Alur Onboarding Karyawan Baru (Offer Accepted → Aktif)
Diagram berikut menggambarkan transisi kandidat yang menerima penawaran menjadi karyawan aktif beserta provisioning akses, pengaturan absensi, dan KPI awal. Catatan implementasi- Pembuatan
Employeedan provisioning akun berjalan dalam satu transaksi logis; jika salah satu gagal, statusApplicant.current_statustetapoffer_extendedagar dapat diulang. hire_datemenjadi dasar perhitungan masa percobaan (review_type = probation) dan prorasi gaji bulan pertama padaCompanyPayroll.- Penugasan
location_idpadaCompanyAttendanceSettings.locations[].assigned_employee_idsmenentukan geofence mana yang valid untuk karyawan tersebut.
6. Alur Performance Review & KPI (Self-assessment → Finalized)
Catatan implementasioverall_scoredihitung dari gabungancompetencies[].scoredankpi_achievement[].achievement_percentagememakaiweightmasing-masing; hasilnya menentukanrating.- Status
finalizedmengunci dokumen. Koreksi setelah finalisasi hanya dapat dilakukan Super Admin/HR Manager dan tercatat sebagai review baru. development_plan[]yang disetujui berubah menjadi entriTrainingagar progres pelatihan dapat dipantau.
Enum Reference Tables — Tabel Referensi Enum
Berikut adalah seluruh nilai enum yang digunakan pada field-field entitas HR.Employee Status (Employee.status)
Employment Type (Employee.employment_type, JobPosting.employment_type)
Department (Employee.department)
Attendance Status (AttendanceRecord.status, CompanyAttendance.status)
Leave Type (Leave.leave_type, CompanyLeave.leave_type)
Leave Status (Leave.status, CompanyLeave.status)
Payroll Status (Payroll.status, CompanyPayroll.status)
Payment Method (Payroll.payment_method, CompanyPayroll.payment_method)
Basic Salary Formula (PayrollConfiguration.basic_salary_formula)
Job Posting Status (JobPosting.status)
Job Application Status (JobApplication.status)
Interview Type (InterviewSchedule.interview_type)
Interview Status (InterviewSchedule.status)
Interview Recommendation (InterviewSchedule.recommendation)
Training Type (Training.training_type)
Training Status (Training.status)
Training Participant Attendance (Training.participants[].attendance_status)
KPI Rating (KPI.rating, CompanyKPI.rating)
KPI Status (KPI.status, CompanyKPI.status)
KPI Calculation Method (KPITemplate.default_metrics[].calculation_method)
KPI Aggregation Method (KPITemplate.default_metrics[].auto_source.aggregation)
KPI Calculation Frequency (KPITemplate.calculation_frequency)
Time Entry Status (TimeEntry.status)
Applicant Pipeline Status (Applicant.current_status)
Offer Letter Status (OfferLetter.status)
Offer Acceptance Status (OfferLetter.acceptance_status)
Offer Employment Type (OfferLetter.employment_type)
Himpitan dari enum Employee.employment_type — tawaran kerja belum mendukung status magang.
Performance Review Type (PerformanceReview.review_type)
Performance Review Rating (PerformanceReview.rating)
Performance Review Status (PerformanceReview.status)
Approval Workflow Document Type (ApprovalWorkflow.document_type)
Approval Request Status (ApprovalRequest.overall_status)
Approval History Level Status (ApprovalRequest.approval_history[].status)
Kode Hari Kerja (CompanyAttendanceSettings.working_days[])
Defaultworking_daysadalah[1,2,3,4,5](Senin–Jumat). Nilai di luar array dianggap hari libur sehingga tidak dihitung sebagaiworking_dayspada perhitungan prorasiCompanyPayroll.
Hak Akses RBAC — Modul HR
Tabel berikut merinci hak akses setiap peran terhadap entitas dan fitur dalam modul HR.Keterangan Hak Akses RBAC
Row-Level Security (RLS) Summary
Seluruh entitas HR menggunakan Row-Level Security (RLS) dari base44 untuk memastikan isolasi data multi-tenant:PolaOR created_by_id = current userpada entitas rekrutmen & penilaian berarti pembuat data selalu dapat membaca barisnya sendiri meskipun ia tidak memegang role HR. Entri bertanda aturan RLS kosong ({}) tidak memfilter baris berdasarkan field. Artinya: setiap user yang sudah login secara teknis memenuhi syarat RLS, sehingga validasicompany_iddan role WAJIB tetap dilakukan di dalam server-function. Jangan pernah membaca entitas-entitas ini langsung dari client tanpa fungsi backend.
