# จัดการบัญชีช่าง (Technician Management)

> **ฟีเจอร์นี้ทำอะไร** — จัดการบัญชีช่างภาคสนาม (Technician Account), โปรไฟล์ช่าง (Technician Profile), เงื่อนไขการทำงาน (Work Condition), การมอบหมายทีมและหัวหน้าช่าง, การตั้งค่าตัวตน/รหัสเข้าระบบ (OTP) สำหรับแอปมือถือ, บริษัทช่างผู้รับเหมาช่วง (Technician Company) รวมถึงดูตัวชี้วัดผลงานช่าง (ประวัติงาน อะไหล่ และคะแนนรีวิว)
>
> **ใครใช้งาน** — ผู้ดูแลระบบ (Admin), ผู้จัดการ (Manager/HR), SuperAdmin
>
> **เข้าถึงได้ที่ไหน** — เมนูด้านซ้าย (sidebar) → **ช่าง (Technicians)** → **บัญชีช่าง / โปรไฟล์ช่าง / บริษัทช่าง**
>
> **ข้อกำหนดที่เกี่ยวข้อง** — FR-012 (Technician Account Management), UF-012
>
> **โมดูลในโค้ดเบส** — `technician`, `technician-account`, `technician-profile`, `technician-company`

---

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

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

- [ ] คุณเข้าสู่ระบบ Admin Portal ด้วยบทบาทที่มีสิทธิ์ **แก้ไข (EDIT)** ในโมดูลช่าง (Admin หรือ Manager/HR)
- [ ] คุณมีเบอร์โทรศัพท์ไทยของช่างพร้อมสำหรับลงทะเบียนบัญชี (รูปแบบ 9–10 หลัก)
- [ ] หากต้องตั้งเงื่อนไขการทำงาน (Work Condition) ประเภทงานและประเภทสินทรัพย์ต้องถูกตั้งค่าในระบบแล้ว
- [ ] หากต้องกำหนดเขตพื้นที่ทำงาน (Service Areas) ข้อมูลจังหวัดต้องถูกตั้งค่าใน **Settings** แล้ว
- [ ] หากต้องเชื่อมโยงช่างกับบริษัทผู้รับเหมาช่วง บริษัทนั้นต้องถูกสร้างไว้ก่อน (ดูสถานการณ์ "จัดการบริษัทช่าง")

> **หมายเหตุ:** ระบบแบ่งการจัดการช่างเป็น 3 โมดูล — **บัญชีช่าง (Account)** สำหรับเข้าระบบ, **โปรไฟล์ช่าง (Profile)** สำหรับข้อมูลส่วนตัวและเงื่อนไขการทำงาน, และ **บริษัทช่าง (Company)** สำหรับผู้รับเหมาช่วง บัญชีและโปรไฟล์เชื่อมกันแบบ 1:1

ทำความรู้จักค่าที่ใช้บ่อยก่อนเริ่ม:

| ตำแหน่ง (Position) | รหัส | ความหมาย |
|--------------------|------|----------|
| ช่าง (Technician) | `TECHNICIAN` | ช่างภาคสนามทั่วไป รับและปิดงานที่ได้รับมอบหมาย |
| หัวหน้าช่าง (Team Leader) | `TEAM_LEADER` | ช่างอาวุโส ดูสมาชิกทีมและกรอง Dashboard เฉพาะทีมตนได้ |

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

| สถานะ (Status) | ผลที่เกิด |
|----------------|-----------|
| ACTIVE (ใช้งาน) | รับงานใหม่ได้ และปรากฏในตัวเลือกมอบหมายงาน |
| INACTIVE (ปิดใช้งาน) | รับงานใหม่ไม่ได้ แต่ยังเข้าแอปมือถือเพื่อปิดงานที่ค้างได้ |

---

## สถานการณ์: ดูและค้นหารายการบัญชีช่าง

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

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

### ขั้นตอน

1. คลิก **ช่าง (Technicians) → บัญชีช่าง (Accounts)** ในเมนูด้านซ้าย หน้ารายการบัญชีช่างจะโหลดขึ้นมา

   ![หน้ารายการบัญชีช่างแสดงตารางช่างทั้งหมด](images/05-technician-account-list.png)

   <!-- 📸 NEED SCREENSHOT: หน้ารายการบัญชีช่างแสดงตารางพร้อมคอลัมน์ ชื่อ-นามสกุล เบอร์โทร OTP ประเภท สถานะ ตำแหน่ง GPS และเมนู Action -->

