# Plotting Jadwal & Alat — UI Specification
**ERP-LIMS · Modul Operation**
> Versi: 1.0 · Status: Draft · Dibuat: Apr 2025

---

## 1. Gambaran Umum

Halaman Plotting adalah ruang kerja operasional untuk merencanakan **jadwal, petugas, dan alat sampling** sebelum tim turun ke lapangan. Plotting dilakukan dalam **satu sesi** yang bisa mencakup multi-SO sekaligus.

### Posisi dalam Flow

```
SO Confirmed → [Plotting Jadwal & Alat] → Trip Management → Penerimaan Sampel
```

Plotting dilakukan oleh tim **operasional lab**, bukan SC. Output plotting dikirim ke SC sebagai input pembuatan Trip.

---

## 2. Konsep Sesi Plotting

Satu **sesi plotting** adalah kumpulan SO yang diplot bersamaan, biasanya karena:
- Tanggal sampling berdekatan (misal: 28–29 Apr)
- Area geografis yang sama
- Tim yang sama

```
Sesi Plotting — 28-29 Apr
├── SO-2025-0089 (PT Maju Jaya · 3 titik)
├── SO-2025-0091 (CV Berkah Mandiri · 2 titik)
└── SO-2025-0093 (PT Sumber Alam · 1 titik)
```

---

## 3. Struktur Halaman

Layout **3 kolom**:

```
┌──────────────────────────┬─────────────┬────────────┐
│ MAIN                     │ KALENDER    │ SIDEBAR    │
│ Daftar SO + tabel titik  │ MINI        │ Analis     │
│ (accordion per SO)       │ + Selected  │ Inventori  │
│                          │   date      │ Subkon     │
│                          │   detail    │            │
├──────────────────────────┴─────────────┴────────────┤
│ ACTION BAR                                          │
└─────────────────────────────────────────────────────┘
```

---

## 4. Topbar Sesi

| Elemen | Konten |
|--------|--------|
| Judul | "Plotting Jadwal & Alat" |
| Pill sesi | Rentang tanggal sesi aktif |
| Pill SO | Jumlah SO dalam sesi |
| Pill konflik | Jumlah konflik yang belum di-resolve (merah) |

---

## 5. Area Utama — SO Accordion

### 5.1 SO Header

Setiap SO ditampilkan sebagai accordion row:

```
[▼] SO-2025-0089 · PT Maju Jaya Tbk · 3 titik    [Plotting 2/3] [⚠ 1 konflik]
[▶] SO-2025-0091 · CV Berkah Mandiri · 2 titik    [Plotting 0/2]
[▶] SO-2025-0093 · PT Sumber Alam · 1 titik       [Plotting 1/1] [Siap]
```

| Elemen | Deskripsi |
|--------|-----------|
| Chevron | Open/close accordion |
| Nomor SO | Link ke detail SO |
| Customer | Nama customer |
| Jumlah titik | Total titik dalam SO ini |
| Progress pill | `X/Y` titik sudah diplot |
| Konflik badge | Muncul jika ada konflik jadwal/alat |

### 5.2 Tabel Titik per SO

Setiap SO yang di-expand menampilkan tabel titik sampling:

| Kolom | Lebar | Keterangan |
|-------|-------|------------|
| Titik | 80px | Nama/nomor titik + nama lokasi (sub-text) |
| Tgl & Waktu | 110px | Tanggal + jam sampling |
| Petugas | 80px | Chip assign analis/petugas lapangan |
| Alat Sendiri | 110px | Multi-chip alat inventori lab |
| Alat Subkon/Sewa | 130px | Chip alat yang perlu dipesan |
| Status | 70px | Pill status plotting titik ini |

### 5.3 Status Titik

| Status | Pill | Kondisi |
|--------|------|---------|
| Siap | Hijau | Semua field sudah diisi, tidak ada konflik |
| Konflik | Merah | Ada jadwal/alat yang bentrok |
| Belum | Kuning | Belum ada plotting sama sekali |

### 5.4 Konflik Warning Inline

Jika ada konflik di titik tertentu, muncul **warning bar** di bawah tabel titik SO tersebut:

```
⚠ Konflik Titik 2: Agus R. sudah terjadwal di Titik 1 pada jam yang sama
  · Grab sampler sudah dipakai SO-2025-0088         [Resolve →]
```

Klik **Resolve** → drawer/modal untuk memilih alternatif petugas atau alat.

---

## 6. Kalender Mini

### 6.1 Fungsi

Kalender mini di kolom tengah memberikan **visual overview** jadwal semua titik dalam satu bulan. User bisa navigasi bulan dan klik tanggal untuk lihat detail.

### 6.2 Visual Marker per Tanggal

