Skip to main content

Job Title Module

Peruntukan: Dokumen ini adalah Product Requirements Document (PRD) untuk Job Title Module — modul master yang mengelola jabatan (job title), menghubungkan job family, job level, dan job grade. Untuk detail teknis dan aturan validasi, lihat TEKNIS dan VALIDATION-RULES.


Overview

Job Title Module mengelola job title (jabatan) sebagai master data. Setiap job title memiliki nama, deskripsi opsional, dan relasi ke job family, job level, serta job grade. Job title dipakai sebagai referensi untuk job position dan employee dalam struktur HR.

Modul ini menyediakan CRUD dasar (create, list, get by id, update, soft delete) dengan tenant isolation dan audit fields.


Goals

  • Menyediakan master data untuk jabatan (job title)
  • Menghubungkan job family, job level, dan job grade dalam satu entitas
  • Menjadi referensi untuk job position dan employee
  • Operasi sederhana: create, list, detail, update, soft delete
  • Tenant isolation dan audit trail

Core Concepts

1. Job Title

  • Name — Nama tampilan jabatan (contoh: Finance Junior 1, Senior Engineer)
  • Description — Opsional; deskripsi jabatan
  • family_id — UUID Job Family (referensi kelompok jabatan)
  • level_id — UUID Job Level (referensi level jabatan)
  • grade_id — UUID Job Grade (referensi grade jabatan)
  • is_active — Status aktif (default true pada create)

2. Tenant & Audit

  • Setiap record terikat tenant_id
  • Audit: created_by, created_at, updated_by, updated_at, deleted_by, deleted_at (soft delete)

3. Relasi

  • JobFamily — JobTitle.family_id → JobFamily.id
  • JobLevel — JobTitle.level_id → JobLevel.id
  • JobGrade — JobTitle.grade_id → JobGrade.id
  • JobPosition — Banyak job position dapat mengacu ke satu job title
  • Employee — Employee dapat terhubung ke job title

Contoh Data

Format isian Create:

FieldKeteranganRequiredContoh
nameNama job title"Finance Junior 1"
family_idUUID Job FamilyUUID
level_idUUID Job LevelUUID
grade_idUUID Job GradeUUID
descriptionDeskripsi opsional-"Finance related role"

Format Update (semua optional kecuali name):

FieldKeteranganContoh
nameNama"Senior Finance"
family_idUUID Job FamilyUUID
level_idUUID Job LevelUUID
grade_idUUID Job GradeUUID
descriptionDeskripsinull atau string
is_activeStatus aktiftrue

Supported Operations

OperasiRingkasan
CreateBuat job title; validasi family_id, level_id, grade_id harus ada
ListDaftar dengan filter search, is_active, pagination, sorting
Get by IDDetail satu job title by UUID
UpdatePartial update (name, family_id, level_id, grade_id, description, is_active)
Soft DeleteSet deleted_at, deleted_by (data tidak dihapus fisik)

Tidak ada hard delete di API; soft delete saja.


Data Integrity Rules

  • family_id, level_id, grade_id harus mereferensi record yang ada (validasi FK)
  • name required pada create
  • Update dan soft delete memvalidasi existence (record harus ada)

Integrasi

Modul / TabelHubungan
JobFamilyJobTitle.family_id → JobFamily.id
JobLevelJobTitle.level_id → JobLevel.id
JobGradeJobTitle.grade_id → JobGrade.id
JobPositionJobPosition.title_id → JobTitle.id
EmployeeEmployee dapat terhubung ke JobTitle
TenantSemua data di-scope per tenant_id

Technical Characteristics

  • Identifier: UUID
  • Base route: /job-titles
  • Auth: Bearer token (AuthGuard); tenant dari current user
  • RLS: Tenant-scoped client (createTenantClient)

Referensi