2. ดูข้อมูลในแต่ละแถวของตาราง:

   | คอลัมน์ | แสดงอะไร | ตัวอย่าง |
   |---------|----------|----------|
   | ชื่อ-นามสกุล (Name) | ชื่อและนามสกุลช่าง | สมชาย ประเสริฐ |
   | เบอร์โทร (Phone) | เบอร์ที่ลงทะเบียนไว้ | 081-234-5678 |
   | OTP | รหัส OTP ล่าสุด (กดแสดง/ซ่อน) | •••••• |
   | ประเภท (Type) | TECHNICIAN หรือ TEAM_LEADER | หัวหน้าช่าง |
   | สถานะ (Status) | ACTIVE หรือ INACTIVE | ACTIVE |
   | GPS ตำแหน่งล่าสุด | พิกัดล่าสุดพร้อมลิงก์ Google Maps | 13.7563, 100.5018 |

3. พิมพ์คำค้นในช่อง **ค้นหา (Search)** เพื่อค้นหาช่างด้วยชื่อหรือเบอร์โทร

4. ใช้ตัวกรองเพื่อแคบรายการให้แคบลง:

   | ตัวกรอง | ตัวเลือก | กรองตาม |
   |---------|----------|---------|
   | ประเภทช่าง (Type) | ช่าง / หัวหน้าช่าง | ตำแหน่ง |
   | สถานะ (Status) | Active / Inactive | สถานะบัญชี |

   > **เคล็ดลับ:** เมื่อลูกค้าโทรเข้ามาพร้อมแจ้งเบอร์ช่าง ให้ค้นด้วยเบอร์โทร — มักเร็วกว่าค้นด้วยชื่อ

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

คุณเห็นภาพรวมบัญชีช่างทั้งหมด คลิกแถวใดก็ได้เพื่อเปิดดูรายละเอียดและจัดการโปรไฟล์ เงื่อนไขการทำงาน และผลงานของช่างคนนั้น

---

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

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

ลงทะเบียนช่างภาคสนามคนใหม่เข้าระบบด้วยเบอร์โทรไทย เพื่อให้ช่างเข้าใช้งานแอปมือถือด้วย OTP ได้

### ขั้นตอน

1. ที่หน้ารายการบัญชีช่าง คลิกปุ่ม **+ สร้างบัญชีช่าง (+ Create)** ที่มุมขวาบน

   ![ฟอร์มสร้างบัญชีช่างพร้อมช่องกรอกเบอร์โทร](images/05-technician-account-create.png)

   <!-- 📸 NEED SCREENSHOT: ฟอร์มสร้างบัญชีช่างแสดงช่องเบอร์โทร ประเภทช่าง และตัวเลือกเชื่อมโยงโปรไฟล์ -->

2. กรอกข้อมูลในฟอร์มลงทะเบียนบัญชี:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | เบอร์โทร (Phone Number)* | เบอร์โทรไทยที่ช่างใช้เข้าระบบ | 9–10 หลัก รูปแบบไทย (รองรับรหัสพื้นที่ 02 เป็นพิเศษ) และไม่ซ้ำภายในองค์กร |
   | ประเภทช่าง (Technician Type)* | เลือกประเภทของช่าง | ต้องเลือก 1 ค่า |
   | เชื่อมโยงโปรไฟล์ (Link to Profile) | เลือกโปรไฟล์ช่างที่มีอยู่ (ถ้ามี) | ไม่บังคับ — ผูกแบบ 1:1 |

   > **หมายเหตุ:** ช่องที่มีเครื่องหมาย * เป็นช่องที่ต้องกรอก เบอร์โทรจะถูกแปลงจาก `0X-XXX-XXXX` เป็น `+66X-XXX-XXXX` โดยระบบอัตโนมัติ

3. คลิกปุ่ม **สร้างบัญชี (Create)**

   ระบบจะตรวจสอบเบอร์โทรก่อนบันทึก:

   | ผลตรวจสอบ | ข้อความที่แสดง |
   |-----------|----------------|
   | รูปแบบไม่ถูกต้อง | "รูปแบบเบอร์โทรไม่ถูกต้อง" (ต้อง 9–10 หลัก) |
   | เบอร์ซ้ำ | "เบอร์โทรนี้ถูกใช้งานแล้ว" (BR1: เบอร์ต้องไม่ซ้ำในองค์กร) |
   | ถูกต้อง | ระบบสร้างบัญชีและสร้าง OTP ให้ |

4. หลังสร้างสำเร็จ ระบบจะพากลับไปหน้ารายการบัญชีช่าง และแสดง **OTP** ล่าสุดในรายการ

   <!-- 📸 NEED SCREENSHOT: รายการบัญชีช่างหลังสร้างสำเร็จแสดงปุ่มแสดง/ซ่อน OTP ในแถว -->

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

บัญชีช่างถูกสร้างด้วยสถานะ **ACTIVE** และตำแหน่ง **TECHNICIAN** (ค่าเริ่มต้น) ช่างสามารถเข้าแอปมือถือด้วยเบอร์โทรและ OTP ที่ระบบสร้างได้ ขั้นถัดไปควรตั้งค่าโปรไฟล์และเงื่อนไขการทำงานเพื่อควบคุมประเภทงานที่ช่างจะได้รับ

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

---

## สถานการณ์: ดูและแก้ไขโปรไฟล์ช่าง พร้อมตั้งเงื่อนไขการทำงาน

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

กรอกข้อมูลส่วนตัวของช่าง กำหนดบริษัทและหัวหน้าช่าง และตั้งเงื่อนไขการทำงาน (Work Condition) ว่าช่างทำงานประเภทใด รับได้กี่งานต่อวัน และครอบคลุมพื้นที่ใด

### ขั้นตอน

1. คลิก **ช่าง (Technicians) → โปรไฟล์ช่าง (Profiles)** ในเมนูด้านซ้าย หรือเปิดจากลิงก์ในบัญชีช่าง

2. คลิกปุ่ม **+ สร้างโปรไฟล์ (+ Create)** เพื่อสร้างใหม่ หรือคลิกแถวโปรไฟล์ที่มีอยู่เพื่อแก้ไข

   ![ฟอร์มโปรไฟล์ช่างพร้อมส่วนเงื่อนไขการทำงาน](images/05-technician-profile-form.png)

   <!-- 📸 NEED SCREENSHOT: ฟอร์มโปรไฟล์ช่างแสดงข้อมูลส่วนตัว ตำแหน่ง บริษัท หัวหน้าช่าง และส่วนเงื่อนไขการทำงาน -->

3. กรอกข้อมูลส่วนตัวและการสังกัด:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ชื่อ (First Name)* | ชื่อจริงของช่าง | สูงสุด 100 ตัวอักษร |
   | นามสกุล (Last Name)* | นามสกุลของช่าง | สูงสุด 100 ตัวอักษร |
   | ชื่อที่แสดง (Display Name)* | ชื่อที่ใช้แสดงในระบบ | สูงสุด 100 ตัวอักษร |
   | อีเมล (Email) | อีเมลติดต่อ | รูปแบบอีเมลที่ถูกต้อง — ไม่บังคับ |
   | รูปโปรไฟล์ (Photo) | อัปโหลดรูปภาพ | ไฟล์รูปภาพที่ถูกต้อง — ไม่บังคับ |
   | ที่อยู่ (Address) | ที่อยู่ของช่าง | สูงสุด 500 ตัวอักษร — ไม่บังคับ |
   | ตำแหน่ง (Position)* | Technician หรือ Team Leader | ต้องเลือก 1 ค่า |
   | บริษัท (Company) | เลือกบริษัทช่างจาก dropdown | ช่างผู้รับเหมาช่วงต้องผูกบริษัท (BR6) |
   | หัวหน้าช่าง (Team Leader) | เลือกหัวหน้าช่างที่มีอยู่ | ช่าง 1 คนสังกัดได้เพียง 1 ทีม (BR2) |

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

