# Codingan Diagram (Mermaid) Lengkap - Sistem Monitoring Penugasan Anda dapat menyalin (copy) kode-kode di bawah ini ke dalam **Mermaid Live Editor** (https://mermaid.live/) atau **Draw.io** (Insert > Advanced > Mermaid) untuk menjadikannya gambar. --- ## 1. Usecase Diagram Lengkap (Termasuk CRUD) Menggambarkan interaksi menyeluruh dari autentikasi, CRUD data, hingga ekspor. ```mermaid usecaseDiagram actor Pegawai actor Admin actor "Super Admin" as SA rectangle "Sistem Monitoring Penugasan" { %% Autentikasi usecase "Melakukan Login & Logout" as Auth usecase "Mengelola Profil Diri" as Profil %% CRUD Kegiatan usecase "Melihat Daftar Kegiatan (Read)" as CRUD_R usecase "Menambah Laporan Baru (Create)" as CRUD_C usecase "Mengubah Laporan (Update)" as CRUD_U usecase "Menghapus/Membatalkan Laporan (Delete)" as CRUD_D %% Tindakan Lanjutan usecase "Meninjau Kegiatan (Ubah ke Ditinjau)" as Review usecase "Menyetujui Kegiatan (Ubah ke Selesai)" as Approve usecase "Melihat Statistik Dashboard" as Dash %% CRUD Pengguna usecase "Manajemen Akun User & Pegawai (CRUD)" as KelolaUser usecase "Mengekspor Laporan Excel" as Export } Pegawai --> Auth Pegawai --> Profil Pegawai --> CRUD_R Pegawai --> CRUD_C Pegawai --> CRUD_U Admin --> Auth Admin --> Profil Admin --> Dash Admin --> CRUD_R Admin --> Review Admin --> KelolaUser SA --> Auth SA --> Profil SA --> Dash SA --> CRUD_R SA --> Approve SA --> CRUD_D SA --> KelolaUser SA --> Export ``` --- ## 2. Flowchart Sistem (Menyesuaikan dengan Gambar Referensi) Flowchart ini disusun persis seperti gambar alur sistem yang Anda lampirkan, disesuaikan dengan arsitektur backend Monitoring Penugasan Pegawai di Dinas Tenaga Kerja dan Transmigrasi. ```mermaid flowchart TD %% Tampilan (Styling) Node agar rapi classDef startEnd fill:#fff,stroke:#333,stroke-width:2px; classDef process fill:#fff,stroke:#333,stroke-width:1px; classDef decision fill:#fff,stroke:#333,stroke-width:1px; classDef io fill:#fff,stroke:#333,stroke-width:1px; Start([Mulai]):::startEnd --> B[Membuka Aplikasi]:::process B --> C[Login]:::process C --> D[/Input Username dan Password/]:::io D --> E{Validasi?}:::decision E -- Tidak --> D E -- Ya --> F[Sistem Mengecek Role]:::process F --> R_USER[Dashboard Pegawai]:::process F --> R_ADMIN[Dashboard Admin]:::process F --> R_SA[Dashboard Super Admin]:::process %% ================= ALUR PEGAWAI ================= R_USER --> U_M{Menu User}:::decision U_M --> U_M1[Tambah Laporan]:::process U_M1 --> U_M1A[/Input Data & Upload Berkas/]:::io U_M1A --> U_M1B[Simpan Data ke Database]:::process U_M1B --> J1(( )) U_M --> U_M2[Riwayat Laporan]:::process U_M2 --> U_M2A[/Lihat Seluruh Laporan/]:::io U_M2A --> U_M2B{Status Laporan?}:::decision U_M2B -- Ditolak / Pending --> U_M2B1[/Input Data & Upload Berkas Ulang/]:::io U_M2B1 --> J1 U_M2B -- Diterima / Selesai --> J1 %% ================= ALUR ADMIN ================= R_ADMIN --> A_M{Menu Admin}:::decision A_M --> A_M1[Kelola Laporan]:::process A_M1 --> A_M1A[/Lihat Laporan Masuk/]:::io A_M1A --> A_M1B{Status Laporan?}:::decision A_M1B -- Valid --> A_M1B1[Update Status 'Telah Ditinjau']:::process A_M1B1 --> A_M1B1A[Update Data di DB]:::process A_M1B1A --> J2(( )) A_M1B -- Tidak Valid --> A_M1B2[Revisi Laporan / Tolak]:::process A_M1B2 --> A_M1B2A[Update Data di DB]:::process A_M1B2A --> J2 A_M1B -- Dipending --> A_M1B3[/Lihat Detail Laporan/]:::io A_M1B3 --> J2 A_M --> A_M2[Riwayat Laporan]:::process A_M2 --> A_M2A[/Lihat Seluruh Laporan/]:::io A_M2A --> A_M2B[/Unduh Laporan/]:::io A_M2B --> J2 A_M --> A_M3[Kelola Data Akun & Berkas]:::process A_M3 --> A_M3A[/Input Data Pegawai Baru/]:::io A_M3A --> A_M3B[Simpan Data di Database]:::process A_M3B --> J2 %% ================= ALUR SUPER ADMIN ================= R_SA --> SA_M{Menu Super Admin}:::decision SA_M --> SA_M1[Lihat Laporan]:::process SA_M1 --> SA_M1B{Status Laporan?}:::decision SA_M1B -- Diterima (Approve) --> SA_M1B1[/Update Status 'Selesai'/]:::io SA_M1B -- Ditolak / Dipending --> SA_M1B2[/Lihat Detail Laporan/]:::io SA_M1B1 --> J3(( )) SA_M1B2 --> J3 %% ================= PENYELESAIAN ================= J1 --> N[/Notifikasi/]:::io J2 --> N J3 --> N N --> K[Menu Profil]:::process K --> L[Logout]:::process L --> End([Selesai]):::startEnd ``` --- ## 2.B Flowchart Logika Backend Murni (Alur Proses API & Database) Flowchart ini adalah flowchart yang **sangat disarankan** untuk digunakan dalam Laporan Anda karena berfokus pada apa yang terjadi di "belakang layar" (Backend), mulai dari penerimaan Request HTTP, middleware, validasi, hingga interaksi dengan Database MySQL. ```mermaid flowchart TD classDef startEnd fill:#fff,stroke:#333,stroke-width:2px; classDef process fill:#fff,stroke:#333,stroke-width:1px; classDef decision fill:#fff,stroke:#333,stroke-width:1px; classDef io fill:#fff,stroke:#333,stroke-width:1px; Start([Mulai (Request dari Frontend)]):::startEnd --> REQ[/Menerima HTTP Request\n(POST/GET/PUT/DELETE)/]:::io %% Middleware Auth & Role REQ --> MID_AUTH{Cek Token Sanctum?}:::decision MID_AUTH -- Tidak Valid / Kosong --> ERR401[/Return JSON: 401 Unauthorized/]:::io MID_AUTH -- Valid --> MID_ROLE{Cek Role Akses?}:::decision MID_ROLE -- Ditolak --> ERR403[/Return JSON: 403 Forbidden/]:::io %% Validasi Controller MID_ROLE -- Diizinkan --> CTRL[Controller Menerima Request]:::process CTRL --> VAL{Validasi Payload Data\n(Input Kosong/Salah)?}:::decision VAL -- Gagal --> ERR422[/Return JSON: 422 Unprocessable Entity/]:::io %% Proses Database VAL -- Sukses --> DB_OP[Eksekusi Logika Bisnis & Query Database]:::process DB_OP --> DB_ACT{Jenis Operasi?}:::decision DB_ACT -- Create/Insert --> DB1[Simpan Data Baru ke Tabel]:::process DB_ACT -- Read/Select --> DB2[Ambil Data dari Tabel]:::process DB_ACT -- Update --> DB3[Perbarui Data di Tabel]:::process DB_ACT -- Delete --> DB4[Soft Delete Data (Ubah deleted_at)]:::process DB1 --> RES[/Return JSON: 201 Created/]:::io DB2 --> RES2[/Return JSON: 200 OK + Data/]:::io DB3 --> RES2 DB4 --> RES2 %% End ERR401 --> End([Selesai (Response Terkirim)]):::startEnd ERR403 --> End ERR422 --> End RES --> End RES2 --> End ``` --- ## 3. Data Flow Diagram (DFD) Level 0 (Konteks) Menggambarkan aliran input/output makro sistem. ```mermaid flowchart LR P[Pegawai] -- "Data Kredensial\nData Laporan Kegiatan\nData Edit Kegiatan" --> S((Sistem Monitoring\nPenugasan Pegawai)) S -- "Status Laporan\nDaftar Kegiatanku\nKonfirmasi Login" --> P A[Admin] -- "Data Manajemen User (CRUD)\nInstruksi Review Laporan\nData Kredensial" --> S S -- "Rekap Seluruh Laporan (Proses)\nData Tabel Pegawai\nDashboard Stats" --> A SA[Super Admin] -- "Instruksi Approval (Selesai)\nInstruksi Pembatalan (Delete)\nPerintah Export Excel" --> S S -- "Rekap Seluruh Laporan (Ditinjau)\nFile Export (XLSX)\nDashboard Stats" --> SA ``` --- ## 4. Entity Relationship Diagram (ERD) Komprehensif Menggambarkan seluruh struktur database berbasis Laravel Backend, termasuk token otentikasi Sanctum dan soft deletes (Fitur Hapus). ```mermaid erDiagram USERS ||--o| PEGAWAI : "Satu profil per user" USERS ||--o{ PENUGASAN : "Dibuat oleh (created_by)" USERS ||--o{ PENUGASAN : "Disetujui oleh (approved_by)" PEGAWAI }|--|{ PENUGASAN_PEGAWAI : "Ditugaskan pada" PENUGASAN }|--|{ PENUGASAN_PEGAWAI : "Melibatkan pegawai" USERS ||--o{ PERSONAL_ACCESS_TOKENS : "Memiliki token (Login)" USERS { bigint id PK string name string username "UNIQUE" string email "UNIQUE" string password enum role "superadmin, admin, user" string jabatan "nullable" timestamp created_at timestamp updated_at } PEGAWAI { bigint id PK string nip "UNIQUE" string nama string jabatan bigint user_id FK timestamp deleted_at "Soft Deletes" } PENUGASAN { bigint id PK string nomor_surat "UNIQUE" string kegiatan string lokasi text keterangan date tanggal_mulai date tanggal_selesai enum status "proses, selesai, telah_ditinjau" bigint created_by FK bigint approved_by FK timestamp approved_at text alasan_hapus timestamp deleted_at "Soft Deletes" } PENUGASAN_PEGAWAI { bigint id PK bigint penugasan_id FK bigint pegawai_id FK } PERSONAL_ACCESS_TOKENS { bigint id PK string tokenable_type bigint tokenable_id FK string name string token "UNIQUE" text abilities timestamp last_used_at timestamp expires_at } ```