# 📖 คู่มือการใช้งานและบริหารจัดการระบบ PWA สสจ.เพชรบุรี
**ระบบศูนย์รวมแอปพลิเคชัน บริการออนไลน์ และจัดการบุคลากร สสจ.เพชรบุรี (PBIO Service Portal)**  
**เวอร์ชัน:** `1.5.7` | **หน่วยงาน:** สำนักงานสาธารณสุขจังหวัดเพชรบุรี  

---

## 1. ภาพรวมและคุณสมบัติเด่นของระบบ

PWA สสจ.เพชรบุรี เป็นเว็บแอปพลิเคชันยุคใหม่ประเภท **Progressive Web App (PWA)** ออกแบบมาเพื่อเป็นศูนย์กลางการเข้าใช้งานระบบสารสนเทศและการบริการบุคลากรของสำนักงานสาธารณสุขจังหวัดเพชรบุรี โดยมีจุดเด่นสำคัญ:
- 📱 **Mobile First & PWA:** ติดตั้งลงบนสมาร์ตโฟนได้เสมือนแอปพลิเคชัน Native มีความลื่นไหล ปลอดภัย ใช้งานได้ทั้ง iOS และ Android
- 🔐 **Authentication-Gated UI & Zero Data Leakage:** ความปลอดภัยระดับสูงสุด ซ่อนข้อมูลและเมนูนำทางทั้งหมดจนกว่าจะผ่านการเข้าสู่ระบบ
- 🚀 **App Launcher Springboard:** หน้าแอปพลิเคชันจำลองสไตล์ iOS/Android รองรับการลากจัดลำดับไอคอน (Drag & Drop) บันทึกแยกรายเครื่อง
- 🏢 **Self-Service Department & Profile:** บุคลากรสามารถเลือกหรือปรับเปลี่ยนกลุ่มงานที่ตนเองสังกัดได้ด้วยตนเอง พร้อมตรวจสอบสิทธิ์การใช้งานระบบงานต่างๆ (RBAC) ได้ทันที
- 📝 **4-Tier Approval Workflow:** สายงานการอนุมัติวันลา 4 ระดับ (ผู้ขอลา -> ผู้ปฏิบัติหน้าที่แทน -> หัวหน้ากลุ่มงาน -> HR ตรวจสิทธิ์ -> นพ.สสจ./ผู้บริหารลงนาม)
- 📅 **Real-time Holiday & Team Leave Calendar:** ปฏิทินวันลาของกลุ่มงาน แสดงผลแบบเรียลไทม์ควบคู่กับวันหยุดราชการ พร้อมระบบคำนวณวันลาที่ถูกต้องตามระเบียบ ก.พ.
- 🌓 **Shadcn UI Dual Themes:** สลับธีมสว่าง (Light) และธีมมืด (Dark) ได้อย่างสมบูรณ์แบบ พร้อมโหมดตามค่าเครื่อง (System)

---

## บทที่ 1: คู่มือสำหรับบุคลากรทั่วไป (Staff Manual)

### 1.1 การเข้าสู่ระบบ (Authentication)
ระบบกำหนดรูปแบบการเข้าใช้งานหลัก:
1. **เข้าสู่ระบบด้วย Provider ID (SSO กระทรวงสาธารณสุข - ค่าเริ่มต้นหลัก):**
   - แตะที่ปุ่ม *"เข้าสู่ระบบด้วย Provider ID (SSO)"*
   - ระบบจะนำท่านไปยังหน้ายืนยันตัวตนกลางของ สธ. (MOPH Provider ID)
   - เมื่อยืนยันตัวตนสำเร็จ จะถูกส่งกลับมายัง PWA พร้อมเข้าใช้งานระบบทันทีอย่างสะดวกและปลอดภัย