4. ในส่วน **เงื่อนไขการทำงาน (Work Condition)** ตั้งค่าแต่ละพารามิเตอร์:

   | พารามิเตอร์ | ชนิด | ความหมาย |
   |-------------|------|----------|
   | จำนวนงานสูงสุดต่อวัน (Max Workload/Day) | ตัวเลข | จำนวนงานสูงสุดที่มอบหมายให้ช่างได้ต่อวัน ใช้คำนวณ % ภาระงานในหน้า Workload |
   | ประเภทงาน (Job Types) | เช็กบ็อกซ์ | ประเภทงานที่ช่างทำได้ — BM / PM / QC / IN / UN / IS |
   | ประเภทสินทรัพย์ (Asset Types) | เลือกหลายค่า | ประเภทอุปกรณ์ที่ช่างได้รับการฝึก |
   | เขตพื้นที่ทำงาน (Service Areas) | เลือกหลายจังหวัด | จังหวัดที่ช่างให้บริการ — เฉพาะงานในจังหวัดเหล่านี้จะถูกเสนอให้ช่าง |

   > **เคล็ดลับ:** ช่างส่วนใหญ่ทำ BM และ PM เป็นหลัก ส่วน QC มักสงวนไว้ให้ช่างอาวุโสหรือหัวหน้าช่าง กำหนดประเภทงานตามใบรับรองและประสบการณ์ของช่าง

5. คลิกปุ่ม **บันทึก (Save)**

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

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

> **หมายเหตุ:** ช่างที่ไม่ได้ตั้งเขตพื้นที่ทำงานจะไม่ปรากฏในรายการมอบหมายที่กรองตามพื้นที่ — ควรกำหนดอย่างน้อย 1 จังหวัดเสมอ

---

## สถานการณ์: แต่งตั้งหัวหน้าช่าง (Team Leader)

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

เลื่อนตำแหน่งช่างเป็นหัวหน้าช่าง และมอบหมายให้ดูแลทีม

### ขั้นตอน

1. เปิดโปรไฟล์ช่างที่ต้องการ โดยคลิกแถวของช่างในรายการ

2. คลิกปุ่ม **แก้ไข (Edit)** เพื่อเข้าโหมดแก้ไข

   ![ฟอร์มแก้ไขโปรไฟล์แสดงตำแหน่ง TEAM_LEADER](images/05-technician-team-leader.png)

   <!-- 📸 NEED SCREENSHOT: ฟอร์มแก้ไขโปรไฟล์ช่างแสดง dropdown ตำแหน่งที่เลือก TEAM_LEADER และช่องมอบหมายทีม -->

3. เปลี่ยนค่าในฟอร์ม:

   | ช่อง | เปลี่ยนเป็น | เงื่อนไข |
   |------|------------|----------|
   | ตำแหน่ง (Position)* | TEAM_LEADER | เลื่อนช่างขึ้นเป็นหัวหน้าทีม |
   | ทีม (Team) | เลือกทีมที่จะให้ดูแล | แต่ละทีมมีหัวหน้าได้เพียง 1 คน (BR3) |

4. คลิกปุ่ม **บันทึก (Save)**

5. หัวหน้าช่างจะได้รับความสามารถเพิ่มเติม:

   | ความสามารถ | รายละเอียด |
   |------------|------------|
   | ดูสมาชิกทีม | เห็นสมาชิกทีมและสถานะทั้งหมดบนแอปมือถือ |
   | กรอง Dashboard | กรองให้แสดงเฉพาะงานของทีมตน |
   | มุมมองข้อมูลทีม | มุมมองเฉพาะแสดงรายชื่อ ภาระงาน และผลงานของทีม |

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

ตำแหน่งของช่างเปลี่ยนเป็น **TEAM_LEADER** ทั่วทั้งระบบ โปรไฟล์จะแสดงป้ายหัวหน้าช่าง ฟีเจอร์จัดการทีมจะปรากฏบนแอปมือถือเมื่อช่างเข้าระบบครั้งถัดไป

> **หมายเหตุ:** ช่าง 1 คนสังกัดได้เพียง 1 ทีม การเปลี่ยนทีมของหัวหน้าช่างจะย้ายเฉพาะตัวเขา ไม่กระทบสมาชิกทีมอื่น

