Skip to main content

title: “Recruitment ATS — Applicant Tracking System” description: “Sistem pelacakan pelamar dengan job posting, kanban pipeline 6 tahap, dan React Query di SNISHOP ERP.”

Recruitment ATS — Applicant Tracking System

Recruitment ATS Recruitment ATS mengelola seluruh proses rekrutmen dari pembuatan lowongan hingga penerimaan karyawan. Sistem menggunakan kanban board dengan 6 tahap pipeline untuk melacak progress setiap pelamar.

Arsitektur

Akses Halaman

URL: /recruitment-ats

Dua Tab Utama

Statistik

Entitas: JobPosting

Jenis Pekerjaan

Status Lowongan

Entitas: Applicant

Kanban Pipeline

7 Kolom Status

Alur Progresi

Tombol “Maju”

Setiap pelamar memiliki tombol “Maju” yang memajukan status ke tahap berikutnya:

Applicant Detail Dialog

Dialog detail pelamar menampilkan:

React Query

ATS menggunakan React Query (useQuery, useMutation, useQueryClient) untuk manajemen data:

Keuntungan React Query

Job Posting Card

Setiap lowongan ditampilkan dalam card dengan informasi:

Integrasi dengan HR Module

Saat pelamar berstatus hired, data bisa dikonversi menjadi CompanyMember (karyawan baru) melalui proses onboarding di EmployeeForm.

Tips Penggunaan

  • Buat job posting dengan deskripsi dan persyaratan yang jelas untuk menarik pelamar berkualitas
  • Review pelamar baru secara berkala dan majukan yang memenuhi syarat ke tahap screening
  • Jadwalkan interview segera setelah screening selesai
  • Berikan catatan pada setiap pelamar untuk referensi di tahap selanjutnya
  • Tutup lowongan yang sudah terisi agar tidak menerima lamaran baru
  • Gunakan data statistik (active jobs, total hired) untuk evaluasi proses rekrutmen

Entity Relationship Diagram

Tabel Schema — Entitas Rekrutmen

JobPosting

Applicant

InterviewSchedule

CompanyInvitation

CompanyMember

Employee

State Machine — Application Lifecycle

Transisi Status Pelamar

Sequence Diagrams

1. Submit Lamaran

2. Jadwal Interview

3. Offer Letter & Hiring

Enum Tables

application_status (Applicant.current_status)

employment_type (JobPosting.employment_type)

job_status (JobPosting.status)

interview_type (InterviewSchedule.interview_type)

interview_status (InterviewSchedule.status)

interview_recommendation (InterviewSchedule.recommendation)

invitation_status (CompanyInvitation.status)

company_role (CompanyInvitation.role / CompanyMember.role)

employee_status (Employee.status)

member_status (CompanyMember.status)

RBAC — Recruitment ATS

Catatan RLS (Row-Level Security)

Semua entitas rekrutmen menggunakan RLS berbasis company_id:

Referensi Schema Nested Object

Bagian ini mendokumentasikan struktur detail untuk field bertipe object dan array[object] yang merujuk pada sub-schema dari masing-masing entitas.

Applicant.education — Sub-Schema

Setiap elemen dalam array education pada entitas Applicant memiliki struktur berikut: Contoh data:

Applicant.experience — Sub-Schema

Setiap elemen dalam array experience pada entitas Applicant memiliki struktur berikut: Contoh data:

InterviewSchedule.feedback — Sub-Schema

Setiap elemen dalam array feedback pada entitas InterviewSchedule memiliki struktur berikut: Contoh data:

Employee.bank_account — Sub-Schema

Field bank_account pada entitas Employee memiliki struktur berikut: Contoh data:

Employee.emergency_contact — Sub-Schema

Field emergency_contact pada entitas Employee memiliki struktur berikut: Contoh data:

CompanyMember.working_hours — Sub-Schema

Field working_hours pada entitas CompanyMember memiliki struktur berikut: Contoh data:

CompanyInvitation.permissions / CompanyMember.permissions — Sub-Schema Lengkap

Field permissions pada CompanyInvitation dan CompanyMember berisi objek dengan boolean flags yang menentukan hak akses member. Berikut daftar lengkap seluruh permission:

Hak Akses Umum (Default Aktif untuk Semua Member)

Hak Akses Umum (Default Nonaktif)

Hak Akses HR & Keuangan

Hak Akses Inventori

Hak Akses Proyek

Hak Akses POS (Point of Sale)

Hak Akses Laporan & Manajemen

Hak Akses Produksi

Hak Akses HPP & Distribusi

Hak Akses B2B


Enum Tambahan — Employee.department

Field department pada entitas Employee menggunakan enum yang berbeda dari field department pada JobPosting atau CompanyMember (yang bertipe string bebas). Berikut daftar nilai enum untuk Employee.department:

Perbedaan Field department antar Entitas


Perbedaan employment_type antar Entitas

Terdapat perbedaan kecil nilai enum employment_type antara JobPosting dan Employee:
Catatan: JobPosting menggunakan internship sedangkan Employee menggunakan intern untuk konsep yang sama. Perbedaan penamaan ini perlu diperhatikan saat konversi data dari Applicant yang di-hired menjadi Employee.

Kebijakan RLS (Row-Level Security) — Detail Lengkap

Berikut adalah aturan RLS lengkap untuk setiap operasi CRUD pada masing-masing entitas rekrutmen, diekstrak langsung dari definisi JSONC.

JobPosting — RLS Rules

Applicant — RLS Rules

InterviewSchedule — RLS Rules

CompanyInvitation — RLS Rules

CompanyMember — RLS Rules

Employee — RLS Rules

Ringkasan Pola RLS


Diagram Alur Konversi Pelamar ke Karyawan


Validasi dan Constraints

Field Required per Entitas

Format Field Khusus


Default Values per Entitas


Mapping Entitas Sumber (JSONC)

Dokumentasi ini disusun berdasarkan file definisi entitas berikut: