Files
LAB_LINGKUNGAN/lab_env_db_class_diagram.md
2025-04-24 10:25:31 +07:00

275 lines
8.1 KiB
Markdown

# Diagram Kelas Sistem Aplikasi Laboratorium Lingkungan
Berikut adalah diagram kelas yang memvisualisasikan struktur database dan menunjukkan hubungannya dengan alur proses laboratorium lingkungan.
```mermaid
classDiagram
class Customer {
+customer_id: int
+customer_name: varchar
+customer_type: enum
+contact_person: varchar
+phone_number: varchar
+email: varchar
+address: text
+company_name: varchar
+createRequest()
+viewRequestStatus()
+downloadReports()
}
class ServiceRequest {
+request_id: int
+customer_id: int
+request_date: timestamp
+request_type: enum
+project_name: varchar
+project_location: text
+status: enum
+admin_id: int
+quotation_number: varchar
+quotation_date: date
+approved_date: date
+payment_proof: varchar
+payment_date: date
+total_amount: decimal
+notes: text
+createQuotation()
+updateStatus()
+assignToSampling()
+recordPayment()
}
class RequestParameter {
+request_parameter_id: int
+request_id: int
+parameter_id: int
+quantity: int
+price_per_unit: decimal
+calculateCost()
}
class AnalysisParameter {
+parameter_id: int
+parameter_name: varchar
+unit: varchar
+method: varchar
+sample_type_id: int
+standard_value: varchar
+price: decimal
+checkCompliance()
}
class SampleType {
+sample_type_id: int
+type_name: varchar
+description: text
+standard_method: text
}
class SamplingPlan {
+plan_id: int
+request_id: int
+planned_date: date
+location: text
+coordinates: varchar
+sampling_method: text
+equipment_needed: text
+sampling_officer_id: int
+status: enum
+notes: text
+scheduleSampling()
+assignSamplingOfficer()
+listEquipment()
}
class Sample {
+sample_id: int
+request_id: int
+plan_id: int
+sample_code: varchar
+sample_type_id: int
+sampling_date: datetime
+sampling_location: text
+sampling_officer_id: int
+received_date: datetime
+received_by: int
+sample_condition: text
+preparation_notes: text
+preservation_method: text
+status: enum
+collectSample()
+receiveSample()
+prepareSample()
+trackStatus()
}
class AnalysisResult {
+result_id: int
+sample_id: int
+parameter_id: int
+analyst_id: int
+analysis_date: datetime
+result_value: varchar
+unit: varchar
+method_used: varchar
+is_within_standard: boolean
+notes: text
+status: enum
+verified_by: int
+verification_date: datetime
+recordResult()
+verifyResult()
+compareToStandard()
}
class Report {
+report_id: int
+request_id: int
+report_number: varchar
+report_date: date
+prepared_by: int
+verified_by: int
+approved_by: int
+status: enum
+file_path: varchar
+notes: text
+generateReport()
+approveReport()
+sendToCustomer()
}
class User {
+user_id: int
+username: varchar
+password: varchar
+full_name: varchar
+email: varchar
+role: enum
+department: varchar
+is_active: boolean
+last_login: datetime
+login()
+updateProfile()
+resetPassword()
+assignTasks()
}
class ActivityLog {
+log_id: int
+user_id: int
+action: varchar
+table_name: varchar
+record_id: int
+details: text
+ip_address: varchar
+created_at: timestamp
+recordActivity()
+viewAuditTrail()
}
Customer "1" --> "*" ServiceRequest : mengajukan
ServiceRequest "1" --> "*" RequestParameter : memiliki
ServiceRequest "1" --> "*" SamplingPlan : menyertakan
ServiceRequest "1" --> "*" Sample : menghasilkan
ServiceRequest "1" --> "*" Report : melaporkan
AnalysisParameter "1" --> "*" RequestParameter : diminta dalam
AnalysisParameter "1" --> "*" AnalysisResult : diuji dalam
SampleType "1" --> "*" AnalysisParameter : mendefinisikan
SampleType "1" --> "*" Sample : mengkategorikan
SamplingPlan "1" --> "*" Sample : menghasilkan
Sample "1" --> "*" AnalysisResult : dianalisis menjadi
User "1" --> "*" ActivityLog : merekam aktivitas
%% Tambahan relasi untuk memetakan peran user
User "1" --> "*" ServiceRequest : mengelola sebagai admin
User "1" --> "*" SamplingPlan : bertugas sebagai sampling officer
User "1" --> "*" Sample : bertugas sebagai sampling officer/penerima
User "1" --> "*" AnalysisResult : bertugas sebagai analis/verifikator
User "1" --> "*" Report : menyiapkan/memverifikasi/menyetujui
```
## Penjelasan Diagram Kelas
Diagram kelas di atas tidak hanya menampilkan struktur database, tetapi juga fungsionalitas utama dari setiap entitas dalam sistem aplikasi laboratorium lingkungan.
### Entitas Utama dan Fungsinya
1. **Customer**
- Mewakili pelanggan internal dan eksternal
- Fungsi: membuat permintaan, melihat status, mengunduh laporan
2. **ServiceRequest**
- Mewakili permintaan layanan dari pelanggan
- Fungsi: membuat quotation, memperbarui status, merekam pembayaran
3. **SamplingPlan**
- Mewakili rencana pengambilan sampel
- Fungsi: menjadwalkan sampling, menugaskan petugas, mencatat peralatan
4. **Sample**
- Mewakili sampel yang diambil/diterima
- Fungsi: mencatat pengambilan, penerimaan, preparasi sampel
5. **AnalysisResult**
- Mewakili hasil analisis laboratorium
- Fungsi: merekam hasil, memverifikasi, membandingkan dengan standar
6. **Report**
- Mewakili laporan hasil uji
- Fungsi: membuat laporan, menyetujui, mengirim ke pelanggan
7. **User**
- Mewakili pengguna sistem (admin, petugas sampling, analis, dll)
- Fungsi: login, mengelola profil, menugaskan aktivitas
8. **ActivityLog**
- Mewakili catatan aktivitas sistem
- Fungsi: merekam aktivitas, menampilkan audit trail
### Alur Proses dalam Sistem
Diagram kelas ini memvisualisasikan alur proses berikut:
1. **Permintaan Layanan**
- Customer mengajukan ServiceRequest
- ServiceRequest memiliki RequestParameter yang merinci parameter yang akan dianalisis
2. **Proses Sampling (jika diperlukan)**
- ServiceRequest memicu pembuatan SamplingPlan
- SamplingPlan ditugaskan kepada User (Sampling Officer)
- SamplingPlan menghasilkan Sample
3. **Penerimaan dan Preparasi Sampel**
- Sample diterima dan dipreparasi oleh User (Lab Staff)
- Sample dikategorikan menurut SampleType
4. **Analisis Laboratorium**
- Sample menghasilkan AnalysisResult
- AnalysisResult dikaitkan dengan AnalysisParameter
- AnalysisResult dicatat dan diverifikasi oleh User (Analyst, Verifier)
5. **Pelaporan Hasil**
- ServiceRequest menghasilkan Report
- Report disiapkan, diverifikasi, dan disetujui oleh User
- Report dikirimkan kepada Customer
6. **Audit dan Pelacakan**
- Semua aktivitas User direkam dalam ActivityLog
- ActivityLog menyediakan audit trail untuk akreditasi dan kepatuhan
## Cara Menggunakan Diagram
Diagram kelas Mermaid ini dapat membantu:
1. **Pengembang Sistem**: Untuk memahami struktur database dan hubungan antar entitas
2. **Analis Bisnis**: Untuk memahami alur proses laboratorium dan bagaimana data mengalir antar komponen
3. **Pengelola Laboratorium**: Untuk memvisualisasikan bagaimana peran staf terkait dengan proses bisnis
4. **Auditor**: Untuk memahami bagaimana sistem melacak aktivitas dan memastikan kepatuhan
Seperti diagram Mermaid lainnya, diagram ini dapat dilihat menggunakan Mermaid Live Editor atau di platform yang mendukung rendering Mermaid seperti GitHub.