---

## สถานการณ์: ดูผลงานช่าง (ประวัติงาน อะไหล่ และรีวิว)

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

ทบทวนผลงานในอดีตของช่าง ทั้งประวัติงาน การใช้อะไหล่ และคะแนนความพึงพอใจจากลูกค้า

### ขั้นตอน

1. เปิดโปรไฟล์ช่างที่ต้องการ โดยคลิกแถวของช่างในรายการ

2. หน้ารายละเอียดโปรไฟล์มี 3 แท็บผลงาน:

   ![หน้ารายละเอียดช่างแสดง 3 แท็บผลงาน](images/05-technician-performance-tabs.png)

   <!-- 📸 NEED SCREENSHOT: หน้ารายละเอียดช่างแสดง 3 แท็บ (ประวัติงาน, ประวัติอะไหล่, รีวิวงาน) -->

3. แท็บ **ประวัติงาน (Job History)** — แสดงไทม์ไลน์งานทั้งหมดที่มอบหมายให้ช่าง ไม่ว่าผลจะเป็นอย่างไร:

   | คอลัมน์ | แสดงอะไร |
   |---------|----------|
   | วันที่ | วันที่ปิดงาน |
   | เลขที่งาน | รหัสงานที่ระบบสร้าง |
   | ประเภทงาน | BM / PM / QC / IN / UN / IS |
   | ลูกค้า | บริษัทและสถานที่ |
   | สถานะ | สถานะสุดท้ายของงาน (DONE, CANCEL ฯลฯ) |

4. แท็บ **ประวัติอะไหล่ (Spare Part Usage)** — รวมอะไหล่ทั้งหมดที่ช่างใช้ในทุกงาน:

   | คอลัมน์ | แสดงอะไร |
   |---------|----------|
   | ชื่ออะไหล่ | ชื่ออะไหล่ที่ใช้ |
   | งานอ้างอิง | งานที่ใช้อะไหล่นั้น |
   | จำนวน | จำนวนหน่วยที่ใช้ |
   | วันที่ | วันที่ใช้อะไหล่ |

5. แท็บ **รีวิวงาน (Job Reviews / Ratings)** — แสดงคะแนนและความเห็นจากลูกค้า:

   | ตัวชี้วัด | แสดงอะไร |
   |-----------|----------|
   | คะแนนเฉลี่ย | คะแนนความพึงพอใจรวมจากลูกค้า |
   | รีวิวรายงาน | คะแนนดาวและความเห็นต่อแต่ละงาน พร้อมผู้รีวิวและวันที่ |

   > **เคล็ดลับ:** ใช้แท็บรีวิวตอนประเมินผลงาน หากแนวโน้มคะแนนลดลงอาจบ่งชี้ความจำเป็นในการฝึกอบรมหรือปัญหาภาระงาน

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

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

---

## สถานการณ์: ปิดการใช้งานหรือเปิดใช้งานบัญชีช่าง

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

ปิดการใช้งานบัญชีช่างเพื่อไม่ให้รับงานใหม่ แต่ยังให้ปิดงานที่ค้างได้ หรือเปิดใช้งานกลับเมื่อช่างพร้อม

### ขั้นตอน

1. ที่รายการบัญชีช่าง คลิก **สวิตช์สถานะ (Status toggle)** บนแถวของช่าง

   ![สวิตช์สถานะ ACTIVE/INACTIVE บนแถวช่าง](images/05-technician-status-toggle.png)

   <!-- 📸 NEED SCREENSHOT: แถวบัญชีช่างแสดงสวิตช์สลับสถานะ ACTIVE/INACTIVE และกล่องยืนยัน -->

2. ระบบจะตรวจสอบก่อนเปลี่ยนสถานะ:

   | กรณี | สิ่งที่เกิด |
   |------|-------------|
   | ช่างมีงานที่กำลังดำเนินการอยู่ | ระบบแสดง "ไม่สามารถปิดการใช้งานได้ ช่างมีงานที่กำลังดำเนินการ" และไม่เปลี่ยนสถานะ (BR5) |
   | ไม่มีงานค้าง | ระบบแสดงกล่องยืนยัน "ยืนยันการเปลี่ยนสถานะ?" |

