# จัดการใบงาน ปฏิทิน PM และปริมาณงานช่าง (Admin Portal)

> **ฟีเจอร์นี้ทำอะไร** — สร้าง มอบหมาย ติดตาม รีวิว และปิดใบงานทุกประเภทตลอดวงจรชีวิตของงาน, วางแผนงานบำรุงรักษาเชิงป้องกัน (PM) บนปฏิทินรายเดือนพร้อมเลื่อนนัดด้วยการลากวาง และอนุมัติงาน PM แบบกลุ่ม, รวมถึงดูภาพรวมปริมาณงานของช่างทุกคนเพื่อปรับสมดุลภาระงาน
>
> **ใครใช้งาน** — ผู้ดูแลระบบ (Admin), ผู้จัดตารางงาน (Dispatcher), ผู้จัดการ (Manager — ดูและอนุมัติ), SuperAdmin
>
> **เข้าถึงได้ที่ไหน** — เมนูด้านซ้าย (sidebar) → **Jobs** → **Job Management** / **PM Calendar** / **Workload**
>
> **ข้อกำหนดที่เกี่ยวข้อง** — FR-008 (Admin Job Management), FR-009 (PM Calendar), FR-010 (Technician Workload Overview), UF-008, UF-009, UF-010
>
> **โมดูลในโค้ดเบส** — `job`, `JobTable`, `CardJobTable`, `JobPM`, `ModalEditReassignStatus`, `JobPlanning`, `CalendarJob`, `FilterCalendar`, `Workload`, `CalendarWorkload`, `TransferListWorkload`

---

## ก่อนเริ่มใช้งาน

ตรวจสอบให้แน่ใจว่า:

- [ ] คุณเข้าสู่ระบบ Admin Portal ด้วยบทบาท Admin หรือ Dispatcher แล้ว (ดูบท [00 — เริ่มต้นใช้งาน](00-getting-started.md))
- [ ] ข้อมูลบริษัทลูกค้าและสถานที่ใช้งานถูกตั้งค่าไว้แล้ว (เมนู **Customers**)
- [ ] บัญชีช่างถูกสร้างและมีสถานะ "ใช้งาน (Active)" แล้ว — งานมอบหมายให้ช่างที่ใช้งานอยู่เท่านั้น (เมนู **Technicians**)
- [ ] ข้อมูลสินทรัพย์/เครื่องจักรถูกบันทึกไว้แล้ว หากต้องสร้างงานที่ผูกกับเครื่องจักร (เมนู **Assets**)
- [ ] เทมเพลตใบตรวจเช็ก (Check Sheet) ของประเภทงานที่เกี่ยวข้องถูกตั้งค่าแล้ว (เมนู **Check Sheets**)
- [ ] สำหรับงาน PM: สัญญาลูกค้าที่มีตาราง PM ถูกสร้างไว้แล้ว — *การสร้างตาราง PM อัตโนมัติจากสัญญาดูในบท [07 — จัดการสัญญา](07-contract-management.md)*
- [ ] สำหรับปริมาณงานช่าง: ช่างแต่ละคนมีการกำหนดความจุงานต่อวัน (จำนวนงานต่อวัน) ในโปรไฟล์ช่างแล้ว

---

## ตารางอ้างอิงหลัก

### ประเภทใบงาน 6 ประเภท

| รหัส | ชื่อเต็ม | ป้ายภาษาไทย | ใช้เมื่อไหร่ |
|------|----------|-------------|-------------|
| **BM** | Break/Fix Maintenance | ซ่อมแซม | ซ่อมแซมเครื่องจักรที่เสียหรือทำงานผิดปกติ (งานแจ้งซ่อม) |
| **PM** | Preventive Maintenance | บำรุงรักษาเชิงป้องกัน | บำรุงรักษาตามรอบเพื่อป้องกันเครื่องเสีย (วางแผนล่วงหน้า ใช้ใบตรวจเช็กแยกจากประเภทอื่น) |
| **QC** | Quality Control | ตรวจสอบคุณภาพ | ตรวจสอบและยืนยันคุณภาพของงานที่ทำเสร็จ |
| **IN** | Installation | ติดตั้ง | ติดตั้งเครื่องจักรใหม่ที่สถานที่ลูกค้า |
| **UN** | Uninstallation | ถอดถอน | ถอดถอนเครื่องจักรออกจากสถานที่ลูกค้า (ใช้ฟอร์มร่วมกับ IN) |
| **IS** | Inspection | ตรวจสอบ | ตรวจสอบสภาพเครื่องจักรและความสอดคล้องตามรอบ |

> **หมายเหตุ:** งาน PM ใช้กลไกใบตรวจเช็ก/เช็กลิสต์แยกต่างหาก (ผูกกับรุ่นสินทรัพย์) ส่วน BM/IN/UN/IS/QC ใช้เทมเพลตใบตรวจเช็กมาตรฐาน

### วงจรสถานะของใบงาน (12 สถานะ)

| สถานะ | ป้ายภาษาไทย | ความหมาย | สี |
|-------|-------------|----------|-----|
| WAITING | รอรับงาน | สร้างใบงานแล้ว รอช่างกดรับงาน | ส้ม |
| WAITINGJOB | รอดำเนินการ | งานอยู่ในคิวรอดำเนินการ | เทา |
| ACCEPTED | รับงานแล้ว | ช่างกดรับงานแล้ว | ฟ้าอ่อน |
| ONTHEWAY | กำลังเดินทาง | ช่างกำลังเดินทางไปหน้างาน | ฟ้า |
| ARRIVING | ถึงหน้างาน | ช่างถึงสถานที่แล้ว | เขียวน้ำเงิน |
| WORKING | กำลังทำงาน | ช่างกำลังปฏิบัติงาน | คราม |
| RECHECK | ตรวจสอบซ้ำ | ต้องตรวจสอบงานซ้ำ | เหลืองอำพัน |
| REVIEW | รอรีวิว | ช่างส่งงานแล้ว รอแอดมินรีวิว | น้ำเงิน |
| DONE | เสร็จสิ้น | งานเสร็จและอนุมัติแล้ว | เขียว |
| PAUSE | หยุดชั่วคราว | งานถูกพักไว้ชั่วคราว (พร้อมเหตุผล) | เหลือง |
| CANCEL | ยกเลิก | งานถูกยกเลิก (พร้อมเหตุผล) | แดง |
| REASSIGNED | มอบหมายใหม่ | งานถูกมอบหมายให้ช่างคนใหม่ | ม่วง |

> **หมายเหตุ:** ลำดับปกติคือ รอรับงาน → รับงานแล้ว → กำลังเดินทาง → ถึงหน้างาน → กำลังทำงาน → ตรวจสอบซ้ำ → รอรีวิว → เสร็จสิ้น โดยมี หยุดชั่วคราว / ยกเลิก / มอบหมายใหม่ เป็นสถานะที่เกิดขึ้นได้ระหว่างทาง

### สถานะการวางแผน PM 4 สถานะ (ใช้บนปฏิทิน PM เท่านั้น)

| สถานะ | ป้ายภาษาไทย | สี | ความหมาย |
|-------|-------------|-----|----------|
| Select Technician | เลือกช่าง | เหลือง | มีแผน PM แล้ว แต่ยังไม่ได้มอบหมายช่าง |
| Pending Confirm | รอยืนยัน | ส้ม | มอบหมายช่างแล้ว รอแอดมินยืนยันและสร้างใบงานจริง |
| Job Created | ใบงาน | เขียว | สร้างใบงาน PM ในระบบจัดการใบงานแล้ว |
| Overdue | เลยแผน | แดง | เลยวันที่นัดแล้ว แต่ยังไม่ได้สร้างใบงาน |

> **หมายเหตุ:** สถานะการวางแผน PM แตกต่างจาก 12 สถานะใบงานข้างต้น เมื่อ PM ถึงสถานะ **ใบงาน** แล้ว มันจะกลายเป็นใบงานปกติในเมนู Job Management และเดินตามวงจร 12 สถานะของใบงาน

---

# กลุ่ม A — จัดการใบงาน (Job Management)

## สถานการณ์: ดูรายการใบงานทั้งหมด

### สิ่งที่คุณต้องการทำ

ดูใบงานทั้งหมดในระบบในรูปแบบการ์ด พร้อมข้อมูลสำคัญและตัวบ่งชี้สถานะ

### ขั้นตอน

1. คลิก **Jobs → Job Management** ในเมนูด้านซ้าย (sidebar)

   ![หน้ารายการใบงานแบบการ์ด](images/08-job-list-overview.png)

   <!-- 📸 NEED SCREENSHOT: หน้ารายการใบงานแสดงเลย์เอาต์การ์ดพร้อมการ์ดหลายใบและแท็บกรอง -->

2. สังเกตว่าแต่ละ **การ์ดใบงาน** แสดงข้อมูลต่อไปนี้:

   | องค์ประกอบ | คำอธิบาย | ตัวอย่าง |
   |-----------|----------|---------|
   | ป้ายประเภทใบงาน | ป้ายสีบอกประเภทงาน | PM (ม่วง), BM (เขียว) |
   | เลขที่ใบงาน | รหัสที่ระบบสร้างให้อัตโนมัติ | PM2026010700004 |
   | วันที่นัดหมาย | วันและเวลาที่นัดเข้าบริการ | 2026-01-15 09:00 |
   | วันที่สร้าง | วันที่สร้างใบงาน | 2026-01-07 14:30 |
   | สร้างโดย | แอดมินที่สร้างใบงาน พร้อมรูปโปรไฟล์ | Kan S. |
   | เครื่องจักร | หมายเลขซีเรียลและรุ่น | DB465075, Classic |
   | เลขที่สัญญา | สัญญาบริการที่เกี่ยวข้อง | CTR-2026-001 |
   | สถานที่ใช้งาน | ชื่อบริษัทลูกค้าและที่อยู่เต็ม | ABC Corp, 123 ถ.สุขุมวิท |
   | ช่าง | ชื่อช่างและบทบาท | สมชาย (หัวหน้าช่าง) |
   | ป้ายสถานะ | สถานะปัจจุบันแบบป้ายสี | รอรับงาน (ส้ม) |