2. **โหมดเข้าสู่ระบบสำรองฉุกเฉิน (Emergency Password Login):**
   - กรณีระบบ Provider ID ของส่วนกลางเกิดเหตุขัดข้อง ผู้ดูแลระบบสามารถเปิดโหมดฉุกเฉินผ่านฐานข้อมูล (`app_settings.enable_password_login = '1'`) เพื่อเปิดฟอร์มเข้าสู่ระบบสำรอง
   - เมื่อเปิดโหมดฉุกเฉิน บุคลากรจะสามารถเข้าสู่ระบบด้วย **เลขประจำตัวประชาชน 13 หลัก** และ **รหัสผ่าน** ได้ทันที

> [!TIP]
> บนสมาร์ตโฟน ระบบจะมีระบบจำสถานะการล็อกอินนานถึง **7 วัน** พร้อมต่ออายุอัตโนมัติ ทำให้ไม่ต้องล็อกอินใหม่ทุกครั้งที่เปิดใช้งาน

---

### 1.2 การติดตั้งแอปพลิเคชันลงบนมือถือ (PWA Installation)
เพื่อให้การใช้งานสะดวกเสมือนแอปพลิเคชันจริงบนหน้าจอมือถือ:
- **สำหรับ iOS (iPhone / iPad):**
  1. เปิดเบราว์เซอร์ **Safari** แล้วเข้าไปที่หน้าเว็บ PWA
  2. แตะปุ่ม **Share (ไอคอนสี่เหลี่ยมมีลูกศรชี้ขึ้น)** ที่แถบด้านล่าง
  3. เลื่อนลงมาเลือกคำสั่ง **"เพิ่มไปยังหน้าจอโฮม" (Add to Home Screen)**
  4. แตะปุ่ม "เพิ่ม" (Add) ที่มุมขวาบน
- **สำหรับ Android:**
  1. เปิดเบราว์เซอร์ **Google Chrome**
  2. แตะปุ่มเมนู 3 จุด มุมขวาบน
  3. เลือกคำสั่ง **"ติดตั้งแอปพลิเคชัน" (Install App)** หรือ "เพิ่มลงในหน้าจอหลัก"

---

### 1.3 การใช้งานศูนย์รวมระบบงาน (App Launcher)
หน้าระบบงานเปรียบเสมือนหน้าจอหลักของระบบ:
- **การเข้าใช้งานระบบงานย่อย:** แตะที่ไอคอนแอป (เช่น *e-Payslip*, *ระบบจองห้องประชุม Smart Meeting*, *ระบบบริหารโครงการ*) เพื่อเปิดใช้งาน โดยระบบจะเปิดผ่าน In-App Container หรือส่งต่อไปยังระบบปลายทางด้วยระบบ Single Sign-On (SSO) อัตโนมัติโดยไม่ต้องกรอกรหัสผ่านซ้ำ
- **การจัดลำดับไอคอน (Drag & Drop):**
  - แตะค้างที่ไอคอนแอปที่ต้องการ แล้วลากสลับตำแหน่งไปยังตำแหน่งที่ท่านถนัด
  - ระบบจะจำลำดับของเครื่องนั้นไว้ใน `localStorage` อัตโนมัติ

---

### 1.4 ข้อมูลส่วนตัว, สิทธิวันลาสะสม และการเลือกกลุ่มงาน (Profile Tab)
เมื่อแตะที่แท็บ **"โปรไฟล์ (ข้อมูลส่วนตัว)"**:
- แสดงชื่อ-สกุล, ตำแหน่ง, วันบรรจุราชการ และอายุราชการที่คำนวณอย่างถูกต้อง
- **การเลือกกลุ่มงานของตนเอง (Self-Service Department):** บุคลากรสามารถเลือกหรือปรับเปลี่ยนกลุ่มงานที่ตนสังกัดได้ด้วยตนเองจาก Dropdown (รวมถึงตัวเลือก *"ปฏิบัติงานที่อื่น"* กรณีช่วยราชการ) แล้วกดบันทึก ข้อมูลจะซิงค์กับฐานข้อมูลกลางทันที
- **การตรวจสอบสิทธิ์ระบบงาน (My RBAC Permissions Overview):** แสดงการ์ดรายการระบบงานที่ตนเองได้รับมอบหมายสิทธิ์ พร้อมป้ายบทบาทและสีประจำระบบงานอย่างชัดเจน
- **กล่องสรุปสิทธิวันลาประจำปีงบประมาณ:**
  - สิทธิวันลาพักผ่อนประจำปี (10 วันทำการ)
  - วันลาสะสมยกยอดมาจากปีก่อนหน้า
  - จำนวนวันลาที่ใช้ไปแล้ว และวันลาคงเหลือ
  - เพดานสิทธิสะสมสูงสุด (20 วันสำหรับอายุงาน < 10 ปี, 30 วันสำหรับอายุงาน >= 10 ปี)

