From 42d2712338612aa8659d6774ef9293a73364601e Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Mon, 5 May 2025 08:22:54 +0700 Subject: [PATCH] sdvsdv --- lab_env_case_study.md | 225 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) diff --git a/lab_env_case_study.md b/lab_env_case_study.md index 13ed854..232c82d 100644 --- a/lab_env_case_study.md +++ b/lab_env_case_study.md @@ -765,4 +765,229 @@ Sistem ini memungkinkan: 4. Pemantauan progress analisis secara real-time 5. Pelaporan yang komprehensif untuk pelanggan +### Manajemen Penjadwalan Sampling + +#### 1. Struktur Database untuk Penjadwalan + +```sql +-- Tabel untuk jadwal sampling +CREATE TABLE sampling_schedules ( + schedule_id SERIAL PRIMARY KEY, + date DATE, + time_slot VARCHAR(20), -- 'PAGI', 'SIANG', 'SORE' + status VARCHAR(50), -- 'AVAILABLE', 'BOOKED', 'COMPLETED' + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +-- Tabel untuk detail booking jadwal +CREATE TABLE sampling_bookings ( + booking_id SERIAL PRIMARY KEY, + schedule_id INT, + request_id INT, -- Link ke service_requests + customer_id INT, + project_name VARCHAR(200), + location TEXT, + sampling_type VARCHAR(50), + assigned_team_id INT, + status VARCHAR(50), -- 'SCHEDULED', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED' + notes TEXT, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +-- Tabel untuk tim sampling +CREATE TABLE sampling_teams ( + team_id SERIAL PRIMARY KEY, + team_name VARCHAR(100), + team_leader_id INT, + vehicle_id INT, + status VARCHAR(50) -- 'AVAILABLE', 'ASSIGNED', 'ON_DUTY' +); + +-- Tabel untuk anggota tim +CREATE TABLE team_members ( + team_id INT, + staff_id INT, + role VARCHAR(50), -- 'LEADER', 'SAMPLER', 'ASSISTANT' + PRIMARY KEY (team_id, staff_id) +); +``` + +#### 2. API Endpoint untuk Cek Ketersediaan Jadwal + +```php +// Endpoint: GET /api/sampling-schedules +public function getAvailableSchedules(Request $request) { + $startDate = $request->input('start_date', date('Y-m-d')); + $endDate = $request->input('end_date', date('Y-m-d', strtotime('+7 days'))); + + return DB::table('sampling_schedules') + ->whereBetween('date', [$startDate, $endDate]) + ->where('status', 'AVAILABLE') + ->orderBy('date', 'asc') + ->orderBy('time_slot', 'asc') + ->get(); +} + +// Endpoint: GET /api/sampling-schedules/{date} +public function getDayScheduleDetail($date) { + return DB::table('sampling_schedules as s') + ->leftJoin('sampling_bookings as b', 's.schedule_id', '=', 'b.schedule_id') + ->leftJoin('sampling_teams as t', 'b.assigned_team_id', '=', 't.team_id') + ->where('s.date', $date) + ->select([ + 's.*', + 'b.project_name', + 'b.location', + 'b.sampling_type', + 't.team_name', + DB::raw('(SELECT GROUP_CONCAT(CONCAT(staff.name, " (", tm.role, ")")) + FROM team_members tm + JOIN staff ON tm.staff_id = staff.id + WHERE tm.team_id = t.team_id) as team_members') + ]) + ->get(); +} +``` + +#### 3. Tampilan Kalender Jadwal Sampling + +```text +KALENDER JADWAL SAMPLING +Periode: Februari 2025 +===================================== + + SENIN SELASA RABU KAMIS JUMAT +Week 1 [PENUH] [KOSONG] [PENUH] [KOSONG] [PENUH] + 5 order ------- 3 order ------- 2 order +Week 2 [KOSONG] [PENUH] [PENUH] [PENUH] [KOSONG] + ------- 2 order 4 order 1 order ------- +[...] + +Keterangan Status: +🟢 KOSONG : Semua time slot tersedia +🟡 SEBAGIAN: Beberapa time slot terisi +🔴 PENUH : Semua time slot terisi +``` + +#### 4. Detail Jadwal Harian + +```text +DETAIL JADWAL SAMPLING +Tanggal: 20 Februari 2025 +===================================== + +TIME SLOT: PAGI (07:00 - 10:00) +Status : BOOKED +Project : Monitoring Kualitas Air Sungai Citarum +Customer : Dinas Lingkungan Hidup Kota +PIC Customer : Siti Aminah (08765432100) +Location : 5 titik sepanjang Sungai Citarum +Tim Bertugas : Team A +- Ahmad Ramadhan (Leader) +- Budi Santoso (Sampler) +- Citra Dewi (Assistant) +Kendaraan : B 1234 CD (Mobil Lab) +Notes : Sampling multi-titik, perlu cool box extra + +TIME SLOT: SIANG (11:00 - 14:00) +Status : BOOKED +Project : Pemantauan Limbah Industri +Customer : PT. Tekstil Nusantara +PIC Customer : Deni Wijaya (08567890123) +Location : Outlet IPAL +Tim Bertugas : Team B +- Eko Prasetyo (Leader) +- Fajar Nugroho (Sampler) +Notes : Sampling rutin triwulan + +TIME SLOT: SORE (15:00 - 17:00) +Status : AVAILABLE +Notes : Time slot masih tersedia +``` + +#### 5. Notifikasi Konflik Jadwal + +```text +⚠️ PERINGATAN KONFLIK JADWAL ⚠️ +Tanggal: 20 Februari 2025 +Time Slot: PAGI (07:00 - 10:00) + +Permintaan Baru: +- Customer: PT. Industri Kimia +- Lokasi: Kawasan Industri Pulogadung +- Jenis: Sampling Air Limbah +- Estimasi Durasi: 2 jam + +Jadwal Yang Sudah Ada: +- Project: Monitoring Kualitas Air Sungai Citarum +- Tim: Team A (Sudah di-assign) +- Durasi: 3 jam + +Rekomendasi: +1. Jadwalkan di time slot SORE (15:00 - 17:00) +2. Atau pilih tanggal alternatif: 21 atau 23 Februari 2025 +``` + +#### 6. Laporan Utilisasi Tim Sampling + +```text +LAPORAN UTILISASI TIM SAMPLING +Periode: Februari 2025 +===================================== + +TEAM A (Ahmad Ramadhan) +Total Assignment : 15 sampling +Completed : 12 sampling +Cancelled : 1 sampling +Pending : 2 sampling +Utilization Rate : 85% + +TEAM B (Eko Prasetyo) +Total Assignment : 12 sampling +Completed : 10 sampling +Cancelled : 0 sampling +Pending : 2 sampling +Utilization Rate : 80% + +[... other teams ...] + +RINGKASAN: +- Total Tim Available : 4 tim +- Average Utilization : 82% +- Peak Days : Senin & Rabu +- Quiet Days : Jumat +- Overtime Assignments : 2 kasus +``` + +#### 7. Alur Proses Penjadwalan + +```mermaid +sequenceDiagram + actor Admin as Admin Lab + participant Calendar as Kalender + participant Team as Tim Sampling + participant Customer as Pelanggan + + Admin->>Calendar: Cek slot tersedia + Calendar-->>Admin: Tampilkan available slots + Admin->>Team: Cek ketersediaan tim + Team-->>Admin: Konfirmasi tim available + Admin->>Customer: Usulkan jadwal + Customer->>Admin: Konfirmasi jadwal + Admin->>Calendar: Book slot + Admin->>Team: Assign tim + Calendar-->>Team: Kirim notifikasi assignment + Team-->>Customer: Konfirmasi final jadwal +``` + +Sistem penjadwalan ini memungkinkan: +1. Pengecekan ketersediaan slot waktu secara real-time +2. Manajemen tim sampling yang efisien +3. Pencegahan konflik jadwal +4. Tracking utilisasi tim +5. Pelaporan kinerja tim sampling +6. Notifikasi otomatis untuk semua pihak terkait + [... continue with existing content ...] \ No newline at end of file