Skip to main content

Job Grade Module

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


Overview

Job Grade Module mengelola job grade (grade jabatan) sebagai master data. Setiap job grade memiliki nama, key (unique, auto-generated dari nama), deskripsi opsional, dan terhubung ke job level. Job grade dipakai sebagai referensi untuk job title 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 grade jabatan (job grade)
  • Mendukung key unik per tenant (auto-generated slug dari nama)
  • Terhubung ke job level (level_id)
  • Menjadi referensi untuk job title
  • Operasi sederhana: create, list, detail, update, soft delete
  • Tenant isolation dan audit trail

Core Concepts

1. Job Grade

  • Name — Nama tampilan (contoh: 1, 2, 3, 1A, 1B, 2A, 2B)
  • Key — Identifier unik, di-generate otomatis dari nama (slug)
  • Description — Opsional; deskripsi grade
  • level_id — UUID Job Level (wajib; referensi level 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

  • JobLevel — JobGrade.level_id → JobLevel.id
  • JobTitle — Banyak job title dapat mengacu ke satu job grade

Contoh Data

Format isian Create:

FieldKeteranganRequiredContoh
nameNama job grade"1", "2A", "Senior"
level_idUUID Job LevelUUID
descriptionDeskripsi opsional-"Grade 1 entry level"

Key di-generate otomatis dari name (slug). Jika bentrok, suffix -1, -2 ditambahkan.

Format Update (semua required di DTO saat ini):

FieldKeteranganContoh
nameNama"2"
level_idUUID Job LevelUUID
descriptionDeskripsinull atau string
is_activeStatus aktiftrue

Supported Operations

OperasiRingkasan
CreateBuat job grade; key auto dari name, validasi level_id harus ada
ListDaftar dengan filter search, is_active, pagination, sorting
Get by IDDetail satu job grade by UUID
UpdateUpdate (key di-regenerate dari name)
Soft DeleteSet deleted_at, deleted_by

Tidak ada hard delete di API; soft delete saja.


Data Integrity Rules

  • Key unik per tenant
  • level_id harus mereferensi JobLevel yang ada
  • name required pada create
  • Update memvalidasi existence job grade dan job level

Integrasi

Modul / TabelHubungan
JobLevelJobGrade.level_id → JobLevel.id
JobTitleJobTitle.grade_id → JobGrade.id
TenantSemua data di-scope per tenant_id

Technical Characteristics

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

Referensi