Skip to main content

title: “Company Attendance — Absensi Perusahaan” description: “Manajemen absensi perusahaan dengan geofence multi-lokasi, shift, mirror camera, dan export CSV di SNISHOP ERP.”

Company Attendance — Absensi Perusahaan

Company Attendance Halaman Company Attendance adalah dashboard admin untuk mengelola dan memantau absensi seluruh karyawan. Mendukung geofence multi-lokasi, shift management, mirror camera untuk verifikasi wajah, dan export CSV.

Arsitektur

Akses Halaman

URL: /company-attendance

Tiga Sub-Tab

Entitas: CompanyAttendance

Geofence Validation

Sistem menggunakan Haversine formula untuk memvalidasi jarak antara posisi GPS karyawan dan lokasi kantor:
Jika distance > office_radius_meters, sistem menampilkan peringatan lokasi di luar area yang diizinkan.

Multi-Location Geofence

Perusahaan dengan beberapa lokasi kerja bisa mengkonfigurasi banyak geofence:

Shift Management

Shift dikonfigurasi dalam array di CompanyAttendanceSettings: Jika shift tersedia, karyawan harus memilih shift sebelum clock-in.

Mirror Camera

Tab “One” menggunakan mirror camera dengan face oval guide overlay untuk verifikasi wajah:
  1. Kamera depan aktif dengan tampilan mirror
  2. Overlay oval menampilkan posisi wajah yang diharapkan
  3. Foto di-capture otomatis saat wajah terdeteksi di posisi yang benar
  4. Foto di-compress dan diupload ke Cloudinary

Photo Detail Dialog

Admin bisa melihat foto clock-in dan clock-out secara berdampingan:

Server Function: recordAttendance

Absensi perusahaan menggunakan server function sebagai primary path:

Filter & Export

Filter

Export CSV

Data absensi bisa diexport ke CSV dengan filter tanggal. File CSV berisi seluruh record absensi dalam periode yang dipilih.

Entitas: CompanyAttendanceSettings

Live Work Timer

Komponen LiveWorkTimer menampilkan durasi kerja secara real-time:
  • Update setiap 1 detik
  • Pesan motivasional berdasarkan waktu (pagi/siang/sore)
  • Progress bar menuju target jam harian
  • Indikator status overtime

Komponen: AttendanceSettingsForm

Form konfigurasi absensi (916 baris) mencakup:

Entity Relationship Diagram

Tabel Schema Lengkap

CompanyAttendance (28 field)

CompanyAttendanceSettings (16 field)

AttendanceRecord (13 field)

CompanyLeave (15 field)

Leave (13 field)

Employee (18 field)

Company (20 field)


Schema Nested Object — Detail Sub-Field

CompanyAttendanceSettings.locations[] (Sub-Field per Lokasi Geofence)

CompanyAttendanceSettings.shifts[] (Sub-Field per Shift)

CompanyAttendanceSettings.working_hours (Sub-Field)

CompanyAttendanceSettings.overtime_settings (Sub-Field)

CompanyAttendance.clock_in_location / clock_out_location (Sub-Field)

AttendanceRecord.clock_in_location / clock_out_location (Sub-Field)

Employee.bank_account (Sub-Field)

Employee.emergency_contact (Sub-Field)

Company.settings (Sub-Field)


State Machine — Status Absensi

Transisi Status

State Machine — Status Pengajuan Cuti (CompanyLeave)

Transisi Status Cuti


Sequence Diagrams

1. GPS Check-In Flow

2. Geofence Validation Flow

3. Overtime Calculation Flow

4. Leave Application & Approval Flow

5. Auto Clock-Out Flow


Tabel Enum

attendance_status (Status Absensi)

check_type (Tipe Absensi)

leave_type (Jenis Cuti)

leave_status (Status Pengajuan Cuti)

employment_type (Tipe Employment Karyawan)

employee_status (Status Karyawan)

department (Departemen)

industry (Industri Perusahaan)

subscription_plan (Plan Langganan)

batch_allocation_strategy (Strategi Alokasi Batch)

working_days (Hari Kerja)


RBAC — Hak Akses Absensi

RLS Policy Summary