3. ในกล่องยืนยัน คลิก **ยืนยัน (Confirm)** เพื่อเปลี่ยนสถานะ หรือ **ยกเลิก (Cancel)** เพื่อกลับสู่รายการ

4. ผลเมื่อเปลี่ยนเป็น INACTIVE:

   | ก่อน (ACTIVE) | หลัง (INACTIVE) |
   |---------------|-----------------|
   | ปรากฏในตัวเลือกมอบหมายงาน | ถูกซ่อนจากตัวเลือกมอบหมายงาน |
   | รับงานใหม่ได้ | รับงานใหม่ไม่ได้ (BR4) |
   | เข้าแอปมือถือได้ | ยังเข้าแอปมือถือได้ |
   | งานที่ค้างดำเนินต่อ | งานที่ค้างดำเนินต่อจนจบ |

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

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

> **คำเตือน:** การปิดการใช้งานไม่ยกเลิกงานที่ค้างของช่าง หากต้องย้ายงานที่ค้างให้ช่างอื่น ต้องทำเองผ่าน Job Management

> **เคล็ดลับ:** ใช้ INACTIVE แทนการลบสำหรับช่างที่ไม่พร้อมชั่วคราว (ลา/ป่วย/หมดสัญญา) ประวัติงานและผลงานจะถูกเก็บไว้ — เปิดใช้งานกลับได้ด้วยการสลับสถานะเป็น ACTIVE

---

## สถานการณ์: จัดการบริษัทช่าง (ผู้รับเหมาช่วง)

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

สร้างและจัดการบริษัทผู้รับเหมาช่วงภายนอก แล้วเชื่อมโยงช่างภายนอกเข้ากับบริษัทเหล่านั้น

### ขั้นตอน

1. คลิก **ช่าง (Technicians) → บริษัทช่าง (Companies)** ในเมนูด้านซ้าย หน้ารายการบริษัทช่างจะโหลดขึ้นมา

   ![หน้ารายการบริษัทช่างพร้อมปุ่มจัดการ](images/05-technician-company-list.png)

   <!-- 📸 NEED SCREENSHOT: หน้ารายการบริษัทช่างแสดงชื่อบริษัทพร้อมปุ่มสร้าง/แก้ไข/ลบ -->

2. คลิกปุ่ม **+ สร้างบริษัท (+ Create)** เพื่อสร้างใหม่ หรือคลิกแถวบริษัทเพื่อแก้ไข

3. กรอกข้อมูลในฟอร์มบริษัท:

   | ช่อง | กรอกอะไร | เงื่อนไข |
   |------|----------|----------|
   | ชื่อบริษัท (Company Name)* | ชื่อเต็มของบริษัทผู้รับเหมาช่วง | ต้องกรอก |
   | ประเภท (Type)* | สำนักงานใหญ่ (Head Office) หรือ สาขา (Branch) | รองรับลำดับชั้นสำนักงานใหญ่/สาขา |
   | ที่อยู่ (Address) | ที่อยู่บริษัท | ไม่บังคับ |
   | ข้อมูลติดต่อ (Contact Info) | ผู้ติดต่อ เบอร์โทร อีเมล | ไม่บังคับ |

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

4. คลิกปุ่ม **บันทึก (Save)** ระบบจะพากลับไปหน้ารายการบริษัท หากข้อมูลไม่ถูกต้องระบบจะแสดงข้อความ error ในฟอร์ม

5. เชื่อมโยงช่างกับบริษัท โดยเปิดโปรไฟล์ช่างแล้วเลือกบริษัทในช่อง **บริษัท (Company)** (ดูสถานการณ์ "ดูและแก้ไขโปรไฟล์ช่าง")

   > **หมายเหตุ:** ช่างผู้รับเหมาช่วงทำงานในระบบเหมือนช่างภายในทุกประการ การสังกัดบริษัทใช้เพื่อการรายงาน การวางบิล และการติดตามองค์กรเท่านั้น

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

บริษัทช่างปรากฏในรายการและสามารถผูกกับบัญชีช่างได้ ใช้การสังกัดบริษัทเพื่อกรองและรายงานงานที่ทำโดยช่างภายนอกเทียบกับช่างภายใน