3. ใช้ **แท็บกรอง 3 แท็บ** ด้านบนรายการเพื่อจำกัดมุมมอง:

   | แท็บ | แสดงอะไร |
   |------|----------|
   | งานทั้งหมด (All Jobs) | ใบงานทั้งหมดในระบบ พร้อมจำนวนรวม |
   | รออนุมัติ (Pending Approval) | ใบงานที่รอแอดมินอนุมัติ พร้อมจำนวน |
   | รอดำเนินการ (Pending Action) | ใบงานที่อยู่ในคิวรอดำเนินการ พร้อมจำนวน |

   > **เคล็ดลับ:** ตัวเลขบนแต่ละแท็บอัปเดตตามจริง เริ่มงานประจำวันจากแท็บ **รออนุมัติ (Pending Approval)** เพื่อรีบดูงานที่ต้องการความสนใจ

4. เลื่อนดูรายการ การควบคุมหน้า (pagination) อยู่มุมขวาล่าง

   | การควบคุม | ค่าเริ่มต้น | ตัวเลือก |
   |-----------|------------|----------|
   | แสดง (แถว) | 50 | ปรับได้ผ่านรายการเลือก |
   | นำทางหน้า | หน้าแรก | ปุ่มก่อนหน้า / ถัดไป |
   | ข้อมูลหน้า | แสดงช่วง | เช่น "1-50 ทั้งหมด 247" |

### ผลลัพธ์ที่จะเกิดขึ้น

รายการใบงานโหลดโดยแสดงงานล่าสุดก่อน คลิกการ์ดใบงานใดก็ได้เพื่อเปิดหน้ารายละเอียดสำหรับแก้ไขหรือดำเนินการต่อ

---

## สถานการณ์: ค้นหาและกรองใบงาน

### สิ่งที่คุณต้องการทำ

ค้นหาใบงานที่ต้องการด้วยช่องค้นหาด่วนและตัวกรองขั้นสูง

### ขั้นตอน

1. ใช้ **ช่องค้นหาด่วน (ค้นหาเลขใบงาน)** ด้านบนรายการเพื่อค้นหาด้วยเลขที่ใบงาน

   > **เคล็ดลับ:** พิมพ์เลขใบงานบางส่วน (เช่น "PM2026") ผลลัพธ์จะกรองแบบเรียลไทม์ ระบบจะยกเลิกคำขอเก่าอัตโนมัติเพื่อความรวดเร็ว

2. คลิกปุ่ม **ตัวกรอง (Filters)** เพื่อขยายแผงตัวกรองขั้นสูง

   ![แผงตัวกรองขั้นสูงแบบขยาย](images/08-job-filter-panel.png)

   <!-- 📸 NEED SCREENSHOT: แผงตัวกรองแบบขยายแสดงรายการเลือกกรองทั้งหมด -->

3. เลือกใช้ตัวกรองอย่างน้อยหนึ่งรายการ:

   | ตัวกรอง | ชนิด | คำอธิบาย |
   |---------|------|----------|
   | วันที่สร้าง (Date Range) | ตัวเลือกวันที่ | กรองตามช่วงวันที่สร้างใบงาน |
   | ประเภทใบงาน (Job Type) | รายการเลือก | BM / PM / QC / IN / UN / IS |
   | แอดมินผู้สร้าง (Admin Creator) | รายการค้นหา | กรองตามแอดมินที่สร้างใบงาน |
   | สถานที่ใช้งาน (Work Location) | รายการค้นหา | กรองตามสถานที่ให้บริการ |
   | ชื่อบริษัท (Company Name) | รายการค้นหา | กรองตามบริษัทลูกค้า |
   | ช่างและหัวหน้าช่าง (Technician) | รายการค้นหา | กรองตามช่างที่ถูกมอบหมาย |

4. คลิก **ค้นหา (Search)** เพื่อใช้ตัวกรอง

5. คลิก **รีเซ็ต (Reset)** เพื่อล้างตัวกรองทั้งหมด หรือคลิก **ยกเลิก (Cancel)** เพื่อปิดแผงโดยไม่ใช้ตัวกรอง

   > **หมายเหตุ:** ตัวกรองทำงานแบบ "และ" (AND) เช่น เลือกประเภท "PM" และช่างคนหนึ่ง จะแสดงเฉพาะงาน PM ของช่างคนนั้นเท่านั้น

### ผลลัพธ์ที่จะเกิดขึ้น

รายการใบงานอัปเดตให้แสดงเฉพาะงานที่ตรงเงื่อนไข ตัวเลขบนแท็บก็อัปเดตตามผลที่กรอง ตัวกรองจะคงอยู่จนกว่าคุณจะรีเซ็ตหรือออกจากหน้า

---

## สถานการณ์: สร้างใบงานใหม่

### สิ่งที่คุณต้องการทำ

สร้างใบงานใหม่ประเภทใดประเภทหนึ่งใน 6 ประเภท และมอบหมายให้ช่าง

### ขั้นตอน

1. ที่หน้า Job Management คลิกปุ่ม **+ สร้างใบงาน (Create Job)** มุมขวาบน

2. เลือก **ประเภทใบงาน** จากรายการที่แสดงขึ้นมา:

   | ตัวเลือก | สร้างงาน |
   |---------|----------|
   | ใบงาน BM | งานซ่อมแซม (Break/Fix) |
   | ใบงาน PM | งานบำรุงรักษาเชิงป้องกัน |
   | ใบงาน QC | งานตรวจสอบคุณภาพ |
   | ใบงาน IN | งานติดตั้ง |
   | ใบงาน IS | งานตรวจสอบ |
   | ใบงาน UN | งานถอดถอน |

   ![รายการเลือกประเภทใบงาน 6 ประเภท](images/08-job-create-dropdown.png)

   <!-- 📸 NEED SCREENSHOT: รายการเลือก "สร้างใบงาน" แสดงประเภทงานทั้ง 6 -->

3. กรอกฟอร์มสร้างใบงานตามแต่ละส่วน:

   **ส่วนที่ 1 — ข้อมูลทั่วไป**

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ประเภทใบงาน* | ประเภทที่เลือกไว้ | กำหนดจากขั้นตอนที่ 2 |
   | เลขที่สัญญา | สัญญาบริการที่เกี่ยวข้อง | ต้องเป็นสัญญาที่มีอยู่จริง |
   | วันที่นัดหมาย* | วันและเวลาที่นัดเข้าบริการ | ต้องเป็นวันเวลาที่ถูกต้อง |

   **ส่วนที่ 2 — ลูกค้าและสถานที่**

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ลูกค้า* | เลือกบริษัทลูกค้าจากรายการ | ต้องเป็นลูกค้าที่มีในระบบ |
   | สถานที่ใช้งาน* | เลือกสถานที่ให้บริการ | กรองตามลูกค้าที่เลือก |
   | ผู้ติดต่อ | ชื่อและเบอร์ผู้ติดต่อหน้างาน | — |

   **ส่วนที่ 3 — สินทรัพย์/เครื่องจักร**

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | เครื่องจักร | เลือกสินทรัพย์ที่สถานที่ (ซีเรียล + รุ่น) | ขึ้นกับประเภทงาน |
   | ปัญหาแจ้งซ่อม | รายละเอียดปัญหา | เฉพาะงาน BM |

   **ส่วนที่ 4 — มอบหมายช่าง**

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | หัวหน้าช่าง | เลือกช่างหลัก | เฉพาะช่างที่มีสถานะใช้งาน (Active) — มอบหมายภายหลังได้ |
   | ช่างสนับสนุน | เลือกช่างเพิ่ม (ถ้ามี) | เฉพาะช่างที่ใช้งานอยู่ |

   **ส่วนที่ 5 — เลือกใบตรวจเช็ก**

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ใบตรวจเช็ก (Check Sheet) | เลือกเทมเพลตของประเภทงานนี้ | BM/IN/UN/IS/QC ใช้เทมเพลตมาตรฐาน — PM ใช้เช็กลิสต์เฉพาะที่ผูกกับรุ่นสินทรัพย์ |

   ![ฟอร์มสร้างใบงาน (ตัวอย่างประเภท BM)](images/08-job-create-form.png)

   <!-- 📸 NEED SCREENSHOT: ฟอร์มสร้างใบงานแสดงทุกช่อง (ใช้ประเภท BM เป็นตัวอย่าง) -->

   > **หมายเหตุ:** ช่องที่มีเครื่องหมาย * เป็นช่องที่ต้องกรอก ใบงานแต่ละประเภทมีฟอร์มเฉพาะ ช่องอาจต่างกันเล็กน้อยตามประเภท

4. ตรวจทานข้อมูลทั้งหมด แล้วคลิก **สร้างใบงาน (Create Job)**

