title: “Employee Portal — Portal Karyawan” description: “Portal self-service karyawan: slip gaji, kalender absensi, pengajuan cuti, dan profil di SNISHOP ERP.”
Employee Portal — Portal Karyawan

Arsitektur
Akses Halaman
URL:/employee-portal
Access Policy
Portal menggunakanresolveUniqueActiveMembership dari companyAccessPolicy untuk menentukan akses:
Tiga Tab Utama
Tab Slip Gaji
Daftar Slip Gaji
Menampilkan seluruh recordCompanyPayroll milik karyawan:
Detail Slip Gaji
Dialog detail menampilkan breakdown lengkap:Export CSV
Slip gaji bisa diexport ke CSV dengan BOM (Byte Order Mark) untuk kompatibilitas Excel:Tab Kehadiran: Kalender Mini
Kalender bulanan mini menampilkan status absensi dengan dot indicator:Tab Cuti: Pengajuan Cuti
Form Pengajuan
Dialog form untuk mengajukan cuti baru:Auto-Calculate Total Hari
Sistem menghitung otomatistotal_days dari selisih end_date - start_date menggunakan differenceInDays.
Jenis Cuti
Status Pengajuan
Profile Sidebar
Informasi Profil
Statistik Karyawan
Entitas: CompanyPayroll (Detail)
Diagram Relasi Entitas Employee Portal (ER Diagram)
Diagram berikut menunjukkan relasi antar-entitas yang diakses melalui Employee Portal. Karyawan berinteraksi denganCompanyMember (profil), CompanyPayroll (slip gaji), CompanyAttendance (absensi), CompanyLeave (cuti), dan CompanyLoan (kasbon) — semuanya terfilter berdasarkan employee_id milik user yang login.
Penjelasan Relasi Utama
Entity Schema Tables — Detail Lengkap per Entitas
Schema: Employee (Data Personalia)
EntitasEmployee menyimpan data personalia lengkap karyawan. Di Employee Portal, data ini ditampilkan di sidebar profil dan digunakan untuk verifikasi informasi pribadi.
Schema: CompanyMember (Akses & Profil Sistem)
EntitasCompanyMember adalah representasi karyawan dalam sistem. Di Employee Portal, entitas ini menjadi sumber data utama untuk sidebar profil, permission, dan statistik.
Schema: CompanyPayroll (Ringkasan Slip Gaji)
EntitasCompanyPayroll menyimpan slip gaji bulanan. Di Employee Portal, karyawan hanya bisa membaca slip gaji milik sendiri.
Schema: CompanyAttendance (Record Absensi)
EntitasCompanyAttendance menyimpan record absensi harian karyawan. Di Employee Portal, karyawan bisa membaca absensi sendiri dan membuat record clock-in/clock-out.
Schema: CompanyLeave (Pengajuan Cuti)
EntitasCompanyLeave menyimpan pengajuan cuti karyawan. Di Employee Portal, karyawan bisa membuat pengajuan cuti baru dan membaca status pengajuan sendiri.
Schema: CompanyLoan (Pengajuan Kasbon)
EntitasCompanyLoan menyimpan pengajuan kasbon/pinjaman karyawan. Di Employee Portal, karyawan bisa membuat pengajuan kasbon dan membaca status serta sisa pinjaman sendiri.
Schema: CompanyAttendanceSettings (Pengaturan Absensi)
EntitasCompanyAttendanceSettings menyimpan konfigurasi kebijakan absensi perusahaan. Di Employee Portal, pengaturan ini digunakan untuk validasi clock-in/clock-out (geofence, jam kerja, shift).
Schema: PayslipTemplate (Template Slip Gaji)
EntitasPayslipTemplate menyimpan template tampilan slip gaji yang bisa dikustomisasi per perusahaan. Template ini mengatur komponen apa saja yang ditampilkan saat slip gaji diexport atau dicetak.
Schema: User (Akun Pengguna)
EntitasUser menyimpan akun autentikasi global. Di Employee Portal, entitas User digunakan untuk autentikasi dan menentukan active_company_id yang sedang diakses.
Schema: Company (Data Perusahaan)
EntitasCompany menyimpan data perusahaan tempat karyawan bekerja. Di Employee Portal, entitas ini menjadi konteks utama filtering data melalui company_id.
State Diagram — Siklus Hidup Pengajuan Self-Service
Diagram berikut menunjukkan siklus hidup pengajuan yang bisa dilakukan karyawan melalui Employee Portal: pengajuan cuti dan pengajuan kasbon.Status Pengajuan Cuti (CompanyLeave)
Status Pengajuan Kasbon (CompanyLoan)
Status Payroll (CompanyPayroll)
Status Absensi (CompanyAttendance)
Sequence Diagrams — Alur Interaksi Employee Portal
Alur Melihat Slip Gaji (Payslip View)
Karyawan membuka tab “Slip Gaji” untuk melihat dan mengexport slip gaji bulanan.Alur Mengajukan Cuti (Leave Request)
Karyawan mengajukan cuti baru melalui tab “Leaves” di Employee Portal.Alur Update Profil (Profile Update)
Karyawan memperbarui informasi profil pribadi melalui sidebar di Employee Portal.Alur Clock-in/Clock-out (Attendance)
Karyawan melakukan absensi masuk dan keluar melalui Employee Portal dengan validasi geofence dan GPS.Enum Tables
Enum: leave_type (Jenis Cuti)
Enum: approval_status (Status Pengajuan Self-Service)
Enum: payroll_status (Status Slip Gaji)
Enum: attendance_status (Status Absensi)
Enum: employment_type (Tipe Pekerjaan)
Enum: employee_status (Status Karyawan)
Enum: department (Departemen)
Enum: payment_method (Metode Pembayaran Gaji)
Enum: member_role (Role dalam Perusahaan)
Enum: user_role (Role Global User)
Enum: subscription_plan (Plan Langganan)
Enum: industry (Industri Perusahaan)
Enum: membership_duration_type (Tipe Durasi Membership)
RBAC (Role-Based Access Control) — Employee Portal
Tabel berikut mendefinisikan hak akses per role terhadap fitur-fitur di Employee Portal. Permission disimpan di fieldCompanyMember.permissions.
Akses Fitur Employee Portal per Role
Akses per Entitas (Employee Portal Scope)
Catatan RLS (Row-Level Security)
Semua entitas di Employee Portal dilindungi oleh Row-Level Security (RLS). Karyawan dengan roleemployee hanya bisa mengakses data milik sendiri melalui kondisi berikut:
Admin global (
user_condition: { role: "admin" }) memiliki akses penuh ke semua data tanpa batasan RLS.
ER Diagram Lengkap — Semua Entitas Employee Portal
Diagram berikut menampilkan relasi lengkap termasuk entitas pendukung:CompanyAttendanceSettings, PayslipTemplate, dan Company dengan field detail.