| Marker | Warna | Arti |
|--------|-------|------|
| Background biru | Biru (#185FA5) | Hari ini |
| Dot hijau | #1D9E75 | Ada SO/titik terjadwal |
| Dot merah | #C0392B | Ada konflik pada hari ini |

### 6.3 Selected Date Detail

Klik tanggal → muncul panel kecil di bawah kalender yang menampilkan daftar titik terjadwal pada hari tersebut:

```
28 Apr — 5 titik terjadwal
├── SO-0089 Titik 1  08.00  [Siap]
├── SO-0089 Titik 2  08.00  [⚠ Konflik]
├── SO-0088 Titik 1  10.00  [In progress]
└── +2 titik lainnya
```

### 6.4 Ringkasan Sesi

Di bawah selected date detail, tampil ringkasan sesi keseluruhan:
- Total SO dalam sesi
- Total titik
- Jumlah yang sudah diplot
- Jumlah konflik

---

## 7. Sidebar — Panel Ketersediaan & Inventori

### 7.1 Ketersediaan Analis

Daftar analis aktif beserta kapasitas beban kerja pada periode sesi:

| Elemen | Deskripsi |
|--------|-----------|
| Nama analis | Nama lengkap |
| Bar kapasitas | Visual bar warna: hijau (bebas) / kuning (sebagian) / merah (full) |
| Pill | Label teks: Bebas / XX% / Full |

> Analis dengan status **Full** masih bisa di-assign manual, tapi sistem akan munculkan warning konflik.

### 7.2 Inventori Alat Lab

Daftar alat lab dengan stok tersedia pada periode sesi:

| Kondisi | Warna | Keterangan |
|---------|-------|------------|
| Stok ≥ 2 | Hijau | Aman |
| Stok = 1 | Kuning ⚠ | Risiko bentrok |
| Stok = 0 | Merah | Tidak tersedia, perlu subkon/sewa |

> Jumlah stok sudah memperhitungkan alat yang sudah di-assign ke titik lain dalam sesi yang sama.

### 7.3 Permintaan Subkon/Sewa

Daftar alat yang perlu dipinjam/disewa karena stok habis:

| Elemen | Deskripsi |
|--------|-----------|
| Nama alat | Alat yang dibutuhkan |
| Tanggal | Kapan dibutuhkan |
| Vendor | Nama vendor subkon (jika sudah ditentukan) |
| Status | Terkonfirmasi / Butuh PO / Menunggu vendor |

Tombol **+ Buat permintaan subkon** → form request ke bagian pengadaan untuk generate PO subkon.

---

## 8. Resolve Konflik

Ketika ada konflik, user klik **Resolve** untuk membuka drawer dengan opsi:

### 8.1 Konflik Petugas

```
Masalah: Agus R. sudah assign di Titik 1 pada 28 Apr 08.00

Opsi resolve:
○ Ganti waktu Titik 2 → [pilih waktu]
○ Ganti petugas Titik 2 → [pilih analis lain]
○ Biarkan (override manual) → [tambah catatan alasan]
```

### 8.2 Konflik Alat

```
Masalah: Grab sampler (1 unit) sudah dipakai SO-0088

Opsi resolve:
○ Ganti waktu agar tidak overlap
○ Request sewa unit tambahan
○ Ganti dengan alat alternatif → [pilih alat]
```

---

## 9. Action Bar

| Tombol | Kondisi | Fungsi |
|--------|---------|--------|
| Kembali | Selalu | Kembali ke daftar sesi plotting |
| Simpan draft sesi | Selalu | Simpan progress tanpa finalisasi |
| Resolve konflik dulu | Ada konflik | Warning — tombol finalisasi disabled |
| Finalisasi & kirim ke SC | Semua konflik resolved + semua titik siap | Kirim data ke modul Trip Management |

> Tombol **Finalisasi** disabled (opacity 50%) jika masih ada konflik yang belum di-resolve atau ada titik dengan status Belum.

---

## 10. Business Rules

| Rule | Deskripsi |
|------|-----------|
| BR-01 | Plotting hanya bisa dilakukan setelah SO berstatus Confirmed |
| BR-02 | Satu sesi bisa mencakup multi-SO |
| BR-03 | Sistem otomatis deteksi konflik: petugas same time, alat stok habis |
| BR-04 | Konflik tidak blocking — bisa di-override dengan catatan alasan |
| BR-05 | Tombol Finalisasi disabled jika ada konflik unresolved |
| BR-06 | Setelah finalisasi, data plotting dikirim ke SC sebagai input Trip |
| BR-07 | Stok alat dihitung real-time memperhitungkan semua assign dalam sesi |
| BR-08 | Permintaan subkon/sewa generate draft PO pengadaan untuk disetujui |

---

## 11. Integrasi Modul

| Modul | Arah | Data |
|-------|------|------|
| SO (Sales) | ← Mengambil | Daftar SO confirmed beserta titik & parameter |
| Human Capital | ← Referensi | Daftar analis aktif & jadwal |
| Inventori/Warehouse | ← Referensi | Stok alat lab tersedia |
| Pengadaan | → Mengirim | Draft PO subkon/sewa alat |
| Trip Management (SC) | → Mengirim | Hasil plotting: jadwal, petugas, alat per titik |

---

## 12. Page Size Sesi

Halaman plotting **tidak menggunakan pagination** — semua SO dalam satu sesi ditampilkan sekaligus dalam accordion. Jumlah SO per sesi secara praktis terbatas (biasanya 3–10 SO per hari).

---

*Dokumen ini adalah spesifikasi UI/UX Plotting Jadwal & Alat — lihat dokumen terkait: `po-operational-ui-spec.md`, `po-operational-list-ui-spec.md`.*