5. ระบบสร้าง **เลขที่ใบงาน** ให้อัตโนมัติตามรูปแบบ `{ประเภท}{YYYYMMDD}0000{N}`

   | ส่วน | ความหมาย | ตัวอย่าง |
   |------|----------|---------|
   | ประเภท | รหัสประเภทงาน | PM, BM, QC, IN, UN, IS |
   | YYYYMMDD | วันที่สร้าง | 20260107 |
   | 0000N | ลำดับของวันนั้น | 00001, 00002, ... |

   ตัวอย่าง: `PM2026010700004` = งาน PM ใบที่ 4 ที่สร้างวันที่ 7 ม.ค. 2026

### ผลลัพธ์ที่จะเกิดขึ้น

ใบงานถูกสร้างด้วยสถานะ **รอรับงาน (WAITING)** หากมอบหมายช่างไว้ ช่างจะได้รับการแจ้งเตือนบนแอปมือถือ ใบงานปรากฏในรายการทันที

> **คำเตือน:** ต้องกรอกช่องที่จำเป็นทั้งหมดก่อนสร้างใบงาน หากกรอกไม่ครบ ระบบจะแสดง error ที่ช่องที่ขาด ให้แก้ไขแล้วส่งใหม่

---

## สถานการณ์: มอบหมายหรือมอบหมายช่างใหม่

### สิ่งที่คุณต้องการทำ

มอบหมายช่างให้กับใบงานที่ยังไม่มีช่าง หรือเปลี่ยนช่างเป็นคนใหม่

### ขั้นตอน

1. เปิดใบงานโดยคลิกการ์ดในรายการ

2. คลิกปุ่ม **มอบหมาย (Assign)** สำหรับงานที่ยังไม่มีช่าง หรือปุ่ม **มอบหมายใหม่ (Reassign)** สำหรับงานที่มีช่างแล้ว

   ![ปุ่มมอบหมายช่างในหน้ารายละเอียดใบงาน](images/08-job-assign-technician.png)

   <!-- 📸 NEED SCREENSHOT: หน้ารายละเอียดใบงานแสดงปุ่มมอบหมาย/มอบหมายใหม่ -->

3. ในหน้าต่าง **มอบหมายช่างใหม่** ค้นหาช่างด้วยชื่อในช่องค้นหา

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ค้นหาช่าง* | พิมพ์ชื่อเพื่อกรองช่าง | แสดงเฉพาะช่างที่มีสถานะใช้งาน (Active) |
   | เหตุผลการมอบหมายใหม่ | เหตุผลในการเปลี่ยนช่าง | กรอกเมื่อเป็นการมอบหมายใหม่ |

   > **หมายเหตุ:** ช่องที่มีเครื่องหมาย * เป็นช่องที่ต้องกรอก

4. เลือกช่างเป้าหมายจากผลการค้นหา

5. คลิก **ยืนยัน (Confirm)** เพื่อมอบหมาย

### ผลลัพธ์ที่จะเกิดขึ้น

ใบงานถูกมอบหมายให้ช่างที่เลือก หากเป็นการมอบหมายใหม่ สถานะจะเปลี่ยนเป็น **มอบหมายใหม่ (REASSIGNED)** ชั่วคราวก่อนกลับสู่ลำดับงานปกติ ช่างเดิมและช่างใหม่จะได้รับการแจ้งเตือน และการเปลี่ยนแปลงถูกบันทึกในประวัติใบงาน

> **เคล็ดลับ:** ตรวจ **ภาพรวมปริมาณงานช่าง (Workload)** ก่อนมอบหมาย เพื่อไม่ให้ช่างมีงานเกินกำลัง

---

## สถานการณ์: แก้ไขรายละเอียดใบงาน

### สิ่งที่คุณต้องการทำ

แก้ไขรายละเอียดของใบงานที่ยังไม่เสร็จสิ้น

### ขั้นตอน

1. เปิดใบงานโดยคลิกการ์ดในรายการ

2. คลิกปุ่ม **แก้ไข (Edit)** หรือไอคอนแก้ไขบนส่วนที่ต้องการปรับ

   ![หน้ารายละเอียดใบงานในโหมดแก้ไข](images/08-job-edit.png)

   <!-- 📸 NEED SCREENSHOT: หน้ารายละเอียดใบงานในโหมดแก้ไขแสดงช่องที่แก้ไขได้ -->

3. แก้ไขช่องตามต้องการ — แต่ละส่วนมีหน้าต่างแก้ไขเฉพาะ:

   | ส่วนที่แก้ไขได้ | เงื่อนไข |
   |----------------|----------|
   | ข้อมูลทั่วไป (วันที่นัด/รายละเอียด) | แก้ไขได้จนกว่างานจะ DONE |
   | ข้อมูลช่าง | แก้ไขผ่านขั้นตอนมอบหมายใหม่ |
   | สถานที่ใช้งาน | แก้ไขได้จนกว่างานจะ DONE |
   | รายละเอียดสินทรัพย์ | แก้ไขได้จนกว่างานจะ DONE |
   | ผู้ติดต่อ | แก้ไขได้จนกว่างานจะ DONE |
   | ใบตรวจเช็ก | แก้ไขได้ก่อนช่างเริ่มงาน |

4. คลิก **บันทึก (Save)** เพื่อใช้การเปลี่ยนแปลง

### ผลลัพธ์ที่จะเกิดขึ้น

การเปลี่ยนแปลงถูกบันทึกทันทีและสะท้อนในการ์ดใบงาน ระบบแสดงข้อความแจ้งเตือนสำเร็จ และบันทึกการแก้ไขในประวัติพร้อมชื่อและเวลา

> **คำเตือน:** ใบงานที่เสร็จสิ้นแล้ว (สถานะ DONE) แก้ไขไม่ได้ เพิ่มได้เฉพาะหมายเหตุ เพื่อรักษาความถูกต้องของบันทึกงาน

### แก้ไขงานย่อย (Sub-Job)

ใบงานหนึ่งใบอาจมีงานย่อยหลายงาน (หนึ่งงานย่อยต่อหนึ่งสินทรัพย์) คลิกที่งานย่อยในหน้ารายละเอียดใบงานเพื่อเปิดหน้าแก้ไขงานย่อยเฉพาะตามประเภท (BM/PM/IN-UN/IS/QC) แก้ไขแล้วคลิก **บันทึก** งานย่อยแต่ละงานติดตามสถานะแยกกัน

---

## สถานการณ์: ยกเลิกหรือพักใบงาน

### สิ่งที่คุณต้องการทำ

ยกเลิกใบงานที่ไม่ต้องการแล้ว หรือพักงานไว้ชั่วคราว พร้อมระบุเหตุผล

### ขั้นตอน

**ยกเลิกใบงาน**

1. เปิดใบงาน แล้วคลิกปุ่ม **ยกเลิกใบงาน (Cancel)** หรือเลือกจากเมนูสามจุด (⋮) บนการ์ด

2. ในหน้าต่างยกเลิกใบงาน กรอกเหตุผล:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | เหตุผลการยกเลิก* | เหตุผลที่ยกเลิกใบงานนี้ | ต้องกรอก ห้ามเว้นว่าง |

   > **หมายเหตุ:** ช่องที่มีเครื่องหมาย * เป็นช่องที่ต้องกรอก

   ![หน้าต่างยกเลิกใบงานพร้อมช่องเหตุผล](images/08-job-cancel-modal.png)

   <!-- 📸 NEED SCREENSHOT: หน้าต่างยกเลิกใบงานพร้อมช่องกรอกเหตุผล -->
   <!-- ⛔ DEMO BUILD GAP (2026-05-18): งานสถานะ "รอรับงาน" ยกเลิกได้โดยไม่มี modal เหตุผลใน demo; ต้อง capture จากงานที่กำลังดำเนินการซึ่งบังคับกรอกเหตุผล ใน environment จริง -->

3. คลิก **ยืนยัน (Confirm)** เพื่อยกเลิก

**พักใบงาน**

4. เปิดใบงาน แล้วคลิกปุ่ม **พักงาน (Pause)** จากเมนูสามจุด (⋮)

5. กรอกเหตุผลการพักงานในช่องที่กำหนด แล้วคลิก **ยืนยัน (Confirm)**

6. เมื่อต้องการดำเนินการต่อ เปิดใบงานแล้วคลิก **ดำเนินการต่อ (Continue)** งานจะกลับสู่สถานะก่อนหน้า

### ผลลัพธ์ที่จะเกิดขึ้น

- **ยกเลิก:** สถานะเปลี่ยนเป็น **ยกเลิก (CANCEL)** ป้ายแดง เหตุผลถูกบันทึกในประวัติ ใบงานที่ยกเลิกยังคงเก็บไว้ในระบบเพื่อบันทึกประวัติ แต่ไม่นับในงานที่ยังทำงานอยู่
- **พัก:** สถานะเปลี่ยนเป็น **หยุดชั่วคราว (PAUSE)** จนกว่าจะกดดำเนินการต่อ

> **คำเตือน:** หากใบงานกำลังดำเนินการอยู่ (ช่างอยู่หน้างานหรือกำลังทำงาน) ช่างจะได้รับการแจ้งเตือนก่อนการยกเลิกมีผล ควรสื่อสารกับช่างก่อนยกเลิกงานที่กำลังทำอยู่

---

## สถานการณ์: รีวิวและปิดใบงาน

### สิ่งที่คุณต้องการทำ

ตรวจรีวิวงานที่ช่างส่งมา และอนุมัติเพื่อปิดใบงาน

### ขั้นตอน

1. ที่หน้า Job Management คลิกแท็บ **รออนุมัติ (Pending Approval)** หรือกรองตามสถานะ **รอรีวิว (REVIEW)**

2. เปิดใบงานที่มีสถานะ **รอรีวิว (REVIEW)** โดยคลิกการ์ด