---

### 1.5 การสลับหน่วยงานปฏิบัติงานจริง (Active Organization Switcher)
สำหรับบุคลากรที่มีข้อมูลในระบบ Provider ID สังกัดมากกว่า 1 แห่ง (เช่น มีตำแหน่งทั้ง สสจ. และ รพ./สสอ.):
1. เปิดแท็บ **"โปรไฟล์"**
2. เลื่อนลงมาที่การ์ด **"หน่วยงานสำหรับปฏิบัติงานจริง (Active Organization)"**
3. ระบบจะแสดงรายชื่อหน่วยงานทั้งหมดที่ท่านมีรายชื่อ
4. แตะปุ่ม **"สลับมาใช้นี้"** ที่หน่วยงานที่ต้องการ
5. ข้อมูลนี้จะถูกบันทึกและส่งต่อไปยังระบบสลิปเงินเดือน (e-Payslip) และ e-suc1 เพื่อดึงข้อมูลหน่วยงานให้ตรงกับที่ท่านปฏิบัติงานจริง

---

### 1.6 การเขียนและยื่นใบลาออนไลน์ (Leave Application)
1. ไปที่แท็บ **"ระบบงาน"** แล้วแตะที่ไอคอน **"ระบบการลาออนไลน์"**
2. **ข้อกำหนดสำคัญ (บังคับระบุกลุ่มงาน):** หากท่านยังไม่ได้ระบุกลุ่มงานสังกัด ระบบจะแจ้งเตือนและนำทางไปยังหน้าโปรไฟล์เพื่อให้เลือกกลุ่มงานก่อน จึงจะสามารถเปิดแบบฟอร์มยื่นคำขอลาได้
3. แตะปุ่ม **"+ เขียนใบลาใหม่"**
4. กรอกข้อมูลในแบบฟอร์ม:
   - **ประเภทการลา:** เลือกระหว่าง *ลาพักผ่อน*, *ลาป่วย*, *ลากิจส่วนตัว*, *ลาคลอดบุตร*, หรือ *ลาอุปสมบท*
   - **ช่วงวันลา:** เลือกวันที่เริ่มต้น และวันที่สิ้นสุด
     - *ลาครึ่งวัน:* สามารถเลือกช่วงเช้า หรือช่วงบ่ายได้ (ระบบจะนับ 0.5 วัน)
     - *การเลือกวันย้อนหลัง:* ลาป่วยสามารถย้อนหลังได้ไม่เกิน 7 วัน ส่วนการลาประเภทอื่นต้องยื่นล่วงหน้า
   - **เหตุผลการลา:** ระบุเหตุผลสั้นกระชับ
   - **ผู้ปฏิบัติหน้าที่แทน (ยกเว้นลาป่วยไม่ต้องเลือก):** คัดเลือกเพื่อนร่วมงานหรือหัวหน้ากลุ่มงานในสังกัดเดียวกันเพื่อมอบหมายหน้าที่แทน
   - **สถานที่ติดต่อและเบอร์โทรศัพท์:** ระบบจะจดจำค่าเดิมที่เคยพิมพ์ไว้ให้อัตโนมัติ
5. **ตรวจสอบการคำนวณวันลา:** ระบบจะคำนวณวันทำการ หักวันเสาร์-อาทิตย์ และหักวันหยุดนักขัตฤกษ์ให้แบบเรียลไทม์ พร้อมแสดงวันคงเหลือ
6. แตะปุ่ม **"ส่งคำขอลา"**

---