---

## สถานการณ์: ส่งออกข้อมูลช่างเป็นไฟล์ CSV

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

ดาวน์โหลดข้อมูลช่างเป็นไฟล์ CSV เพื่อทำรายงาน เก็บข้อมูล HR หรือเชื่อมระบบภายนอก

### ขั้นตอน

1. ไปที่หน้ารายการที่ต้องการ — **บัญชีช่าง**, **โปรไฟล์ช่าง** หรือ **บริษัทช่าง**

2. ใส่ตัวกรองที่ต้องการเพื่อแคบชุดข้อมูล

3. คลิกปุ่ม **ดาวน์โหลด (Export)** ที่ด้านบนของรายการ

   <!-- 📸 NEED SCREENSHOT: ปุ่มดาวน์โหลด (Export) ที่ด้านบนหน้ารายการช่าง -->

4. ระบบจะสร้างไฟล์ CSV ตามแหล่งข้อมูล:

   | แหล่งข้อมูล | ไฟล์ CSV ประกอบด้วย |
   |-------------|---------------------|
   | บัญชีช่าง | ชื่อ เบอร์โทร อีเมล ตำแหน่ง ทีม สถานะ บริษัทที่สังกัด |
   | โปรไฟล์ช่าง | ชื่อ ที่อยู่ เงื่อนไขการทำงาน (จำนวนงาน/ประเภทงาน/เขตพื้นที่) URL รูปภาพ |
   | บริษัทช่าง | ชื่อบริษัท ข้อมูลติดต่อ จำนวนช่างที่ผูก สถานะ |

5. ไฟล์ CSV จะถูกบันทึกลงในตำแหน่งดาวน์โหลดเริ่มต้นของเบราว์เซอร์

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

เปิดไฟล์ CSV ใน Excel หรือ Google Sheets เพื่อวิเคราะห์ ใช้สำหรับรายงานจำนวนช่าง วิเคราะห์ความครอบคลุมพื้นที่ หรือซิงก์ข้อมูลกับระบบ HR ภายนอก

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

---

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

| สิ่งที่คุณเห็น | ทำอย่างไร |
|---------------|-----------|
| "รูปแบบเบอร์โทรไม่ถูกต้อง" | ตรวจว่าเป็น 9–10 หลักรูปแบบไทย ลบรหัสประเทศ (+66) ช่องว่าง และขีดออก |
| "เบอร์โทรนี้ถูกใช้งานแล้ว" | เบอร์นี้ผูกกับช่างคนอื่นในองค์กรแล้ว ค้นด้วยเบอร์โทรเพื่อหาบัญชีที่มีอยู่ |
| ช่างไม่ได้รับ OTP | ให้ช่างตรวจกล่อง SMS รอ 60 วินาทีก่อนส่งใหม่ ตรวจว่าเบอร์ถูกและมีสัญญาณ |
| ช่างไม่ปรากฏในตัวเลือกมอบหมายงาน | ตรวจว่าช่างเป็น ACTIVE มีประเภทงานที่ถูกเปิดในเงื่อนไขการทำงาน และมีจังหวัดที่ตรงในเขตพื้นที่ |
| เงื่อนไขการทำงานบันทึกไม่ได้ | ต้องเลือกอย่างน้อย 1 ประเภทงาน ตรวจว่าจำนวนงานต่อวันเป็นจำนวนบวก และบันทึกก่อนออกจากหน้า |
| "ไม่สามารถปิดการใช้งานได้ ช่างมีงานที่กำลังดำเนินการ" | ช่างมีงานค้าง (BR5) ปิดหรือย้ายงานที่ค้างผ่าน Job Management ก่อน แล้วลองอีกครั้ง |
| ลบบัญชีช่างไม่ได้ | ช่างที่มีประวัติงานลบไม่ได้เพื่อรักษาร่องรอยตรวจสอบ ให้ใช้สถานะ INACTIVE แทน |
| GPS แสดงข้อมูลเก่า | แอปมือถือของช่างอาจปิดอยู่หรือปิด location services ให้ช่างเปิดแอปและอนุญาตตำแหน่ง |
| หัวหน้าช่างมองไม่เห็นสมาชิกทีม | ตรวจว่าตำแหน่งเป็น TEAM_LEADER (ไม่ใช่ TECHNICIAN) สมาชิกอยู่ทีมเดียวกัน และให้หัวหน้าช่างออกแล้วเข้าระบบใหม่ |
| ไฟล์ CSV ที่ส่งออกว่างเปล่า | ไม่มีช่างตรงตัวกรองปัจจุบัน ล้างตัวกรองทั้งหมดแล้วลองใหม่ |