3. ตรวจสอบรายละเอียดงานที่ช่างส่งมา:

   | สิ่งที่ต้องตรวจ | คำอธิบาย |
   |----------------|----------|
   | ใบตรวจเช็ก | รายการที่ช่างกรอกครบและถูกต้องหรือไม่ |
   | รูปภาพ/หลักฐานงาน | ภาพก่อน/หลังหรือหลักฐานตามที่กำหนด |
   | งานย่อยทุกรายการ | งานย่อยแต่ละสินทรัพย์เสร็จครบหรือไม่ |
   | ค่าบริการ/อะไหล่ | ค่าใช้จ่ายที่บันทึกถูกต้องหรือไม่ |

   <!-- 📸 NEED SCREENSHOT: หน้ารีวิวใบงานแสดงใบตรวจเช็ก รูปภาพ และปุ่มอนุมัติ -->

   ![หน้ารีวิวใบงาน](images/08-job-review.png)

4. หากงานถูกต้องครบถ้วน คลิก **อนุมัติ (Approve)** เพื่อปิดงาน

5. หากงานยังไม่ครบ ส่งกลับให้ช่างแก้ไข (สถานะกลับเป็น **ตรวจสอบซ้ำ / RECHECK**) พร้อมระบุสิ่งที่ต้องแก้

### ผลลัพธ์ที่จะเกิดขึ้น

เมื่ออนุมัติ สถานะเปลี่ยนเป็น **เสร็จสิ้น (DONE)** ป้ายเขียว ใบงานถูกปิดและไม่สามารถแก้ไขได้อีก (เพิ่มได้เฉพาะหมายเหตุ) งานหายจากแท็บ รออนุมัติ

> **เคล็ดลับ:** รีวิวงานที่ค้างในแท็บ รออนุมัติ ทุกวันเพื่อไม่ให้งานสะสม ช่างจะได้รับเครดิตงานเมื่อถูกอนุมัติเท่านั้น

---

## สถานการณ์: ดูประวัติใบงาน (Audit Trail)

### สิ่งที่คุณต้องการทำ

ดูประวัติการเปลี่ยนสถานะ การแก้ไข และการดำเนินการทั้งหมดของใบงานหนึ่งใบ

### ขั้นตอน

1. เปิดใบงานโดยคลิกการ์ดในรายการ

2. คลิกปุ่ม **ประวัติ (History)** เพื่อเปิดหน้าต่างประวัติใบงาน

   ![หน้าต่างประวัติใบงานแสดงไทม์ไลน์การเปลี่ยนสถานะ](images/08-job-history.png)

   <!-- 📸 NEED SCREENSHOT: หน้าต่างประวัติใบงานแสดงไทม์ไลน์การเปลี่ยนสถานะ -->

3. ประวัติแสดงเหตุการณ์เรียงตามเวลา:

   | คอลัมน์ | คำอธิบาย |
   |---------|----------|
   | เวลา | วันและเวลาของเหตุการณ์ |
   | การเปลี่ยนสถานะ | สถานะเดิม → สถานะใหม่ |
   | โดย | ชื่อผู้ที่ทำการเปลี่ยนแปลง |
   | เหตุผล/หมายเหตุ | เหตุผลที่ระบุ เช่น เหตุผลยกเลิก หรือเหตุผลมอบหมายใหม่ |

4. สำหรับใบงานที่มีงานย่อย ประวัติจะรวมการเปลี่ยนสถานะของงานย่อยแต่ละสินทรัพย์ด้วย

5. คลิก **ปิด (Close)** เพื่อปิดหน้าต่าง

### ผลลัพธ์ที่จะเกิดขึ้น

คุณเห็นวงจรชีวิตทั้งหมดของใบงานตั้งแต่สร้างจนถึงสถานะปัจจุบัน ประวัตินี้แก้ไขหรือลบไม่ได้ ใช้สำหรับตรวจสอบข้อพิพาท ประเมินผล และการตรวจสอบความสอดคล้อง

---

## สถานการณ์: ส่งออกข้อมูลใบงาน

### สิ่งที่คุณต้องการทำ

ดาวน์โหลดข้อมูลใบงานเป็นไฟล์เพื่อทำรายงาน วิเคราะห์ หรือเก็บบันทึก

### ขั้นตอน

1. ที่หน้า Job Management ใช้ตัวกรองที่ต้องการก่อน (ช่วงวันที่ ประเภทงาน ฯลฯ) การส่งออกจะยึดตามตัวกรองปัจจุบัน

2. คลิกปุ่ม **ดาวน์โหลด (Download)**

3. เลือกรูปแบบที่ต้องการ:

   | รูปแบบ | คำอธิบาย | เหมาะกับ |
   |--------|----------|----------|
   | **CSV** | ไฟล์ค่าคั่นด้วยจุลภาค | วิเคราะห์ข้อมูลใน Excel นำเข้าระบบอื่น |
   | **PDF ฉบับย่อ** | PDF สรุปแบบกระชับ | ดูภาพรวมเร็ว พิมพ์ |
   | **PDF ฉบับเต็ม** | PDF รายละเอียดครบทุกข้อมูลงาน | บันทึกทางการ จัดเก็บ รายงานลูกค้า |

   ![ปุ่มดาวน์โหลดพร้อมตัวเลือกรูปแบบ 3 แบบ](images/08-job-export-dropdown.png)

   <!-- 📸 NEED SCREENSHOT: ปุ่มดาวน์โหลดพร้อมรายการเลือกรูปแบบ 3 แบบ -->

4. ไฟล์จะดาวน์โหลดไปยังตำแหน่งดาวน์โหลดเริ่มต้นของเบราว์เซอร์

   > **หมายเหตุ:** สำหรับชุดข้อมูลขนาดใหญ่ ไฟล์ CSV จะถูกบีบเป็นไฟล์ ZIP เพื่อลดขนาด แตกไฟล์ ZIP เพื่อเข้าถึง CSV ข้างใน

### ผลลัพธ์ที่จะเกิดขึ้น

ไฟล์ที่ส่งออกมีใบงานทั้งหมดที่ตรงตัวกรองปัจจุบัน เปิด CSV ใน Excel/Google Sheets ได้ เปิด PDF ในโปรแกรมอ่าน PDF พิมพ์ หรือส่งอีเมลได้

> **เคล็ดลับ:** ใช้ตัวกรองช่วงวันที่ก่อนส่งออกเพื่อจำกัดข้อมูลตามรอบรายงาน การส่งออกประวัติทั้งหมดอาจได้ไฟล์ขนาดใหญ่มาก

---

## สถานการณ์: จัดการเทมเพลตใบตรวจเช็ก (Check Sheet)

### สิ่งที่คุณต้องการทำ

สร้างหรือแก้ไขเทมเพลตใบตรวจเช็กสำหรับงาน BM/IS/IN/UN

### ขั้นตอน

1. ไปที่หน้า **จัดการเทมเพลตใบตรวจเช็ก (Check Sheets)** จาก sidebar

2. คลิก **+ สร้างเทมเพลต** หรือคลิกเทมเพลตที่มีอยู่เพื่อแก้ไข

3. กรอกฟอร์มเทมเพลต:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ชื่อเทมเพลต* | ชื่อใบตรวจเช็ก | ห้ามเว้นว่าง |
   | ประเภทงาน* | BM / IS / IN / UN | PM ใช้ระบบเช็กลิสต์แยกต่างหาก |
   | รายการตรวจเช็ก* | คลิก **+ เพิ่มรายการ** เพื่อเพิ่มหัวข้อ | อย่างน้อย 1 รายการ |

   > **หมายเหตุ:** ช่องที่มีเครื่องหมาย * เป็นช่องที่ต้องกรอก งาน PM ผูกเช็กลิสต์กับรุ่นสินทรัพย์ ไม่ได้จัดการที่นี่

4. คลิก **บันทึก (Save)**

### ผลลัพธ์ที่จะเกิดขึ้น

เทมเพลตถูกบันทึกและพร้อมเลือกใช้ตอนสร้างใบงานประเภทที่กำหนด

---

# กลุ่ม B — ปฏิบัติงานปฏิทิน PM (PM Calendar)

> **หมายเหตุ:** ปฏิทิน PM ใช้สำหรับวางแผนและจัดการงาน PM ที่ถูกตั้งตารางไว้ — *การสร้างตาราง PM อัตโนมัติจากสัญญาดูในบท [07 — จัดการสัญญา](07-contract-management.md)* บทนี้ครอบคลุมเฉพาะการปฏิบัติงานประจำวันบนปฏิทิน

## สถานการณ์: ดูปฏิทิน PM รายเดือน

### สิ่งที่คุณต้องการทำ

ดูปฏิทินรายเดือนแสดงงานบำรุงรักษาเชิงป้องกันที่วางแผนไว้ทั้งหมด พร้อมตัวบ่งชี้สถานะ

### ขั้นตอน

1. คลิก **Jobs → PM Calendar** ในเมนูด้านซ้าย (sidebar)

   ![ปฏิทิน PM มุมมองรายเดือน](images/08-pm-calendar-overview.png)

   <!-- 📸 NEED SCREENSHOT: ปฏิทิน PM แบบกริดรายเดือนแสดงวันที่พร้อมตัวบ่งชี้สถานะสี -->

2. ปฏิทินแสดงเป็น **กริดรายเดือน** แต่ละช่องวันแสดง:

   | องค์ประกอบ | คำอธิบาย |
   |-----------|----------|
   | เลขวันที่ | วันที่ในปฏิทิน |
   | ตัวนับตามสถานะ | จำนวนรายการ PM แยกตามสถานะการวางแผน (เลือกช่าง, รอยืนยัน, ใบงาน, เลยแผน) แบบป้ายสี |