### 1.7 การติดตามผลและการรับมอบหมายงานแทน
- **การติดตามสถานะ:** แตะดูที่รายการใบลาของตนเอง หรือกดที่ปุ่ม **"ไทม์ไลน์"** เพื่อดู Leave Stepper 4 ขั้นตอน แสดงชัดเจนว่าคำขออยู่ที่ใคร (ผู้ปฏิบัติหน้าที่แทน -> หัวหน้ากลุ่มงาน -> HR -> ผู้บริหาร)
- **การปฏิบัติหน้าที่แทน:** หากมีเพื่อนร่วมงานระบุให้ท่านปฏิบัติหน้าที่แทน จะมีรายการขึ้นในกล่อง *"งานที่ได้รับมอบหมายแทน"* ให้ท่านกดตรวจสอบและกด **"ตอบรับ"** เพื่อให้คำขอเดินทางต่อไปยังหัวหน้ากลุ่มงาน
- **การเปิดรับแจ้งเตือน Web Push:** ไปที่แท็บ *"ตั้งค่า"* เลื่อนไปที่หัวข้อการแจ้งเตือน แล้วแตะปุ่ม **"เปิดรับการแจ้งเตือนบนอุปกรณ์นี้"** เพื่อให้มีข้อความเตือนเมื่อใบลาได้รับการอนุมัติ

---

### 1.8 ปฏิทินภาพรวมการลาของกลุ่มงาน (Team Leave Calendar)
- ในหน้าระบบการลา สามารถเปิดดู **"ปฏิทินการลาของกลุ่มงาน"** เพื่อดูภาพรวมว่าในแต่ละวันของเดือน มีเพื่อนร่วมงานคนใดลาบ้าง (แสดงแยกสีตามประเภทการลา เช่น สีเขียว = ลาพักผ่อน, สีฟ้า = ลากิจ, สีเหลือง = ลาป่วย)
- แตะที่ช่องวันในปฏิทินเพื่อเปิดดูรายชื่อและรายละเอียดของผู้ลาในวันนั้นๆ เพื่อวางแผนงานล่วงหน้าได้อย่างมีประสิทธิภาพ
- บุคลากรทั่วไปจะสามารถดูได้เฉพาะกลุ่มงานของตนเองเพื่อความเป็นส่วนตัวของข้อมูล

---

### 1.9 การเปิดดูคู่มือการใช้งานระบบ (Interactive User Manual)
- สามารถเปิดอ่านคู่มือการใช้งานระบบฉบับเต็มได้ตลอดเวลาผ่านแท็บ **"ตั้งค่า"** หัวข้อ **"คู่มือการใช้งานระบบ (User Manual)"**
- หน้าต่างคู่มือจะแสดงผลแบบ Responsive สวยงาม พร้อมสารบัญด้านข้าง (Sticky Sidebar บนคอมพิวเตอร์ / Drawer Sheet บนมือถือ) รองรับทั้งธีมสว่างและธีมมืดอย่างสมบูรณ์แบบ

---

## บทที่ 2: คู่มือสำหรับหัวหน้ากลุ่มงาน (Department Head Manual)

### 2.1 กล่องข้อความรอพิจารณา (Approval Inbox)
เมื่อมีบุคลากรในกลุ่มงานยื่นคำขอลา (และผู้ปฏิบัติหน้าที่แทนกดยอมรับแล้ว หรือกรณีลาป่วย):
1. ในหน้า **"ระบบการลาออนไลน์"** จะมีป้ายตัวเลขสีส้มแสดงจำนวนคำขอรอพิจารณา
2. ในส่วนหัวข้อ **"รายการรอการพิจารณา (Approval Inbox)"** จะแสดงรายการคำขอของสมาชิกในกลุ่มงานของท่าน

