first commit
This commit is contained in:
275
lab_env_db_class_diagram.md
Normal file
275
lab_env_db_class_diagram.md
Normal file
@@ -0,0 +1,275 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user