3. นำทางระหว่างเดือนด้วยปุ่มลูกศรด้านบนปฏิทิน:

   | การควบคุม | การทำงาน |
   |-----------|----------|
   | ลูกศรซ้าย (◀) | ไปเดือนก่อนหน้า |
   | ลูกศรขวา (▶) | ไปเดือนถัดไป |
   | แสดงเดือน/ปี | เดือนและปีที่ดูอยู่ |

   ปฏิทินตั้งต้นที่ **เดือนปัจจุบัน** เมื่อเปิดครั้งแรก

   > **เคล็ดลับ:** มองหาตัวบ่งชี้สีแดง (เลยแผน) ก่อน นี่คือ PM ที่ควรถูกตั้งตารางหรือทำเสร็จแล้วแต่พลาดไป

4. ปฏิทินแสดงเฉพาะงานประเภท **PM** เท่านั้น ประเภทอื่น (BM, QC, IN, UN, IS) ไม่แสดงที่นี่ — ใช้เมนู Job Management แทน

### ผลลัพธ์ที่จะเกิดขึ้น

คุณมีภาพรวมงาน PM ทั้งหมดของเดือนที่เลือก วันที่มีรายการกระจุกตัวมากอาจต้องปรับสมดุลภาระงาน คลิกช่องวันเพื่อดูรายละเอียด

---

## สถานการณ์: กรองและนำทางปฏิทิน

### สิ่งที่คุณต้องการทำ

จำกัดมุมมองปฏิทินให้แสดง PM เฉพาะจังหวัด สัญญา หรือช่างที่ต้องการ

### ขั้นตอน

1. ใช้ตัวควบคุมตัวกรองด้านบนหน้าปฏิทิน PM

   ![แถบตัวกรองปฏิทินแสดงรายการจังหวัด สัญญา และช่าง](images/08-pm-filters.png)

   <!-- 📸 NEED SCREENSHOT: แถบตัวกรองปฏิทินแสดงรายการเลือกจังหวัด สัญญา และช่าง -->

2. เลือกใช้ตัวกรองอย่างน้อยหนึ่งรายการ:

   | ตัวกรอง | คำอธิบาย |
   |---------|----------|
   | เดือน/ปี (Month/Year) | เลือกเดือนและปีที่ต้องการดู |
   | จังหวัด (Province) | กรองตามพื้นที่/จังหวัด |
   | สัญญา (Contract) | กรองตามสัญญาลูกค้าเฉพาะ |
   | ช่าง (Technician) | กรองตามช่างรายคน |

3. ปฏิทินอัปเดตทันทีให้แสดงเฉพาะรายการ PM ที่ตรงเงื่อนไข

   > **เคล็ดลับ:** ใช้ตัวกรอง **จังหวัด** สำหรับวางแผนเชิงพื้นที่ ใช้ตัวกรอง **ช่าง** เพื่อดูตาราง PM ของช่างรายคนทั้งเดือน

4. ล้างตัวกรองโดยล้างค่าที่เลือกในรายการ หรือคลิกตัวควบคุมรีเซ็ต

### ผลลัพธ์ที่จะเกิดขึ้น

ปฏิทินแสดงมุมมองที่กรองแล้ว ทุกการดำเนินการ (มอบหมาย เลื่อนนัด อนุมัติ) จะมีผลเฉพาะรายการที่แสดงอยู่ ตัวกรองทำงานแบบ "และ" (AND) และคงอยู่จนกว่าจะเปลี่ยนหรือล้าง

---

## สถานการณ์: ดูรายละเอียดงาน PM รายวันและมอบหมายช่าง

### สิ่งที่คุณต้องการทำ

ดูรายการ PM ที่วางแผนในวันหนึ่ง และมอบหมายช่างให้รายการที่ยังไม่มีช่าง (สถานะ "เลือกช่าง")

### ขั้นตอน

1. คลิกที่ **ช่องวัน** ในกริดปฏิทิน

   ![แผงรายละเอียด PM รายวัน](images/08-pm-daily-detail.png)

   <!-- 📸 NEED SCREENSHOT: แผงรายละเอียดรายวันแสดงรายการ PM พร้อมช่าง ลูกค้า สถานที่ และสถานะ -->
   <!-- ⛔ DEMO BUILD GAP (2026-05-18): คลิกวันบนปฏิทิน PM ใน demo ไม่เปิดแผงรายละเอียดรายวัน — ต้อง capture จาก environment ที่ฟีเจอร์ปฏิทิน PM ทำงานครบ -->

2. แผงรายละเอียดเปิดขึ้นแสดงงานของวันนั้น แต่ละรายการแสดง:

   | คอลัมน์ | คำอธิบาย |
   |---------|----------|
   | เลขที่สัญญา | สัญญาลูกค้าที่อ้างอิง |
   | ชื่อบริษัท | บริษัทลูกค้า |
   | สถานที่ใช้งาน | ที่อยู่หน้างาน |
   | สินทรัพย์ | เครื่องจักรที่ต้องเข้าบริการ |
   | ช่าง | ช่างที่มอบหมาย (หรือ "เลือกช่าง" หากยังไม่มี) |
   | สถานะการวางแผน | ตัวบ่งชี้สถานะ |

3. หารายการที่มีสถานะ **เลือกช่าง (Select Technician)** แล้วคลิกปุ่ม **มอบหมายช่าง (Assign Technician)** ข้างรายการนั้น

   ![มอบหมายช่างให้รายการ PM](images/08-pm-assign-technician.png)

   <!-- 📸 NEED SCREENSHOT: รายการ PM พร้อมรายการเลือกช่างที่เปิดอยู่ -->
   <!-- ⛔ DEMO BUILD GAP (2026-05-18): การมอบหมายช่างจากปฏิทิน PM ไม่ surface UI ผ่านการคลิกใน demo — ต้อง capture จาก environment จริง -->

4. ค้นหาและเลือกช่างจากรายการ:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ค้นหาช่าง* | พิมพ์ชื่อเพื่อกรองช่าง | แสดงช่างจากจังหวัด/พื้นที่ที่เกี่ยวข้อง |

5. คลิก **ยืนยัน (Confirm)** เพื่อมอบหมาย

### ผลลัพธ์ที่จะเกิดขึ้น

สถานะรายการ PM เปลี่ยนจาก **เลือกช่าง** เป็น **รอยืนยัน (Pending Confirm)** ช่องปฏิทินอัปเดต ช่างถูกผูกกับ PM นี้แล้วแต่ใบงานจริงยังไม่ถูกสร้าง — ต้องสร้างใบงานหรืออนุมัติแบบกลุ่ม (สถานการณ์ถัดไป)

> **หมายเหตุ:** ตรวจ ภาพรวมปริมาณงานช่าง ก่อนมอบหมายเพื่อให้ช่างมีกำลังในวันนั้น

---

## สถานการณ์: เลื่อนนัด PM ด้วยการลากวาง

### สิ่งที่คุณต้องการทำ

ย้ายงาน PM จากวันหนึ่งไปอีกวันด้วยการลากบนปฏิทิน

### ขั้นตอน

1. หารายการ PM ที่ต้องการเลื่อนนัดบนกริดปฏิทิน

2. คลิกค้างที่รายการ PM แล้ว **ลาก** ไปยังช่องวันเป้าหมาย

   ![ลากวางรายการ PM ไปยังวันใหม่](images/08-pm-drag-drop.png)

   <!-- 📸 NEED SCREENSHOT: รายการ PM ที่กำลังถูกลากจากวันหนึ่งไปอีกวัน -->
   <!-- ⛔ DEMO BUILD GAP (2026-05-18): การลากวางรายการ PM ข้ามวันไม่ทำงานผ่าน automation ใน demo build — ต้อง capture แบบ manual จาก environment จริง -->

   > **เคล็ดลับ:** หรือคลิกปุ่ม **เปลี่ยนวัน (Reschedule)** บนรายการแล้วเลือกวันใหม่จากปฏิทินแทนการลากก็ได้

3. หน้าต่างยืนยันปรากฏขึ้น เลือกขอบเขตการเลื่อน:

   | ตัวเลือก | ความหมาย |
   |---------|----------|
   | เฉพาะครั้งนี้ (This occurrence only) | เลื่อนเฉพาะรายการนี้ครั้งเดียว |
   | ครั้งนี้และครั้งต่อ ๆ ไป (Recurring) | เลื่อนรายการนี้และรอบในอนาคตทั้งหมด |

4. ตรวจรายละเอียดการเลื่อน (วันเดิม วันใหม่ สัญญาที่เกี่ยวข้อง) แล้วคลิก **ยืนยันเปลี่ยนวัน? (Confirm)**

### ผลลัพธ์ที่จะเกิดขึ้น

รายการ PM ย้ายไปวันใหม่บนปฏิทิน หากมีช่างมอบหมายไว้ การมอบหมายจะคงอยู่ การเปลี่ยนแปลงถูกบันทึก

> **คำเตือน:** หากการเลื่อนนัดทำให้ช่างคนเดียวกันมีงานทับซ้อน (PM สองงานเวลาเดียวกัน) ระบบจะแสดงคำเตือนความขัดแย้ง ตรวจตารางช่างก่อนยืนยัน

> **เคล็ดลับ:** สำหรับการเลื่อนจำนวนมาก (เช่น ย้ายงานทั้งวันหยุด) ควรแก้ตาราง PM ที่สัญญาโดยตรงในเมนู Customers → Contracts แทนการลากทีละรายการ

---

## สถานการณ์: สร้างใบงาน PM จากแผน

