Skema Data — HRD (Kepegawaian, Evaluasi Kinerja, Cuti, BKD)¶
Status: DRAFT (13 Juli 2026) — tahap 4 dari desain skema bertahap
Melanjutkan Skema Data — Fondasi, Skema Data — Akademik Inti, dan Skema Data — Keuangan. Halaman ini mencakup Modul 6 (HRD). Modul Aset dan Perpustakaan menyusul di halaman terpisah.
1. Diagram ERD¶
2. Migrasi Tambahan ke Tabel Pegawai¶
Pegawai sudah didefinisikan minimal di Skema Data — Fondasi (hanya
identitas dasar untuk kebutuhan Jabatan Struktural & RBAC). Kolom berikut ditambahkan di sini:
| Kolom baru | Tipe | Keterangan |
|---|---|---|
| fakultas_id | bigint (FK → Fakultas, nullable) | Unit kerja utama (berbeda dari jabatan struktural di RiwayatJabatan) |
| program_studi_id | bigint (FK → ProgramStudi, nullable) | |
| tempat_tanggal_lahir | varchar | |
| alamat | text | |
| no_hp | varchar | |
| jabatan_akademik | enum(asisten_ahli, lektor, lektor_kepala, guru_besar), nullable | Khusus dosen — atribut permanen, beda dari jabatan struktural (§0.1) yang periodik |
| status_kepegawaian | enum(tetap, luar_biasa) |
Kenapa fakultas_id/program_studi_id di sini, padahal sudah ada di RiwayatJabatan?
Keduanya menjawab pertanyaan berbeda. Pegawai.program_studi_id = "pegawai ini berbasis
di prodi mana" (data kepegawaian dasar, dibutuhkan sinkronisasi PDDIKTI). RiwayatJabatan =
"pegawai ini sedang menjabat posisi struktural apa" (mis. jadi Kaprodi) — dua hal yang
independen; seorang dosen bisa berbasis di Prodi A tanpa pernah menjabat struktural apa pun.
3. Evaluasi Kinerja¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| pegawai_id | bigint (FK → Pegawai) | Yang dinilai |
| dinilai_oleh_id | bigint (FK → Pegawai) | Atasan — diambil dari rantai jabatan struktural (§0.1) |
| periode | varchar | mis. "2026 Semester Genap" |
| skor | decimal, nullable | |
| status | enum(draft, final) | |
| tanggal_evaluasi | date |
4. Cuti Pegawai¶
Berbeda dari CutiAkademik (mahasiswa, sudah ada di
Skema Data — Akademik Inti) — ini cuti kerja staf/dosen.
4.1 JenisCuti (master, dikonfigurasi per tenant)¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| nama | varchar | mis. "Cuti Tahunan", "Cuti Sakit", "Cuti Melahirkan" |
4.2 CutiPegawai¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| pegawai_id | bigint (FK → Pegawai) | |
| jenis_cuti_id | bigint (FK → JenisCuti) | |
| tanggal_mulai | date | |
| tanggal_selesai | date | |
| status | enum(diajukan, disetujui, ditolak) | |
| disetujui_oleh_id | bigint (FK → Pegawai, nullable) | Atasan — rantai jabatan struktural yang sama |
5. Program Pelatihan¶
5.1 ProgramPelatihan¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| nama | varchar | |
| penyelenggara | varchar | |
| tanggal_mulai | date | |
| tanggal_selesai | date |
5.2 PesertaPelatihan¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| program_pelatihan_id | bigint (FK → ProgramPelatihan) | |
| pegawai_id | bigint (FK → Pegawai) | |
| status | enum(terdaftar, selesai, sertifikat_terbit) |
6. BKD (Beban Kerja Dosen)¶
6.1 AturanBKD (konfigurasi per tenant)¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| sks_minimum | decimal | Ambang SKS ekuivalen minimum per semester |
6.2 LaporanBKD (header per dosen per semester)¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| pegawai_id | bigint (FK → Pegawai) | |
| tahun_akademik_id | bigint (FK → TahunAkademik) | |
| total_sks_ekuivalen | decimal | Dihitung dari jumlah DetailBKD |
| status | enum(draft, submitted, divalidasi) | |
| divalidasi_oleh_id | bigint (FK → Pegawai, nullable) | Kaprodi/asesor BKD |
6.3 DetailBKD (rincian tridharma)¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| laporan_bkd_id | bigint (FK → LaporanBKD) | |
| kategori | enum(pendidikan, penelitian, pengabdian, penunjang) | |
| uraian_kegiatan | text | |
| sks_ekuivalen | decimal |
Notifikasi-saja, konsisten dengan keputusan sebelumnya
Bila LaporanBKD.total_sks_ekuivalen < AturanBKD.sks_minimum, sistem menampilkan
notifikasi — tidak memblokir submit, tidak ada penegakan otomatis. Sama seperti
PeringatanAkademik di Skema Data — Akademik Inti.
7. Rincian Komponen Gaji¶
Melengkapi SlipGaji (header saja) yang sudah dibuat di
Skema Data — Keuangan.
7.1 KomponenGaji (master, dikonfigurasi per tenant)¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| nama | varchar | mis. "Gaji Pokok", "Tunjangan Jabatan", "Potongan BPJS" |
| jenis | enum(tambahan, potongan) |
7.2 SlipGajiDetail¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| slip_gaji_id | bigint (FK → SlipGaji — didefinisikan di Skema Data — Keuangan) | |
| komponen_gaji_id | bigint (FK → KomponenGaji) | |
| nominal | decimal |
8. Row-Level Security¶
Pola identik dengan halaman sebelumnya — semua tabel di atas memakai tenant_id + kebijakan RLS
yang sama (lihat Skema Data — Fondasi §10).
9. Langkah Berikutnya¶
Skema tabel Biro Aset dan Perpustakaan menyusul di halaman terpisah — bagian terakhir dari desain skema bertahap sebelum uji isolasi tenant.
Kembali ke Roadmap Implementasi atau Skema Data — Keuangan.