---

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

| ต้องการ... | ไปที่ | คลิก |
|------------|-------|------|
| ดูช่างทั้งหมด | sidebar → **ช่าง → บัญชีช่าง** | (โหลดรายการอัตโนมัติ) |
| ค้นหาด้วยเบอร์โทร | sidebar → **ช่าง → บัญชีช่าง** | พิมพ์เบอร์ในช่องค้นหา |
| สร้างบัญชีช่างใหม่ | หน้าบัญชีช่าง | **+ สร้างบัญชีช่าง** → กรอกเบอร์ → **สร้างบัญชี** |
| แก้ไข/สร้างโปรไฟล์ | sidebar → **ช่าง → โปรไฟล์ช่าง** | คลิกแถว / **+ สร้างโปรไฟล์** → **บันทึก** |
| ตั้งเงื่อนไขการทำงาน | โปรไฟล์ช่าง → ส่วนเงื่อนไขการทำงาน | ตั้งจำนวนงาน/ประเภทงาน/พื้นที่ → **บันทึก** |
| แต่งตั้งหัวหน้าช่าง | โปรไฟล์ช่าง → **แก้ไข** | ตำแหน่ง = **TEAM_LEADER** → เลือกทีม → **บันทึก** |
| ดูประวัติงาน | โปรไฟล์ช่าง | แท็บ **ประวัติงาน** |
| ดูประวัติอะไหล่ | โปรไฟล์ช่าง | แท็บ **ประวัติอะไหล่** |
| ดูรีวิว/คะแนน | โปรไฟล์ช่าง | แท็บ **รีวิวงาน** |
| ปิด/เปิดใช้งานบัญชี | หน้าบัญชีช่าง | สวิตช์สถานะ → **ยืนยัน** |
| จัดการบริษัทช่าง | sidebar → **ช่าง → บริษัทช่าง** | สร้าง/แก้ไข/ลบ → **บันทึก** |
| ส่งออกข้อมูลเป็น CSV | หน้ารายการช่างใด ๆ | **ดาวน์โหลด (Export)** |

---

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

| # | สิ่งที่ต้องถ่าย | เส้นทางหน้า |
|---|----------------|-------------|
| 1 | หน้ารายการบัญชีช่างพร้อมคอลัมน์ ชื่อ เบอร์โทร OTP ประเภท สถานะ GPS | `/technician-account` |
| 2 | ฟอร์มสร้างบัญชีช่างพร้อมช่องเบอร์โทรและตัวเลือกเชื่อมโยงโปรไฟล์ | `/technician-account/create` |
| 3 | รายการบัญชีช่างหลังสร้างสำเร็จแสดงปุ่มแสดง/ซ่อน OTP | `/technician-account` |
| 4 | ฟอร์มโปรไฟล์ช่างพร้อมส่วนเงื่อนไขการทำงาน | `/technician-profile/edit/[id]` |
| 5 | ฟอร์มแก้ไขโปรไฟล์แสดงตำแหน่ง TEAM_LEADER และช่องมอบหมายทีม | `/technician-profile/edit/[id]` |
| 6 | หน้ารายละเอียดช่างแสดง 3 แท็บผลงาน (ประวัติงาน/อะไหล่/รีวิว) | `/technician-profile/edit/[id]` |
| 7 | แถวบัญชีช่างแสดงสวิตช์สถานะ ACTIVE/INACTIVE และกล่องยืนยัน | `/technician-account` |
| 8 | หน้ารายการบริษัทช่างพร้อมปุ่มสร้าง/แก้ไข/ลบ | `/technician-company` |
| 9 | ปุ่มดาวน์โหลด (Export) ที่ด้านบนหน้ารายการช่าง | `/technician-account` |

---

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