### 2.2 การพิจารณาเห็นชอบคำขอลา
1. แตะที่การ์ดคำขอลาที่ต้องการพิจารณา
2. หน้าต่าง Bottom Sheet **"พิจารณาคำขอลา"** จะเปิดขึ้นมา
3. ตรวจสอบข้อมูล: ชื่อผู้ขอลา, ช่วงวันที่ขอลา, จำนวนวันลาจริง, สถิติวันลาคงเหลือ, และผู้ปฏิบัติหน้าที่แทน
4. กรอกความเห็นประกอบ (ถ้ามี) ในช่อง *"ความเห็น / คำสั่งประกอบการพิจารณา"*
5. เลือกดำเนินการ:
   - **เห็นชอบ (ปุ่มสีเขียว):** คำขอจะถูกส่งต่อไปยังกลุ่มงานบริหารทรัพยากรบุคคล (HR) ทันที
   - **ไม่อนุมัติ / ส่งกลับ (ปุ่มสีแดง):** ระบบจะยกเลิกคำขอพร้อมบันทึกเหตุผล และส่งข้อความแจ้งเตือนไปยังผู้ขอลา

### 2.3 ประวัติการพิจารณา (Supervisor History)
- แตะที่แท็บย่อย **"ประวัติการพิจารณา"** เพื่อดูรายการคำขอลาในอดีตทั้งหมดที่ท่านเคยพิจารณาไปแล้ว พร้อมตรวจสอบว่าปัจจุบันคำขอนั้นผ่าน HR และได้รับอนุมัติจากผู้บริหารแล้วหรือไม่

### 2.4 การรับมอบหมายหน้าที่แทนลูกน้องในกลุ่มงาน (Deputy Duty)
- ระบบอนุญาตให้หัวหน้ากลุ่มงานสามารถรับมอบหมายหน้าที่แทนบุคลากรในสังกัดได้ หากผู้ขอลาเลือกระบุชื่อหัวหน้ากลุ่มงานเป็นผู้ปฏิบัติงานแทน
- รายการจะปรากฏในกล่อง **"งานที่ได้รับมอบหมายแทน"** ของหัวหน้ากลุ่มงาน เพื่อให้กดตรวจสอบและกดตอบรับก่อนที่คำขอจะส่งต่อไปยังขั้นตอนพิจารณา

### 2.5 การติดตามและวางแผนผ่านปฏิทินกลุ่มงาน (Team Calendar)
- หัวหน้ากลุ่มงานสามารถดูปฏิทินการลาของสมาชิกทุกคนในกลุ่มงานของตนเอง พร้อมสลับตัวกรองระหว่าง *"ทั้งหมด"* (รวมรอพิจารณา) กับ *"อนุมัติแล้ว"* เพื่อช่วยในการวางแผนอัตรากำลังและภาระงานได้อย่างแม่นยำ

---

## บทที่ 3: คู่มือสำหรับเจ้าหน้าที่ HR ผู้รับผิดชอบงานลา (HR Leave Officer)

### 3.1 การตรวจสอบสิทธิ์วันลา (Step 4 of 4-Tier Flow)
เจ้าหน้าที่ที่ได้รับการแต่งตั้งให้เป็น **ผู้รับผิดชอบงานลา HR (Designated HR Leave Officer)** จะมีหน้าที่ตรวจสอบความถูกต้องก่อนเสนอผู้บริหาร:
1. เมื่อหัวหน้ากลุ่มงานให้ความเห็นชอบแล้ว คำขอจะปรากฏในกล่อง Inbox ของเจ้าหน้าที่ HR
2. เจ้าหน้าที่ HR ตรวจสอบความถูกต้องของสิทธิวันลาสะสม, ประวัติการลาในปีงบประมาณ, และความถูกต้องตามระเบียบ ก.พ.

### 3.2 การส่งต่อผู้บริหารและระบุผู้มีอำนาจอนุมัติ
1. ในหน้าต่างพิจารณาของ HR จะปรากฏช่องพิเศษ: **"เลือกผู้มีอำนาจอนุมัติ (นพ.สสจ. / รอง นพ.สสจ.)"**
2. เจ้าหน้าที่ HR เลือกผู้บริหารที่กำกับดูแลกลุ่มงานของผู้ขอลารายนั้นจาก Dropdown รายชื่อผู้บริหาร
3. แตะปุ่ม **"ส่งต่อผู้บริหาร / เห็นชอบ"**
4. คำขอจะถูกส่งตรงไปยังกล่อง Inbox ของผู้บริหารท่านนั้นทันที พร้อมระบบแจ้งเตือน Web Push

