# ERD Sistem Pendataan dan Penilaian Kompetensi Pegawai

## 1. Tujuan ERD
ERD berikut menggambarkan hubungan antar entitas utama yang digunakan dalam sistem untuk menyimpan data pegawai, jabatan, unit kerja, assessment, dan pengelolaan akses.

## 2. Diagram ERD

```mermaid
erDiagram
    USERS ||--o| PEGAWAI : has
    UNIT_KERJA ||--o{ JABATAN_FUNGSIONAL : has
    UNIT_KERJA ||--o{ KODE_AKSES_KANTOR : manages
    UNIT_KERJA ||--o{ USERS : manages
    JENJANG_JABATAN ||--o{ JABATAN_FUNGSIONAL : belongs_to
    JABATAN_FUNGSIONAL ||--o{ PEGAWAI : has
    PEGAWAI ||--o{ PEGAWAI_FILE : uploads
    PEGAWAI ||--o{ PEGAWAI_VALIDATION_HISTORY : has
    PEGAWAI ||--o{ PEGAWAI_JABATAN_HISTORY : has
    PEGAWAI ||--o{ ASSESSMENT_KOMPETENSI : submits
    PEGAWAI ||--o| ASSESSMENT_PENGEMBANGAN : has
    KOMPETENSI ||--o{ INDIKATOR_KOMPETENSI : has
    KOMPETENSI ||--o{ STANDAR_KOMPETENSI_JABATAN : defines
    KOMPETENSI ||--o{ REKOMENDASI_PELATIHAN : has
    JABATAN_FUNGSIONAL ||--o{ STANDAR_KOMPETENSI_JABATAN : has
    INDIKATOR_KOMPETENSI ||--o{ ASSESSMENT_KOMPETENSI : assessed_by

    USERS {
        bigint id PK
        string name
        string email
        string role
        bigint pegawai_id FK
        bigint unit_kerja_id FK
    }

    PEGAWAI {
        bigint id PK
        string nip
        string nama_lengkap
        string email
        string status_validasi
        bigint jabatan_fungsional_id FK
        bigint user_id FK
    }

    JABATAN_FUNGSIONAL {
        bigint id PK
        string nama_jabatan
        bigint jenjang_jabatan_id FK
        bigint unit_kerja_id FK
    }

    JENJANG_JABATAN {
        bigint id PK
        string nama_jenjang
        string kode
    }

    UNIT_KERJA {
        bigint id PK
        string nama_unit
    }

    PEGAWAI_FILE {
        bigint id PK
        bigint pegawai_id FK
        string nama_file
        string path
    }

    PEGAWAI_VALIDATION_HISTORY {
        bigint id PK
        bigint pegawai_id FK
        string status
        string catatan
    }

    PEGAWAI_JABATAN_HISTORY {
        bigint id PK
        bigint pegawai_id FK
        string jabatan_sebelumnya
        string jabatan_saat_ini
    }

    KODE_AKSES_KANTOR {
        bigint id PK
        bigint unit_kerja_id FK
        string kode_akses
        boolean is_active
    }

    KOMPETENSI {
        bigint id PK
        string nama_kompetensi
        string jenis_kompetensi
        text deskripsi
    }

    INDIKATOR_KOMPETENSI {
        bigint id PK
        bigint kompetensi_id FK
        bigint jenjang_jabatan_id FK
        string kode_indikator
        text pertanyaan
    }

    STANDAR_KOMPETENSI_JABATAN {
        bigint id PK
        bigint kompetensi_id FK
        bigint jabatan_fungsional_id FK
        int level
        text deskripsi
    }

    ASSESSMENT_KOMPETENSI {
        bigint id PK
        bigint pegawai_id FK
        bigint indikator_kompetensi_id FK
        string jawaban
        string status
        int periode_tahun
    }

    ASSESSMENT_PENGEMBANGAN {
        bigint id PK
        bigint pegawai_id FK
        int periode_tahun
        boolean dikembangkan_karier
        boolean dikembangkan_kompetensi
        string bentuk_pengembangan_karier
        int waktu_pelaksanaan_tahun
        string prosedur_pengisian_jabatan
        string mekanisme_pengisian_jabatan
        text catatan_pengembangan_karier
        text hasil_penilaian_kompetensi
        text sejarah_karier
        text hasil_penilaian_kinerja
        text perencanaan_suksesi
    }

    REKOMENDASI_PELATIHAN {
        bigint id PK
        bigint kompetensi_id FK
        string nama_pelatihan
        string jenis_pelatihan
        string bentuk_pelatihan
        text deskripsi
        string status
    }
```

## 3. Penjelasan Singkat
- Satu pegawai dapat memiliki satu akun user, banyak file, banyak riwayat validasi, dan banyak assessment kompetensi.
- Satu jabatan fungsional dapat dimiliki oleh banyak pegawai dan memiliki banyak standar kompetensi.
- Satu kompetensi dapat memiliki banyak indikator, standar jabatan, dan rekomendasi pelatihan.
- Unit kerja menjadi penghubung utama antara pegawai, jabatan, akses kantor, dan user admin.