### สิ่งที่คุณต้องการทำ

แปลงรายการ PM ที่มีช่างมอบหมายแล้วให้เป็นใบงานจริงในระบบ ทีละรายการ

### ขั้นตอน

1. คลิกช่องวันที่มีรายการ PM แล้วเปิดแผงรายละเอียดรายวัน

2. หารายการที่มีสถานะ **รอยืนยัน (Pending Confirm)** — ต้องมีช่างมอบหมายแล้ว

   > **หมายเหตุ:** หากรายการยังเป็น **เลือกช่าง** ต้องมอบหมายช่างก่อน (ดูสถานการณ์ก่อนหน้า)

3. ตรวจรายละเอียดใบงาน PM (ข้อมูลสัญญา สินทรัพย์ ช่าง เทมเพลตใบตรวจเช็ก)

4. คลิก **สร้างใบงาน (Create Job)** บนรายการนั้น

### ผลลัพธ์ที่จะเกิดขึ้น

ระบบสร้างใบงาน PM สถานะการวางแผนเปลี่ยนจาก **รอยืนยัน** เป็น **ใบงาน (Job Created)** ป้ายเขียว ใบงานปรากฏในเมนู Job Management พร้อมเลขที่ใบงานอัตโนมัติ (เช่น PM2026010700001) ช่างที่มอบหมายได้รับการแจ้งเตือน

---

## สถานการณ์: อนุมัติงาน PM แบบกลุ่ม

### สิ่งที่คุณต้องการทำ

สร้างใบงานจริงพร้อมกันสำหรับรายการ PM ทั้งหมดที่มีช่างมอบหมายแล้วในรอบที่เลือก

### ขั้นตอน

1. ตรวจให้แน่ใจว่ารายการ PM เป้าหมายมีช่างมอบหมายแล้ว (สถานะ **รอยืนยัน / Pending Confirm**)

   > **หมายเหตุ:** เฉพาะรายการที่สถานะ **รอยืนยัน** เท่านั้นที่จะถูกรวมในการอนุมัติแบบกลุ่ม รายการที่ยังเป็น **เลือกช่าง** จะถูกข้าม

2. คลิกปุ่ม **อนุมัติทั้งหมด (Approve All)** ด้านบนปฏิทิน

   ![ปุ่มอนุมัติทั้งหมดและหน้าต่างยืนยัน](images/08-pm-approve-all.png)

   <!-- 📸 NEED SCREENSHOT: ปุ่มอนุมัติทั้งหมดและหน้าต่างยืนยันแสดงจำนวนใบงานที่จะสร้าง -->

3. เลือกขอบเขต (รายการทั้งหมดในมุมมองปัจจุบัน หรือเฉพาะรายการที่กรองไว้) หน้าต่างยืนยันแสดง:

   | รายละเอียด | คำอธิบาย |
   |-----------|----------|
   | จำนวนรายการ PM | จำนวนใบงานที่จะถูกสร้าง |
   | รอบ/ช่วงวันที่ | ช่วงวันที่ครอบคลุม |

4. คลิก **ยืนยันสร้างใบงานทั้งหมด? (Confirm)** เพื่อดำเนินการ

### ผลลัพธ์ที่จะเกิดขึ้น

รายการ PM ที่อนุมัติทั้งหมดถูกแปลงเป็นใบงานจริงในระบบ สถานะการวางแผนเปลี่ยนเป็น **ใบงาน (Job Created)** ป้ายเขียว แต่ละใบงานได้รับเลขที่อัตโนมัติ ช่างที่มอบหมายได้รับการแจ้งเตือน ระบบแสดงข้อความ "สร้าง X ใบงานสำเร็จ" หากบางรายการล้มเหลว ระบบจะแสดงรายการที่ไม่สำเร็จ

> **เคล็ดลับ:** ตรวจปฏิทินครั้งสุดท้ายก่อนคลิกอนุมัติทั้งหมด เมื่อสร้างใบงานแล้ว ต้องแก้ไขทีละใบผ่าน Job Management

---

## สถานการณ์: โอนช่างของรายการ PM

### สิ่งที่คุณต้องการทำ

เปลี่ยนช่างที่มอบหมายให้รายการ PM (ก่อนสร้างใบงานจริง)

### ขั้นตอน

1. คลิกช่องวันแล้วเลือกรายการ PM ที่ต้องการโอนช่าง

2. คลิกปุ่ม **โอนช่าง (Transfer Technician)**

3. ระบบแสดงช่างปัจจุบัน ค้นหาและเลือกช่างใหม่จากรายการ:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ช่างปัจจุบัน | (แสดงอัตโนมัติ) | ช่างที่มอบหมายอยู่ |
   | ค้นหาช่างใหม่* | พิมพ์ชื่อช่างเป้าหมาย | เฉพาะช่างที่ใช้งานอยู่ |

4. คลิก **ยืนยัน (Confirm)**

### ผลลัพธ์ที่จะเกิดขึ้น

ช่างถูกโอนไปยังช่างคนใหม่ ปฏิทินอัปเดต รายการ PM ยังคงสถานะการวางแผนเดิม

---

# กลุ่ม C — ปริมาณงานช่าง (Technician Workload)

## สถานการณ์: ดูตารางภาพรวมปริมาณงานช่าง

### สิ่งที่คุณต้องการทำ

ดูการกระจายปริมาณงานรายเดือนของช่างทุกคน พร้อมตัวบ่งชี้ความจุแบบสี

### ขั้นตอน

1. คลิก **Jobs → Workload** (ภาพรวมปริมาณงานช่าง) ในเมนูด้านซ้าย (sidebar)

   ![ตารางปริมาณงานช่างแบบกริดรายเดือน](images/08-workload-grid-overview.png)

   <!-- 📸 NEED SCREENSHOT: ตารางปริมาณงานเต็มแสดงแถวช่าง คอลัมน์รายวัน และตัวบ่งชี้วงกลมพร้อมสี -->

2. ตารางปริมาณงานแสดงเป็น **กริดปฏิทินรายเดือน**:

   | แกน | เนื้อหา |
   |-----|---------|
   | แถว | หนึ่งแถวต่อช่างหนึ่งคน (ชื่อช่างอยู่ซ้าย) |
   | คอลัมน์ | หนึ่งคอลัมน์ต่อหนึ่งวันของเดือน (1–28/29/30/31) |
   | ช่อง | ตัวบ่งชี้วงกลมแสดงเปอร์เซ็นต์ปริมาณงาน |

3. ทำความเข้าใจสีในแต่ละช่อง:

   | สี | เกณฑ์ | ความหมาย | ควรทำอะไร |
   |:---:|-------|----------|-----------|
   | **แดง** | > 100% | งานเกินกำลัง — ช่างมีงานมากกว่าความจุต่อวัน | โอนงานบางส่วนให้ช่างคนอื่น |
   | **เหลือง** | 80%–100% | ใกล้เต็มกำลัง — ช่างเกือบเต็มแล้ว | เลี่ยงเพิ่มงาน ติดตามใกล้ชิด |
   | **ปกติ** (ขาว/เทา) | < 80% | ว่าง — ช่างยังมีกำลังเหลือ | มอบหมายงานเพิ่มได้ |

   สูตรคำนวณ: `เปอร์เซ็นต์ปริมาณงาน = (จำนวนงานในวันนั้น ÷ ความจุงานต่อวันของช่าง) × 100`

4. นำทางระหว่างเดือนด้วยปุ่มลูกศรด้านบน (◀ เดือนก่อนหน้า / ▶ เดือนถัดไป)

5. สำหรับองค์กรที่มีช่างจำนวนมาก เลื่อนลงหรือใช้ pagination เพื่อโหลดแถวเพิ่ม

   > **เคล็ดลับ:** เริ่มจากการสแกนหาช่องสีแดง ซึ่งหมายถึงวันที่ช่างมีงานเกินกำลังและควรกระจายงานใหม่

### ผลลัพธ์ที่จะเกิดขึ้น

คุณเห็นภาพรวมความจุงานของทีมทั้งเดือน ใช้มุมมองนี้สำหรับวางแผนรายวัน หาคอขวด และกระจายงานให้เป็นธรรม

> **หมายเหตุ:** ข้อมูลถูกแคชไว้ราว 5 นาที หากเพิ่งโอนงาน อาจต้องรอสักครู่หรือรีเฟรชหน้าเพื่อเห็นค่าที่อัปเดต

---

## สถานการณ์: ดูรายละเอียดงานรายวันของช่าง

### สิ่งที่คุณต้องการทำ

ดูจำนวนงานของช่างคนหนึ่งในวันหนึ่งโดยละเอียด รวมถึงงานที่จบ กำลังทำ และทั้งหมด

### ขั้นตอน

1. คลิกที่ **ช่อง** (จุดตัดของแถวช่างกับคอลัมน์วัน) ในตารางปริมาณงาน

   ![หน้าต่างรายละเอียดงานรายวันของช่าง](images/08-workload-daily-breakdown.png)

   <!-- 📸 NEED SCREENSHOT: หน้าต่างรายละเอียดช่องแสดงสรุปรายวัน (จบงาน กำลังทำ ทั้งหมด) -->

2. แผงรายละเอียดเปิดขึ้นแสดงสรุปรายวัน:

   | ตัวชี้วัด | ป้ายภาษาไทย | คำอธิบาย |
   |----------|-------------|----------|
   | งานที่จบ | จบงาน | จำนวนงานที่ทำเสร็จในวันนั้น |
   | กำลังดำเนินการ | ดำเนินการ | จำนวนงานที่กำลังทำอยู่ |
   | งานทั้งหมด | ใบงาน | จำนวนงานที่มอบหมายทั้งหมดของวันนั้น |

   อัตราการทำงานสำเร็จ คำนวณอัตโนมัติ: `อัตราสำเร็จ = (จบงาน ÷ ใบงาน) × 100%`