---

## บทที่ 4: คู่มือสำหรับผู้บริหาร / ผู้อนุมัติ (Executive / Provincial Doctor)

### 4.1 การลงนามอนุมัติคำขอลาขั้นสุดท้าย
1. ผู้บริหารเปิดหน้าระบบการลาออนไลน์ จะพบรายการคำขอที่ผ่านความเห็นชอบจากหัวหน้ากลุ่มงานและผ่านการตรวจสิทธิ์จาก HR เรียบร้อยแล้ว
2. แตะเปิดดูคำขอ ตรวจสอบความเห็นของหัวหน้ากลุ่มงานและบันทึกของ HR
3. แตะปุ่ม **"อนุมัติ"** เพื่อลงนามอนุมัติคำขอลาขั้นสุดท้าย

### 4.2 ผลของการอนุมัติ
- คำขอจะเปลี่ยนสถานะเป็น **"อนุมัติแล้ว" (Approved)**
- ระบบจะทำการ **ตัดยอดวันลาสะสม** ในตาราง `app_leave_balances` ของผู้ขอลาทันทีตามจำนวนวันทำการจริง
- ระบบจะส่งข้อความแจ้งเตือน Web Push ไปยังสมาร์ตโฟนของผู้ขอลาว่าคำขอได้รับการอนุมัติเรียบร้อยแล้ว

---

## บทที่ 5: คู่มือสำหรับผู้ดูแลระบบ (Super Admin Manual)

### 5.1 การจัดการข้อมูลบุคลากร (Users Management)
เปิดที่แท็บ **"บุคลากร"**:
- **การค้นหาและคัดกรอง:** รองรับการค้นหาตามชื่อ-สกุล, CID, กลุ่มงาน, ประเภทบุคลากร (ข้าราชการ, ลูกจ้างประจำ, พนักงานราชการ, พกส., ลูกจ้างชั่วคราว), และตัวกรองสถานะสังกัด
- **การแก้ไขข้อมูลรายบุคคล:** แตะที่ปุ่ม *"แก้ไข"* หรือรูปการ์ดบุคลากร:
  - แก้ไขตำแหน่งที่กำหนดเอง (`position_custom`)
  - กำหนดกลุ่มงานสังกัด
  - กำหนดวันเริ่มบรรจุ/วันเริ่มปฏิบัติงาน (`start_work_date`) ซึ่งจะส่งผลต่อการคำนวณอายุราชการและเพดานสิทธิ์สะสมอัตโนมัติ
  - กำหนดวันลาสะสมยกมาเริ่มต้น (`vacation_accumulated`) สำหรับผู้ที่ย้ายเข้ามาใหม่
- **บุคลากรที่ปฏิบัติงานที่อื่น (`department_id = -1`):** สามารถเลือกสังกัดเป็น *"ปฏิบัติงานที่อื่น (รพ./สสอ./หน่วยงานภายนอก)"* ได้ โดยระบบจะไม่นับรวมในยอดบุคลากรที่ตกค้าง

### 5.2 การจัดการโครงสร้างกลุ่มงาน (Departments Management)
เปิดที่แท็บ **"กลุ่มงาน"**:
- แสดงโครงสร้าง 17 กลุ่มงานตามโครงสร้างจริงของ สสจ.เพชรบุรี
- แสดงยอดสมาชิกในกลุ่มงาน และชื่อหัวหน้ากลุ่มงาน
- **การแต่งตั้งหัวหน้ากลุ่มงาน:** เปิดหน้าต่างแก้ไขกลุ่มงาน แล้วเลือกบุคลากรที่เป็นหัวหน้ากลุ่มงาน
- **การนำบุคลากรเข้า/ออกจากกลุ่มงาน:** แตะปุ่ม *"จัดการสมาชิก"* เพื่อเพิ่มหรือปลดสมาชิกในกลุ่มงานได้อย่างสะดวก

