Initial commit for combined ProjectKP
This commit is contained in:
@@ -0,0 +1,274 @@
|
||||
# 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
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user