3. ในแผงเดียวกันยังแสดง **รายการงานแต่ละใบ** ที่มอบหมายให้ช่างในวันนั้น (เลขที่ใบงาน ประเภท ลูกค้า สถานะ)

4. คลิกที่แถวงานเพื่อเปิดหน้ารายละเอียดใบงานนั้น (ตามสถานการณ์ในกลุ่ม A)

### ผลลัพธ์ที่จะเกิดขึ้น

คุณเข้าใจไม่เพียงจำนวนงานที่มอบหมาย แต่รวมถึงจำนวนที่ทำเสร็จด้วย ช่างที่มี 5 งานแต่ยังไม่จบสักงานเมื่อสิ้นวันอาจต้องการความช่วยเหลือหรือติดตาม

> **เคล็ดลับ:** เปรียบเทียบรายละเอียดรายวันหลายวันเพื่อหารูปแบบ ช่างที่มีอัตราสำเร็จต่ำต่อเนื่องอาจต้องฝึกอบรมหรือลดภาระงาน

---

## สถานการณ์: หาช่างที่งานเกินกำลังและโอนงาน

### สิ่งที่คุณต้องการทำ

หาช่างที่มีงานเกินกำลังในวันใดวันหนึ่ง แล้วโอนงานบางส่วนไปให้ช่างที่ยังมีกำลังเหลือ

### ขั้นตอน

1. เปิดหน้าภาพรวมปริมาณงานช่าง แล้วสแกนหา **ช่องสีแดง** (ปริมาณงาน > 100%)

   ![ตารางปริมาณงานเน้นช่องสีแดงของช่างที่งานเกินกำลัง](images/08-workload-overloaded.png)

   <!-- 📸 NEED SCREENSHOT: ตารางปริมาณงานเน้นช่องสีแดงหลายช่องแสดงช่างที่งานเกินกำลัง -->
   <!-- ⛔ DEMO BUILD GAP (2026-05-18): ข้อมูล demo ไม่มีช่างที่งานเกินกำลัง (ไม่มีช่องสีแดง) — ต้อง capture จาก environment ที่มีข้อมูลภาระงานเกินจริง -->

2. ทำความเข้าใจระดับความรุนแรง:

   | ตัวบ่งชี้ | ความหมาย |
   |-----------|----------|
   | ช่องแดง 120% | งานเกินกำลัง 20% เช่น 6 งานทั้งที่ความจุ 5 |
   | ช่องแดง 150% | เกินกำลังรุนแรง ต้องกระจายงานทันที |
   | ช่องแดงติดกันหลายวัน | เกินกำลังต่อเนื่อง เสี่ยงล่าช้าและคุณภาพตก |

3. คลิกที่ **ช่องสีแดง** ของช่างและวันที่ต้องการปรับสมดุล แผงรายละเอียดเปิดขึ้นแสดงรายการงานของช่างวันนั้น

   ![รายการงานพร้อมปุ่มโอนงาน](images/08-workload-transfer-list.png)

   <!-- 📸 NEED SCREENSHOT: รายการงานในแผงรายละเอียดพร้อมปุ่มโอนงานบนแต่ละงาน -->

4. คลิก **โอนงาน (Transfer)** ข้างงานที่ต้องการย้าย

5. ในแผงโอนงาน ค้นหาและเลือกช่างเป้าหมาย:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | จากช่าง (From) | (แสดงอัตโนมัติ) | ช่างต้นทางที่งานเกินกำลัง |
   | ไปยังช่าง (To)* | ค้นหาชื่อช่างเป้าหมาย | แสดงปริมาณงานของช่างวันนั้นด้วย เลือกคนที่ยังมีกำลังเหลือ |
   | รายการใบงานที่เลือก | (แสดงอัตโนมัติ) | งานที่จะถูกโอน |

   ![แผงโอนงานแสดงช่างต้นทาง รายละเอียดงาน และช่องค้นหาช่างปลายทาง](images/08-workload-transfer-panel.png)

   <!-- 📸 NEED SCREENSHOT: แผงโอนงานแสดงช่างต้นทาง รายละเอียดงาน และการค้นหาช่างปลายทาง -->

6. ตรวจปริมาณงานของช่างเป้าหมายเพื่อไม่ให้โอนแล้วเกินกำลัง แล้วคลิก **ยืนยัน (Confirm)**

### ผลลัพธ์ที่จะเกิดขึ้น

งานถูกย้ายจากช่างต้นทางไปยังช่างปลายทาง ระบบแสดงข้อความ "โอนงานสำเร็จ" ช่างทั้งสองได้รับการแจ้งเตือน (ช่างต้นทาง: งานถูกถอด / ช่างปลายทาง: ได้รับงานใหม่) ตารางอัปเดตอัตโนมัติ — ช่องช่างต้นทางเปอร์เซ็นต์ลดลง ช่องช่างปลายทางเพิ่มขึ้น

> **เคล็ดลับ:** เลือกโอนงานที่ยังไม่เริ่ม (สถานะ รอรับงาน) มากกว่างานที่กำลังดำเนินการ การโอนงานที่กำลังทำอยู่อาจสร้างความสับสนกับช่างที่หน้างาน

---

## สถานการณ์: กรองปริมาณงานตามจังหวัด

### สิ่งที่คุณต้องการทำ

จำกัดตารางปริมาณงานให้แสดงเฉพาะช่างที่ทำงานในพื้นที่ที่ต้องการ

### ขั้นตอน

1. หา **รายการเลือกจังหวัด (Province)** ด้านบนหน้าภาพรวมปริมาณงานช่าง

   ![รายการเลือกจังหวัดด้านบนหน้าปริมาณงาน](images/08-workload-province-filter.png)

   <!-- 📸 NEED SCREENSHOT: รายการเลือกจังหวัดด้านบนหน้าปริมาณงานช่าง -->

2. เลือกจังหวัดอย่างน้อยหนึ่งจังหวัด (เลือกได้หลายจังหวัด)

3. ตารางอัปเดตให้แสดงเฉพาะช่างที่ตรงจังหวัดที่เลือก

4. ล้างตัวกรองโดยยกเลิกการเลือกจังหวัด หรือคลิกตัวควบคุมล้าง/รีเซ็ต

### ผลลัพธ์ที่จะเกิดขึ้น

คุณเห็นมุมมองปริมาณงานช่างเฉพาะภูมิภาค เหมาะกับการวางแผนจัดงานเชิงพื้นที่ หาพื้นที่ที่ช่างไม่พอ และปรับสมดุลข้ามภูมิภาค

> **เคล็ดลับ:** หากจังหวัดหนึ่งมีช่างเกินกำลังตลอด ขณะที่จังหวัดข้างเคียงยังว่าง ควรพิจารณาปรับการแบ่งพื้นที่หรือเพิ่มช่างในพื้นที่นั้น

---

## เมื่อเกิดปัญหา

| สิ่งที่คุณเห็น | ทำอย่างไร |
|---------------|-----------|
| ฟอร์มสร้างใบงานขึ้น error การตรวจสอบ | 1. กรอกช่องที่จำเป็น (มี *) ให้ครบ 2. ตรวจวันที่นัดให้เป็นอนาคต 3. ตรวจว่าลูกค้า/สถานที่/สินทรัพย์ที่เลือกถูกต้อง |
| "ไม่พบใบงาน" เมื่อเปิดงาน | งานอาจถูกลบ หรือคุณไม่มีสิทธิ์ดู ตรวจเลขที่ใบงานและลองค้นหา ติดต่อผู้ดูแลระบบหากยังไม่ได้ |
| แก้ไขใบงานไม่ได้ | สถานะเป็น DONE หรือ CANCEL ใบงานที่เสร็จ/ยกเลิกแก้ไขไม่ได้ หากต้องเปลี่ยนให้สร้างใบงานใหม่ |
| ปุ่มส่งออกไม่ทำงาน | 1. ตรวจการบล็อกป๊อปอัป/ดาวน์โหลดของเบราว์เซอร์ 2. ลองเบราว์เซอร์อื่น 3. ไฟล์ใหญ่อาจใช้เวลาสร้าง รอสักครู่ |
| ค้นหาช่างไม่พบผลลัพธ์ | 1. ตรวจว่ามีบัญชีช่างและมีสถานะใช้งาน 2. ตรวจการสะกดชื่อ 3. ช่างอาจอยู่คนละทีม/จังหวัด |
| การ์ดงานขึ้น "ไม่มีช่าง" | ยังไม่ได้มอบหมาย ใช้ขั้นตอนมอบหมายช่าง |
| กรองแล้วได้ 0 งาน | เงื่อนไขแคบเกินไป ลบตัวกรองทีละตัว หรือคลิก **รีเซ็ต** เริ่มใหม่ |
| ส่งออก CSV ได้เป็นไฟล์ ZIP | เป็นปกติสำหรับข้อมูลขนาดใหญ่ แตกไฟล์ ZIP เพื่อเข้าถึง CSV ข้างใน |
| ปฏิทิน PM ไม่มีรายการในเดือนนั้น | 1. ตรวจว่ามีสัญญา PM ที่ครอบคลุมเดือนนั้น 2. ลบตัวกรองที่ใช้อยู่ 3. ตรวจตาราง PM ที่สัญญา (บท 07) |
| ลากรายการ PM ไม่ได้ | 1. รายการอาจเป็นสถานะ ใบงาน แล้ว (ต้องเลื่อนนัดใน Job Management) 2. ตรวจสิทธิ์แก้ไขของบทบาท 3. รีเฟรชหน้า |
| "อนุมัติทั้งหมด" สร้าง 0 ใบงาน | รายการทั้งหมดเป็น ใบงาน แล้ว หรือยังไม่มีช่าง (เลือกช่าง) มอบหมายช่างก่อนแล้วลองใหม่ |
| มีรายการ PM สีแดง (เลยแผน) | PM เลยวันนัดโดยยังไม่ถูกสร้าง สร้างใบงานทันที (จะลงวันย้อนหลัง) หรือเลื่อนไปวันในอนาคต |
| ลากวางไม่ทำงานบนแท็บเล็ต/มือถือ | ปฏิทินเหมาะกับเบราว์เซอร์เดสก์ท็อป ใช้เดสก์ท็อปสำหรับลากวาง หรือใช้ปุ่ม เปลี่ยนวัน ในแผงรายละเอียด |
| ตารางปริมาณงานไม่มีช่าง | 1. ตรวจว่ามีบัญชีช่างและใช้งานอยู่ 2. ลบตัวกรองจังหวัด 3. ตรวจว่าช่างมีการตั้งความจุงานต่อวัน |
| ทุกช่องขึ้น 0% ทั้งที่มอบงานแล้ว | 1. งานอาจไม่มีวันที่นัดในเดือนที่แสดง 2. ไปเดือนที่ถูกต้อง 3. รีเฟรชหน้าเพื่อล้างแคช |
| ปุ่มโอนงานไม่ปรากฏ | บทบาทคุณอาจไม่มีสิทธิ์แก้ไข เฉพาะ Admin/Dispatcher โอนงานได้ ติดต่อ SuperAdmin |
| ตัวบ่งชี้วงกลมขึ้น NaN% | ช่างยังไม่ได้ตั้งความจุงานต่อวัน (เป็น 0 หรือว่าง) ตั้งค่าที่ Technicians → Profiles |
| ข้อมูลปริมาณงานดูเก่า | ข้อมูลแคชราว 5 นาที รอสักครู่หรือรีเฟรชเบราว์เซอร์ |
| "ไม่มีสิทธิ์เข้าถึง" หรือ error 403 | บทบาทไม่ได้รับอนุญาตในการกระทำนั้น ตรวจสิทธิ์กับ SuperAdmin (ดูบท 00) |