### 5.3 การแต่งตั้งผู้รับผิดชอบงานลา HR (Designated HR Officer)
1. ไปที่แท็บ **"ตั้งค่า"**
2. เลื่อนลงไปที่หัวข้อ **"ผู้รับผิดชอบงานลา HR (HR Leave Officer)"**
3. ระบบจะดึงเฉพาะรายชื่อบุคลากรที่สังกัดใน **กลุ่มงานบริหารทรัพยากรบุคคล (ID = 3)** มาแสดงใน Dropdown
4. เลือกเจ้าหน้าที่ที่ได้รับมอบหมาย แล้วแตะปุ่ม **"บันทึกผู้รับผิดชอบงานลา"**

### 5.4 การจัดการสิทธิ์ระบบงานรวมศูนย์ (Centralized RBAC)
1. ในหน้าแท็บบุคลากร แตะปุ่ม **"สิทธิ์ RBAC"** ที่การ์ดบุคลากรที่ต้องการ
2. หน้าต่างกำหนดสิทธิ์จะแสดงรายการระบบงานย่อยทั้งหมด
3. กำหนดบทบาทสิทธิ์ (เช่น `Admin`, `User`, `None`) แยกตามแต่ละระบบ
4. แตะปุ่ม **"บันทึกสิทธิ์"** ระบบจะจัดเก็บในรูปแบบ JSON 1 คนต่อ 1 แถวในตาราง `app_user_permissions` ทันที

### 5.5 การจัดการสารบัญระบบงานย่อย (Subsystems Management)
เปิดแท็บ **"จัดการระบบ"** (หรือเข้าผ่านแท็บตั้งค่า):
- สามารถ เพิ่ม, ลบ, แก้ไขชื่อระบบ, URL ปลายทาง, สีประจำแอป, ไอคอน SVG, และป้ายกำกับ (Tag)
- จัดเรียงลำดับการแสดงผลบนหน้าแรก App Launcher ด้วยปุ่มเลื่อนขึ้น/ลง
- กำหนดบทบาทสิทธิ์ย่อยประจำระบบ (System Roles)

### 5.6 การจัดการปฏิทินวันหยุดราชการ (Public Holidays Engine)
1. ในหน้าระบบการลา แตะปุ่ม **"ปฏิทินวันหยุดราชการ"**
2. สามารถตรวจสอบวันหยุดราชการประจำปี พ.ศ. 2567 - 2569
3. Super Admin สามารถเพิ่มวันหยุดกรณีพิเศษ (เช่น วันหยุดตามมติ ครม. เพิ่มเติม) โดยระบุวันที่และชื่อวันหยุด
4. วันหยุดนี้จะถูกนำไปคำนวณหักออกจากวันลาพักผ่อน/ลากิจของบุคลากรทั้งจังหวัดโดยอัตโนมัติ

### 5.7 การบังคับอัปเดตระบบและล้างแคช PWA (Force App Refresh)
เมื่อมีการอัปเดตเวอร์ชันใหม่ของระบบ:
- แตะที่ปุ่ม **รีเฟรช (ลูกศรหมุน)** ที่ Header ด้านบน หรือที่หน้าแท็บตั้งค่า
- ระบบจะทำการล้าง Service Worker Cache และดึงไฟล์ JavaScript/CSS เวอร์ชันล่าสุดจากเซิร์ฟเวอร์ทันที

### 5.8 การเข้าถึงเอกสารทางเทคนิคและสถาปัตยกรรมระบบ (Technical Documents)
- สำหรับ Super Admin เมื่อเปิดหน้าต่างคู่มือ (`manual.php`) จะปรากฏเมนู Dropdown สลับดูเอกสารทางเทคนิคและเอกสารความลับของระบบ ได้แก่ `README.md` (ภาพรวมสถาปัตยกรรม), `DEPLOY_KEY_GUIDE.md` (คู่มือ CI/CD), และ `PROJECT_HANDOVER.md` (ประวัติการพัฒนาและโครงสร้างระบบ)
- มีระบบรักษาความปลอดภัยสองชั้น ป้องกันการเข้าถึงจากบุคคลภายนอกทั้งที่ระดับ Session Authentication และ Apache Web Server Guard (`.htaccess`)
