Skip to main content

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

Employee Portal Employee Portal adalah halaman self-service untuk karyawan. Setiap karyawan bisa melihat slip gaji, memantau kehadiran, dan mengajukan cuti secara mandiri tanpa perlu menghubungi HR.

Arsitektur

Akses Halaman

URL: /employee-portal

Access Policy

Portal menggunakan resolveUniqueActiveMembership dari companyAccessPolicy untuk menentukan akses:

Tiga Tab Utama

Tab Slip Gaji

Daftar Slip Gaji

Menampilkan seluruh record CompanyPayroll 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 otomatis total_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 dengan CompanyMember (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)

Entitas Employee 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)

Entitas CompanyMember 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)

Entitas CompanyPayroll menyimpan slip gaji bulanan. Di Employee Portal, karyawan hanya bisa membaca slip gaji milik sendiri.

Schema: CompanyAttendance (Record Absensi)

Entitas CompanyAttendance menyimpan record absensi harian karyawan. Di Employee Portal, karyawan bisa membaca absensi sendiri dan membuat record clock-in/clock-out.

Schema: CompanyLeave (Pengajuan Cuti)

Entitas CompanyLeave menyimpan pengajuan cuti karyawan. Di Employee Portal, karyawan bisa membuat pengajuan cuti baru dan membaca status pengajuan sendiri.

Schema: CompanyLoan (Pengajuan Kasbon)

Entitas CompanyLoan menyimpan pengajuan kasbon/pinjaman karyawan. Di Employee Portal, karyawan bisa membuat pengajuan kasbon dan membaca status serta sisa pinjaman sendiri.

Schema: CompanyAttendanceSettings (Pengaturan Absensi)

Entitas CompanyAttendanceSettings 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)

Entitas PayslipTemplate 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)

Entitas User menyimpan akun autentikasi global. Di Employee Portal, entitas User digunakan untuk autentikasi dan menentukan active_company_id yang sedang diakses.

Schema: Company (Data Perusahaan)

Entitas Company 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 field CompanyMember.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 role employee 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.

Ringkasan Kardinalitas Relasi