---

## อ้างอิงด่วน (Quick Reference)

| ต้องการ... | ไปที่ | คลิก |
|------------|-------|------|
| ดูใบงานทั้งหมด | Jobs → Job Management | (โหลดอัตโนมัติ) |
| ดูงานรออนุมัติ | Jobs → Job Management | แท็บ **รออนุมัติ** |
| ค้นหาด้วยเลขใบงาน | Jobs → Job Management | พิมพ์ในช่องค้นหา |
| ใช้ตัวกรองขั้นสูง | Jobs → Job Management | **ตัวกรอง** → เลือก → **ค้นหา** |
| สร้างใบงาน BM | Jobs → Job Management | **+ สร้างใบงาน** → ใบงาน BM |
| สร้างใบงาน PM | Jobs → Job Management | **+ สร้างใบงาน** → ใบงาน PM |
| มอบหมายช่าง | หน้ารายละเอียดใบงาน | **มอบหมาย** → ค้นหาชื่อ → **ยืนยัน** |
| มอบหมายช่างใหม่ | หน้ารายละเอียดใบงาน | **มอบหมายใหม่** → ค้นหาชื่อ → **ยืนยัน** |
| แก้ไขใบงาน | หน้ารายละเอียดใบงาน | **แก้ไข** → ปรับช่อง → **บันทึก** |
| ยกเลิกใบงาน | หน้ารายละเอียดใบงาน | **ยกเลิกใบงาน** → กรอกเหตุผล → **ยืนยัน** |
| พัก/ดำเนินการต่อ | หน้ารายละเอียดใบงาน | **พักงาน** / **ดำเนินการต่อ** |
| รีวิวและปิดงาน | Jobs → Job Management → แท็บ รออนุมัติ | เปิดงาน → **อนุมัติ** |
| ดูประวัติใบงาน | หน้ารายละเอียดใบงาน | **ประวัติ** |
| ส่งออก CSV/PDF | Jobs → Job Management | **ดาวน์โหลด** → เลือกรูปแบบ |
| ดูปฏิทิน PM รายเดือน | Jobs → PM Calendar | นำทางด้วย ◀ / ▶ |
| ดูรายละเอียด PM รายวัน | Jobs → PM Calendar | คลิกช่องวัน |
| มอบหมายช่างให้ PM | แผงรายละเอียดรายวัน | รายการ เลือกช่าง → **มอบหมายช่าง** → **ยืนยัน** |
| เลื่อนนัด PM | Jobs → PM Calendar | ลากรายการไปวันใหม่ → **ยืนยัน** |
| สร้างใบงาน PM จากแผน | แผงรายละเอียดรายวัน | **สร้างใบงาน** |
| อนุมัติ PM แบบกลุ่ม | Jobs → PM Calendar | **อนุมัติทั้งหมด** → **ยืนยัน** |
| โอนช่างของ PM | แผงรายละเอียดรายวัน | **โอนช่าง** → เลือกช่าง → **ยืนยัน** |
| ดูภาพรวมปริมาณงานช่าง | Jobs → Workload | (โหลดอัตโนมัติ) |
| ดูรายละเอียดงานรายวันของช่าง | Jobs → Workload | คลิกช่อง (แถว + วัน) |
| หาช่างงานเกินกำลัง | Jobs → Workload | มองหาช่องสีแดง (>100%) |
| โอนงานระหว่างช่าง | แผงรายละเอียดช่อง | เลือกงาน → **โอนงาน** → เลือกช่าง → **ยืนยัน** |
| กรองตามจังหวัด | Jobs → PM Calendar / Workload | รายการเลือกจังหวัด → เลือก |

---

## ภาพหน้าจอที่ต้องเพิ่ม

| # | สิ่งที่ต้องถ่าย | เส้นทางหน้า |
|---|----------------|-------------|
| 1 | หน้ารายการใบงานแบบการ์ดพร้อมแท็บกรอง | `/job` |
| 2 | แผงตัวกรองขั้นสูงแบบขยาย | `/job` (แผงตัวกรองเปิด) |
| 3 | รายการเลือกประเภทใบงาน 6 ประเภท | `/job` (ปุ่ม + สร้างใบงาน) |
| 4 | ฟอร์มสร้างใบงาน (ตัวอย่างประเภท BM) | `/job/create` |
| 5 | หน้ารายละเอียดใบงานพร้อมปุ่มมอบหมาย/มอบหมายใหม่ | `/job/edit/[id]` |
| 6 | หน้ารายละเอียดใบงานในโหมดแก้ไข | `/job/edit/[id]` (โหมดแก้ไข) |
| 7 | หน้าต่างยกเลิกใบงานพร้อมช่องเหตุผล | `/job/edit/[id]` (หน้าต่างยกเลิก) |
| 8 | หน้ารีวิวใบงานพร้อมใบตรวจเช็กและปุ่มอนุมัติ | `/job/edit/[id]` (โหมดรีวิว) |
| 9 | หน้าต่างประวัติใบงานแสดงไทม์ไลน์ | `/job/edit/[id]` (หน้าต่างประวัติ) |
| 10 | ปุ่มดาวน์โหลดพร้อมตัวเลือกรูปแบบ 3 แบบ | `/job` (รายการดาวน์โหลด) |
| 11 | ปฏิทิน PM แบบกริดรายเดือนพร้อมตัวบ่งชี้สถานะสี | `/job-planning` |
| 12 | แถบตัวกรองปฏิทิน (จังหวัด/สัญญา/ช่าง) | `/job-planning` (แถบตัวกรอง) |
| 13 | แผงรายละเอียด PM รายวันพร้อมช่าง/ลูกค้า/สถานะ | `/job-planning` (คลิกวัน) |
| 14 | รายการ PM พร้อมรายการเลือกช่างที่เปิดอยู่ | `/job-planning` (มอบหมายช่าง) |
| 15 | รายการ PM ที่กำลังถูกลากไปอีกวัน | `/job-planning` (ลากวาง) |
| 16 | ปุ่มอนุมัติทั้งหมดและหน้าต่างยืนยัน | `/job-planning` (อนุมัติทั้งหมด) |
| 17 | ตารางปริมาณงานเต็มพร้อมแถวช่าง คอลัมน์วัน และวงกลมสี | `/workload` |
| 18 | หน้าต่างรายละเอียดช่องแสดงสรุปรายวัน | `/workload` (คลิกช่อง) |
| 19 | ตารางปริมาณงานเน้นช่องสีแดงของช่างเกินกำลัง | `/workload` (สถานะเกินกำลัง) |
| 20 | รายการงานในแผงรายละเอียดพร้อมปุ่มโอนงาน | `/workload` (แผงรายละเอียด) |
| 21 | แผงโอนงานแสดงช่างต้นทาง งาน และค้นหาช่างปลายทาง | `/workload` (หน้าต่างโอนงาน) |
| 22 | รายการเลือกจังหวัดด้านบนหน้าปริมาณงาน | `/workload` (พื้นที่ตัวกรอง) |

---

*อ้างอิง: FR-008, FR-009, FR-010, UF-008, UF-009, UF-010 · ยึดมาตรฐาน `06-support/user-manual-writing-standard.md`*
