0ภาพรวมระบบ
1สมัครผู้ใช้งาน
2ขอนัดหมาย (Line/Web)
3อนุมัติ / ปฏิเสธ
4Staff — นัดหมาย / Batch
5Kiosk Check-in
6รปภ. — Walk-in / Appt
7Check-out & แจ้งเตือน
8เตรียมระบบ (Setup)
0ภาพรวม Flow ทั้งระบบ (System Overview)
Line OA
@mots-vms
* ยังไม่ได้กำหนด — ต้องยืนยันกับหน่วยงาน
Web / Domain
vms.mots.go.th
* ยังไม่ได้กำหนด — ต้องยืนยันกับหน่วยงาน
สถานที่
กระทรวงการท่องเที่ยวและกีฬา
อาคารหลายชั้น · หลายกรม/กอง
📊 Master Flow — Pre-Registration (ภาพรวม)
Visitor
สมัครระบบ
→
ขอนัดหมาย
Line / Web
→
Staff รับ
Notification
→
อนุมัติ?
Yes
→
ส่ง QR Code
Line & / หรือ Email
→
Kiosk Check-in
QR/บัตร/ThaiID
→
แจ้ง Staff
Line & / หรือ Email
→
Staff กด
Check-out
→
สิ้นสุด ✓
No
→
แจ้ง Visitor
ไม่อนุมัติ
→
สิ้นสุด
🏢 ประเภทการเข้าพื้นที่ — กระทรวงการท่องเที่ยวและกีฬา
🤝
พบเจ้าหน้าที่
นัดพบบุคลากร
ภายในกระทรวง
📋
ประชุม / สัมมนา
เข้าร่วมประชุม
หรือสัมมนา
📄
ส่งเอกสาร
ส่ง/รับเอกสาร
ราชการ
🔖
อื่นๆ
ระบุเหตุผล
เพิ่มเติม
📍 ตัวอย่างสถานที่ / หน่วยงานที่ Visitor เลือกได้ (กำหนดตามจริงก่อน Go-Live)
🏛️ สำนักงาน ก / กรม ก
📍 Lobby ชั้น 1 📍 ห้องรับรอง ชั้น 2 📍 ห้องประชุม 1 ชั้น 3 → QR Code เฉพาะ: A-FL1, A-FL3-M1
🏛️ สำนักงาน ข / กรม ข
📍 Lobby ชั้น 3 📍 กอง A ชั้น 4 📍 ห้องประชุม 2 ชั้น 3 → QR Code เฉพาะ: B-FL3, B-FL4-A
🏛️ สำนักงาน ค / กรม ค
📍 Lobby ชั้น 5 📍 กอง B ชั้น 6 📍 ห้องประชุม 3 ชั้น 5 → QR Code เฉพาะ: C-FL5, C-FL6-B
📌 หมายเหตุ: QR Code แต่ละจุดเชื่อมกับ Hikvision Access Control ของพื้นที่นั้นๆ · Visitor ที่ Check-in แล้วจะเข้าได้เฉพาะพื้นที่ที่ได้รับอนุมัติ · ชื่อกรม/กอง/ห้องจริงต้องให้หน่วยงานกำหนดก่อน Setup
ช่องทางใช้งาน: Line OA Web App Self-Service Kiosk  |  ระบบแจ้งเตือน: ใช้ Email เป็นหลัก · Line เป็นช่องทางเสริม (ต้องผูกบัญชีก่อน)
🔔 ตรรกะการแจ้งเตือน (Notification Channel Logic)
📱 กรณีที่ 1 — สมัครผ่าน Line OA + ป้อน Email
  • ✓Add Friend Line OA → สมัครใช้งาน
  • ✓ระบุ Email ในขั้นตอนสมัคร
ระบบแจ้งเตือนไป:
📱 Line OA + 📧 Email
ทั้งสองช่องทางพร้อมกัน
🖥️ กรณีที่ 2 — สมัครผ่าน Web App (Email เท่านั้น)
  • ✓ลงทะเบียนที่ vms.mots.go.th
  • —ยังไม่ได้ผูก Line
ระบบแจ้งเตือนไป:
📧 Email เท่านั้น
จนกว่าจะผูก Line เพิ่มภายหลัง
🔗 กรณีที่ 3 — Web App + ผูก Line ภายหลัง
  • ✓สมัคร Web App ด้วย Email
  • +ผูก Line จาก Web App → จัดการผู้ใช้งาน
ระบบแจ้งเตือนไป:
📱 Line OA + 📧 Email
หลังผูก Line สำเร็จ
สถานการณ์ 📧 Email 📱 Line OA หมายเหตุ
สมัคร Line OA + ป้อน Email ✓ ✓ แจ้งทั้งสองช่องทางพร้อมกัน
สมัคร Line OA (ไม่มี Email) ✗ ✓ แจ้งเฉพาะ Line
สมัคร Web App (Email เท่านั้น) ✓ ✗ แจ้งเฉพาะ Email จนกว่าจะผูก Line
Web App + ผูก Line ภายหลัง ✓ ✓ หลังผูกสำเร็จ แจ้งทั้งสองช่องทาง
เปลี่ยน Line ใหม่ (ยกเลิก-ผูกใหม่) ✓ ↻ Email ทำงานตลอด · Line เปลี่ยนเป็นบัญชีใหม่
🔄 Flow การเปลี่ยน Line Account ใหม่
Web App
Login
→
หน้า
จัดการผู้ใช้งาน
→
กด "ยกเลิก
Line เดิม"
→
ระบบ Unlink
Line เดิม
→
กด "ผูก
Line ใหม่"
→
Add Friend
Line OA
→
ยืนยัน
สำเร็จ?
Yes
→
Line ใหม่
ทำงานแล้ว ✓
No
→
แจ้ง Error
ลองใหม่
📌 หมายเหตุ: ระหว่างที่ยังไม่ผูก Line ใหม่สำเร็จ ระบบยังส่งแจ้งเตือนผ่าน Email เป็นหลักได้ต่อเนื่อง ไม่มีการหยุดชะงัก
ขั้นตอน 📱 Line OA 🖥️ Web App 🖥️ Kiosk 👮 Staff / Admin
1. สมัครผู้ใช้งาน Add Friend @mots-vms → เลือกประเภท → กรอกข้อมูล + Email → ได้ Rich Menu · แจ้งเตือน: Line + Email เข้า vms.mots.go.th → ลงทะเบียนด้วย Email → ผูก Line ภายหลังได้ · แจ้งเตือน: Email (จนกว่าผูก Line) — Admin สร้าง Account ให้เจ้าหน้าที่ · จัดการผูก/เปลี่ยน Line ผ่าน Web App
2. ขอนัดหมาย กด "บันทึกนัดหมาย" → เลือกประเภท → เลือกสถานที่ → กรอกฟอร์ม → รอตอบกลับ กด + เพิ่ม → เลือกประเภท → เลือกกรม/กอง/ห้อง → รอตอบกลับ — Staff สร้างรายการแทน Visitor ได้
3. อนุมัติ รับ QR Code + แจ้งผล ทาง Line และ/หรือ Email (ตามช่องทางที่ผูกไว้) รับแจ้งผลทาง Email เป็นหลัก + Line หากผูกแล้ว — Staff กดอนุมัติ/ปฏิเสธใน Line OA → ระบบส่งผ่านทุกช่องทางที่ผูกไว้
4. Check-in — — Scan QR หรือบัตร → ยืนยันตัวตน → ถ่ายภาพ → WiFi? → พิมพ์ Visit Pass (ระบุสถานที่/ชั้น) Staff ทำรายการแทน หรือ Walk-in ที่เคาน์เตอร์
5. Check-out — — — Staff กด "บันทึกออก" ใน Line OA · ระบบแจ้งทุกช่องทาง · แจ้งเตือนหากค้างสิ้นวัน
🚫 Blocklist — จุดตรวจสอบทั้ง 4 ช่องทาง
สำคัญ: ระบบตรวจ Blocklist ด้วย ชื่อ + นามสกุล (first_name + last_name) แบบ partial match, case-insensitive — ไม่ใช้เลขบัตรประชาชน เนื่องจากระบบไม่เก็บเลขบัตร · ตรวจรวมถึง ผู้ติดตาม ด้วย · ประเภท: ถาวร (permanent) และ ชั่วคราว (มีวันหมดอายุ, auto-expiry)
🖥️
① Kiosk
สแกน QR / Walk-in
กรอกชื่อ → ตรวจ Blocklist
🛡️
② Counter
เจ้าหน้าที่ รปภ.
ตรวจชื่อ+นามสกุล
📱
③ LINE OA
จองนัดหมาย
ตรวจก่อนบันทึก
👔
④ Web (Staff)
เจ้าหน้าที่สร้าง
นัดหมายให้ Visitor
Visitor / ผู้ติดตาม
ชื่อ+นามสกุล
→
Blocklist Check
partial match, case-insensitive
→
อยู่ใน
Blocklist?
No (ปกติ)
→
ดำเนินการต่อ ✓
Yes (ถูกบล็อก)
→
ปฏิเสธ + บันทึก Log
blocklist_check_logs
📌 หมายเหตุ: blocklist มี 2 ประเภท — ถาวร (permanent) ไม่มีวันหมดอายุ และ ชั่วคราว (temporary) มีวันหมดอายุ auto-expiry · ทุกการตรวจบันทึกลง blocklist_check_logs เพื่อ audit trail · จัดการผ่านหน้า /web/blocklist
✨ ฟีเจอร์ใหม่ที่เพิ่มเข้ามา:
• Auto-Approve: นัดหมายที่ไม่ต้องอนุมัติจะได้รับสถานะ "approved" ทันที
• Dynamic Form: ฟอร์มปรับอัตโนมัติตาม visit_purpose_department_rules (ซ่อน/แสดง field)
• Batch/Group: สร้างนัดหมายเป็นชุด + Arrival Dashboard ติดตามการมาถึง
• Period Mode: นัดหมายหลายวัน — check-in ได้ทุกวันใน date range
• Day Schedule: กำหนดเวลาแยกรายวัน (เช่น ผู้รับเหมา วันที่ 1: 07:00-22:00, วันที่ 2: 07:00-18:00)
• notifyOnCheckin: toggle แจ้งเตือนทีละรายการ — ปิดได้สำหรับงานคนเยอะ
• Overstay Detection: ตรวจจับ visitor ที่อยู่เกินเวลา + แจ้งเตือน staff
• PENDING_APPROVAL: Kiosk state ใหม่สำหรับ walk-in ที่ต้อง approve
• DB Tables ใหม่: appointment_groups, appointment_group_day_schedules
1การสมัครผู้ใช้งาน — Visitor & Staff
รองรับ 2 ช่องทาง: Line OA และ Web Application · Staff ต้องผ่านการตรวจสอบเลขประจำตัวพนักงาน และสถานะ Active ก่อนสมัครได้
📱 ช่องทาง A — Line OA
👤 กรณี Visitor (ผู้มาติดต่อ)
  • 1เพิ่มเพื่อน Line ID @VMS หรือ Scan QR Code
  • 2อนุญาตสิทธิ์การทำงานผ่าน Line
  • 3กด "ลงทะเบียนผู้ใช้งาน"
  • 4เลือก ผู้มาติดต่อ (Visitor)
  • 5ระบุ ชื่อ-นามสกุล, บริษัท, เบอร์โทร
  • ✓สมัครสำเร็จ → ได้ Rich Menu Visitor
👮 กรณี Staff (พนักงาน) — มีขั้นตอนเพิ่มเติม
  • 1เพิ่มเพื่อน Line ID @VMS หรือ Scan QR Code
  • 2อนุญาตสิทธิ์การทำงานผ่าน Line
  • 3กด "ลงทะเบียนผู้ใช้งาน"
  • 4เลือก พนักงาน (Staff)
  • 5ระบุเลขประจำตัวพนักงาน (Employee ID)
  • 6ระบบตรวจสอบกับฐานข้อมูลพนักงาน → สถานะ Active?
  • ✓พบ + Active → ระบุชื่อ, แผนก, เบอร์โทร → สมัครสำเร็จ
  • ✗ไม่พบ / Inactive → แจ้งข้อผิดพลาด ไม่อนุญาตให้สมัคร
Rich Menu — Visitor
📋 บันทึกนัดหมาย
📅 รายการนัดหมาย
👤 ข้อมูลส่วนตัว
Rich Menu — Staff
✅ อนุมัติรายการ
📋 รายการผู้เข้าพบ
🔔 การแจ้งเตือน
🚪 บันทึกออกพื้นที่
🖥️ ช่องทาง B — Web Application
👤 กรณี Visitor
  • 1เข้าเว็บ → กด "ลงทะเบียน"
  • 2เลือก Visitor
  • 3กรอกชื่อ, อีเมล, บริษัท, เบอร์โทร
  • ✓กดยอมรับ → สมัครสำเร็จ → Login ได้
👮 กรณี Staff — มีขั้นตอนเพิ่มเติม
  • 1เข้าเว็บ → กด "ลงทะเบียน"
  • 2เลือก พนักงาน (Staff)
  • 3ระบุเลขประจำตัวพนักงาน (Employee ID)
  • 4ระบบตรวจสอบสถานะ Active กับฐานข้อมูล HR
  • ✓Active → กรอกอีเมล, แผนก → กดยอมรับ → สมัครสำเร็จ
  • ✗ไม่พบ / Inactive → แจ้งเตือน ไม่อนุญาตให้สมัคร
Admin: สามารถสร้าง / จัดการ Account Staff ได้โดยตรงผ่าน Admin Panel
Web App แสดงสถานะ 3 แทป: นัดหมาย รอการอนุมัติ · กำลังเข้าพบ Check-in แล้ว · ประวัติทั้งหมด Check-out + ยกเลิก
📊 Flow การสมัครผู้ใช้งาน (เน้นขั้นตอน Staff)
เริ่มต้น
↓
เลือกช่องทาง
Line / Web
↓
ประเภท
ผู้ใช้งาน?
→
Visitor
กรอกข้อมูล
ส่วนบุคคล
↓
ข้อมูลถูกต้อง?
Yes
↓
สมัครสำเร็จ
Rich Menu Visitor
No
↓
แจ้ง Error
Staff
ระบุ
Employee ID
↓
ระบบตรวจสอบ
ฐานข้อมูล HR
↓
พบ + Active?
Yes
↓
กรอกข้อมูล
เพิ่มเติม
↓
สมัครสำเร็จ
Rich Menu Staff
No
↓
ไม่พบ /
Inactive
ไม่อนุญาต

🔗 การจัดการ Line Account — ผูก / เปลี่ยน / ยกเลิก
หลักการ: ระบบใช้ Email เป็น Primary Key ของบัญชีผู้ใช้ · Line เป็นช่องทางแจ้งเตือนเสริม · สามารถผูก เปลี่ยน หรือยกเลิก Line ได้ตลอดเวลาผ่าน Web App โดยไม่กระทบข้อมูลบัญชีหลัก
➕ ผูก Line (ครั้งแรก / หลังสมัคร Web)
  • 1Login Web App → จัดการผู้ใช้งาน
  • 2กดปุ่ม "ผูก Line Account"
  • 3ระบบ Redirect ไปหน้า Line Login / Add Friend
  • 4อนุญาตสิทธิ์ → ระบบดึง Line User ID
  • ✓ผูกสำเร็จ → แจ้งเตือนผ่าน Line + Email
🔄 เปลี่ยน Line Account ใหม่
  • 1Login Web App → จัดการผู้ใช้งาน
  • 2กดปุ่ม "ยกเลิก Line เดิม"
  • 3ยืนยันการยกเลิก → ระบบ Unlink Line เดิม
  • 4กดปุ่ม "ผูก Line ใหม่"
  • 5Add Friend @mots-vms ด้วยบัญชี Line ใหม่
  • ✓ยืนยันสำเร็จ → Line ใหม่ทำงานแทน
⚠️ ระหว่างเปลี่ยน ระบบยังส่ง Email ได้ต่อเนื่อง ไม่มีการหยุดชะงัก
🔓 ยกเลิก Line (ไม่ใช้แล้ว)
  • 1Login Web App → จัดการผู้ใช้งาน
  • 2กดปุ่ม "ยกเลิก Line Account"
  • 3ยืนยันการยกเลิก
  • ✗ระบบหยุดส่งแจ้งเตือนผ่าน Line
  • ✓ระบบยังส่ง Email ได้ตามปกติ
บัญชีหลัก (Email) ไม่ถูกลบ · ผูก Line ใหม่ได้ตลอดเวลา
📊 สถานะช่องทางแจ้งเตือนตามการผูก Line
สมัคร Web App
Email เท่านั้น
📧 Email ✓
📱 Line ✗
→
กด "ผูก Line"
Web App → จัดการผู้ใช้
→
ผูก Line สำเร็จ
📧 Email ✓
📱 Line ✓
→
เปลี่ยน Line ใหม่
ยกเลิกเดิม → ผูกใหม่
→
Line ใหม่ทำงาน
📧 Email ✓
📱 Line ใหม่ ✓
2การขอนัดหมายล่วงหน้า — Line OA & Web App

📱 ขั้นตอนผ่าน Line OA (Visitor)

  • 1กดปุ่ม "บันทึกนัดหมาย" จาก Rich Menu
  • 2เลือกประเภทการเข้าพื้นที่ Visitor Contractor เป็นต้น
  • 3ระบุ ผู้ต้องการเข้าพบ (Staff) — ชื่อพนักงาน/แผนก
  • 4ระบุ วันที่และเวลา ที่ต้องการ
  • 5ระบุรายละเอียดรถยนต์ (ไม่บังคับ)
  • 6ระบุจำนวนผู้ติดตาม (ถ้ามี)
  • 7ระบุรายการอุปกรณ์นำเข้าพื้นที่ (ถ้ามี)
  • 8ระบุหมายเหตุ (ถ้ามี)
  • 9ตรวจสอบข้อมูล → กดบันทึก → ส่งคำขอ
  • →รับข้อความ "รอการตอบกลับ" ทาง Line ทันที

💬 ตัวอย่าง Line Messages — Visitor รับ

① หลังส่งคำขอ:
📋 คำขอนัดหมายของคุณ
สถานะ: ⏳ รอการตอบกลับ
วันที่: [วันที่] เวลา: [เวลา]
เข้าพบ: [ชื่อ Staff / แผนก]
② กรณีอนุมัติ:
✅ อนุมัติรายการแล้ว
วันที่: [วันที่] [เวลา]
กรุณาแสดง QR Code ที่ Kiosk
[🔲 QR Code]
* ส่ง Email สำรองด้วย
③ กรณีไม่อนุมัติ:
❌ ไม่อนุมัติรายการ
วันที่: [วันที่]
หมายเหตุ: [เหตุผล]
* ส่ง Email แจ้งด้วย
📊 Flow (Line OA)
Visitor กด
Rich Menu
→
กรอกฟอร์ม
นัดหมาย
→
ระบบบันทึก
ส่งคำขอ
→
Visitor รับ
"รอตอบกลับ"
→
Staff รับ
Notification
→
Staff
อนุมัติ?
Yes
→
ส่ง QR Code
Line + Email
No
→
แจ้ง Visitor
Line + Email
🚫 Blocklist Check (LINE OA): ระบบตรวจสอบ Blocklist ด้วย ชื่อ+นามสกุล (partial match, case-insensitive) ก่อนบันทึกคำขอนัดหมาย — หากชื่อ Visitor หรือผู้ติดตามตรงกับ Blocklist ระบบจะ ปฏิเสธทันที พร้อมบันทึก log
✨ Auto-Approve & Dynamic Form:
• ถ้า วัตถุประสงค์ + แผนก ที่เลือก มี require_approval = false → นัดหมายอนุมัติทันที (ไม่ต้องรอ Tab 3)
• ถ้า require_person_name = false → ฟอร์มซ่อน field "ผู้ที่จะพบ"
• ระบบดึง visit_purpose_department_rules แบบ real-time เมื่อเลือก วัตถุประสงค์ + แผนก
3การอนุมัติ / ปฏิเสธ — Staff (เจ้าหน้าที่ผู้รับผิดชอบ)
Staff = พนักงานที่ Visitor ระบุว่าต้องการเข้าพบ · รับ Notification ทาง Line OA พร้อมรายละเอียดคำขอ

✅ ขั้นตอนการอนุมัติ (Staff ผ่าน Line OA)

  • 1Staff รับ Line Notification แจ้งคำขอนัดหมายจาก Visitor
  • 2กดปุ่ม "ทำรายการ | Action" เพื่อเปิดฟอร์มตรวจสอบ
  • 3ตรวจสอบรายละเอียดข้อมูลการขอนัดหมาย
  • 4แก้ไข/ปรับปรุงข้อมูล Visitor (ถ้ามี)
  • 5เพิ่มรายการรับรอง + ห้องประชุม เพื่อแจ้ง GA (ถ้ามี)
  • ✓กดปุ่ม "อนุมัติรายการ"
    → ระบบส่ง QR Code ทาง Line + Email ให้ Visitor ทันที
  • ✗หรือกดปุ่ม "ไม่อนุมัติ"
    → ระบบแจ้ง Visitor ทาง Line + Email

💬 Line Notification ที่ Staff รับ

🔔 คำขอนัดหมายใหม่
ผู้ขอ: [ชื่อ Visitor] บริษัท [ชื่อบริษัท]
วันที่: [วันที่] เวลา: [เวลา]
ประเภท: Visitor / ผู้มาติดต่อ
ผู้ติดตาม: [จำนวน] คน
รถยนต์: [ทะเบียน] (ถ้ามี)
หมายเหตุ: [ข้อความ]

📊 Flow การอนุมัติ

Staff รับ
Notification
→
กด Action
ตรวจสอบ
→
อนุมัติ?
Yes
→
ส่ง QR Code
Line + Email
No
→
แจ้ง Visitor
ปฏิเสธ
✨ Auto-Approve Logic:
• ถ้า visit_purpose_department_rules.require_approval = false → Tab นี้ถูกข้าม — นัดหมายเข้าสู่สถานะ "approved" ทันทีเมื่อสร้าง
• ถ้า require_approval = true → ส่งแจ้งเตือนไป approver group (กลุ่มผู้อนุมัติ) ผ่าน LINE / Email / Web-app
• Officer ที่มี canApprove = true ใน approver group สามารถอนุมัติ/ปฏิเสธได้
4Staff — สร้างนัดหมาย / Batch Import Excel
👔 Staff (พนักงานหน่วยงาน) ใช้ Web App สร้างนัดหมายล่วงหน้าแทน Visitor หรือ Import รายชื่อกลุ่ม · Visitor Check-in เองที่ Kiosk (Tab 5) หรือผ่าน Counter รปภ. (Tab 6)
👔 Staff (พนักงาน) — สร้างนัดหมายแทน Visitor: เจ้าหน้าที่สร้างนัดหมายให้ Visitor ทีละรายการผ่าน Web App → ส่ง QR ให้ Visitor → Visitor Check-in เองที่ Kiosk

👔 ขั้นตอน — Staff สร้างนัดหมายแทน

  • 1Staff (พนักงาน) Login Web App → กด "+ สร้างนัดหมาย"
  • 2กรอกข้อมูล Visitor: ชื่อ, บัตร/Passport, บริษัท, เบอร์โทร
  • 3เลือกประเภทการติดต่อ + ผู้ที่จะพบ + วันเวลา + สถานที่
  • 4อนุมัติรายการ (Staff อนุมัติเองได้ หรือส่งให้ผู้รับผิดชอบอนุมัติ)
  • ✓ระบบส่ง QR Code + รายละเอียดให้ Visitor ทาง Line และ/หรือ Email
  • →Visitor นำ QR Scan ที่ Kiosk → Tab 5 นัดหมาย A (QR)
  • →หรือ Visitor ใช้บัตรที่ Kiosk → Tab 5 นัดหมาย B (บัตร)
  • →หรือ รปภ. ค้นหานัดหมายที่ Counter → Tab 6 Appointment
🚫 Blocklist Check (Staff สร้างนัดหมาย): ระบบตรวจ Blocklist ด้วย ชื่อ+นามสกุล (partial match, case-insensitive) ของ Visitor และ ผู้ติดตามทุกคน ก่อนบันทึกนัดหมาย — หากพบชื่อใน Blocklist จะ ไม่สามารถสร้างนัดหมายได้ พร้อมบันทึก log

📊 Flow — Staff สร้างนัดหมายแทน

Staff (พนักงาน) Login Web App
↓
กรอกข้อมูล Visitor
ชื่อ / บัตร / วัตถุประสงค์ / วันเวลา
↓
อนุมัติรายการ
↓
ส่ง QR Code ให้ Visitor
Line และ/หรือ Email
↓
Visitor Check-in ที่ไหน?
Kiosk (QR)
↓
Tab 5B
Kiosk (บัตร)
↓
Tab 5C
Counter รปภ.
↓
Tab 6
✨ Dynamic Form Rules:
• require_person_name = false: ซ่อน field "ผู้ที่จะพบ" — ไม่ต้องเลือก host
• require_approval = false: แสดง badge "อนุมัติอัตโนมัติ" — ไม่ต้องรอ
• Period Mode: เลือก entryMode = "period" + กำหนด dateEnd ได้ถ้า purpose อนุญาต
• notifyOnCheckin toggle: checkbox "แจ้งเตือนเมื่อ Visitor Check-in"
5Kiosk Check-in — นัดหมาย & Walk-in
ℹ️ ภาพรวม: Kiosk รองรับ 2 โหมด — ① มีนัดหมายล่วงหน้า (ค้นหาด้วย QR Code หรือบัตร) และ ② Walk-in ไม่มีนัดหมาย (ลงทะเบียนใหม่ทั้งหมด) · หน้าจอแรกให้ผู้มาติดต่อเลือกโหมด · ทุกโหมดต้องยอมรับ PDPA ก่อน
⚠️ สำคัญ: ยืนยันตัวตนเฉพาะ ผู้ติดต่อหลัก 1 คนเท่านั้น · หากลงทะเบียนไว้แค่ชื่อ-นามสกุล ระบบตรวจสอบเฉพาะชื่อนามสกุล · ชื่อไม่ตรง → "ไม่พบข้อมูลการนัดหมาย" · ทุกหน้าจอมี Timeout อัตโนมัติ

🚶 ขั้นตอน — Walk-in (ไม่มีนัดหมาย) · 8 ขั้นตอน

  • 1หน้าจอต้อนรับ → เลือก "ไม่มีนัดหมาย"
  • 2อ่านและยอมรับ PDPA / นโยบายคุ้มครองข้อมูล (120 วิ)
  • 3เลือกวิธียืนยันตัวตน: บัตรประชาชน / Passport / ThaiID App (60 วิ)
  • 4เสียบบัตร/สแกนเอกสาร → ระบบอ่านข้อมูล (60 วิ)
  • 5Preview ข้อมูลที่อ่านได้ → ตรวจสอบ Blocklist ด้วยชื่อ+นามสกุล (partial match, case-insensitive, ไม่ใช้เลขบัตร) → ยืนยัน (120 วิ)
  • 6เลือก วัตถุประสงค์ + กอง/สำนัก ที่ต้องการติดต่อ (60 วิ)
  • 7ถ่ายภาพใบหน้า + ถ้าวัตถุประสงค์รองรับ WiFi → เลือกรับ/ไม่รับ (60 วิ)
  • 8สำเร็จ → พิมพ์ Visit Pass หรือส่งผ่าน LINE (10-30 วิ auto)
💡 วัตถุประสงค์ที่รองรับ: ติดต่อราชการ · ประชุม/สัมมนา · ส่งเอกสาร/พัสดุ · ผู้รับเหมา/ซ่อมบำรุง · สมัครงาน/สัมภาษณ์ · รับ-ส่งสินค้า (กรองตามค่าที่ตั้งใน Settings)
Visitor มาถึง Kiosk
↓
เลือก "ไม่มีนัดหมาย"
↓
ยอมรับ PDPA
นโยบายคุ้มครองข้อมูลส่วนบุคคล
↓
เลือกวิธียืนยันตัวตน
🪪 บัตร ปชช. / 📕 Passport / 📱 ThaiID App
↓
ระบบอ่านข้อมูลจากเอกสาร
↓
อ่านสำเร็จ?
Yes
↓
Preview ข้อมูล
+ ตรวจ Blocklist
ชื่อ+นามสกุล
↓
อยู่ใน Blocklist?
No (ปกติ)
↓
เลือกวัตถุประสงค์
+ กอง/สำนัก
↓
ถ่ายภาพใบหน้า
↓
วัตถุประสงค์
รองรับ WiFi?
Yes
↓
รับ WiFi?
Yes
↓
Pass+WiFi
No
↓
Visit Pass
No
↓
Visit Pass
↓
ผูก LINE?
Yes
↓
เลือก
พิมพ์/ส่ง LINE
No
↓
พิมพ์อัตโนมัติ
↓
Check-in สำเร็จ ✓
Yes (บล็อก)
↓
ปฏิเสธเข้าพื้นที่
Fail
↓
อ่านไม่สำเร็จ
↓
ลองใหม่ / กลับหน้าแรก
ขั้นตอน หน้าจอ (Screen) อุปกรณ์ที่ใช้ Timeout รายละเอียด
1 Welcome
หน้าจอต้อนรับ
— — แสดง 2 ปุ่มใหญ่: "ไม่มีนัดหมาย" (Walk-in) และ "มีนัดล่วงหน้า" (Appointment)
2 PDPA Consent
ยอมรับนโยบาย
— 120 วินาที แสดงนโยบายคุ้มครองข้อมูลส่วนบุคคล (PDPA) แบบ scroll ✅ ยอมรับ → ไปต่อ / ❌ ไม่ยอมรับ → กลับหน้าต้อนรับ · ระบบตรวจ display_channels ของ PDPA version ก่อนแสดง — เฉพาะ PDPA ที่กำหนด channel "kiosk" เท่านั้นที่แสดงบน Kiosk
3 Select ID Method
เลือกวิธียืนยันตัวตน
— 60 วินาที 3 ตัวเลือก: 🪪 บัตรประชาชน (Smart Card Reader) · 📕 Passport (MRZ/RFID) · 📱 ThaiID App (QR Code) — กรองตามค่าที่ตั้งใน Settings
4 ID Verification
ยืนยันตัวตน
Smart Card / Passport Reader / QR Scanner 60 วินาที แสดง animation รอการอ่านเอกสาร · countdown timer · เตือนเมื่อเหลือ <15 วินาที · มีปุ่ม Demo สำหรับจำลอง
5 Data Preview
ตรวจสอบข้อมูล
— 120 วินาที แสดงข้อมูลจากบัตร: รูป + ชื่อ (ไทย/อังกฤษ) + เลขบัตร (mask) + ชนิดเอกสาร · ตรวจ Blocklist ด้วยชื่อ+นามสกุล (partial match, case-insensitive, ไม่ใช้เลขบัตร) อัตโนมัติ
6 Select Purpose
เลือกวัตถุประสงค์
— 60 วินาที 2 ขั้นตอนย่อย: ① เลือกวัตถุประสงค์ (grid 2 คอลัมน์) → ② เลือกกอง/สำนัก (ถ้ามีหลายกองรองรับ จะแสดงเพิ่ม ถ้ามีกองเดียว auto-select)
7 Face Capture
ถ่ายภาพ + WiFi
USB Camera 60 วินาที กล้อง live + กรอบแนะนำ + ถ่ายภาพ · ถ้าวัตถุประสงค์มี WiFi → แสดง toggle รับ/ไม่รับ WiFi (SSID: MOTS-Guest)
8 Success
สำเร็จ
Thermal Printer (80mm) 10-30 วิ auto ถ้าไม่ผูก LINE → พิมพ์อัตโนมัติ (10 วิ กลับหน้าแรก) · ถ้าผูก LINE → ถามเลือก: พิมพ์ Pass / ส่งผ่าน LINE (30 วิ auto กลับ)
⚡ PENDING_APPROVAL State (ใหม่):
• Walk-in ที่เลือกวัตถุประสงค์ + แผนก ที่มี require_approval = true → สร้าง appointment pending → เข้า state PENDING_APPROVAL
• แสดง "รายการของท่านถูกส่งไปยังผู้อนุมัติแล้ว กรุณารอ..." พร้อม spinner
• ระบบ poll GET /api/appointments/:id ทุก 10 วินาที
• ถ้าอนุมัติ → FACE_CAPTURE / ถ้าปฏิเสธ → ERROR / ถ้า timeout 5 นาที → ERROR
📅 Period Mode (นัดหมายหลายวัน):
• Appointment ที่ entryMode = "period" → แสดง "นัดหมายหลายวัน: dateStart - dateEnd"
• แสดง "วันนี้: วันที่ X/Y"
• ตรวจ: วันนี้อยู่ใน range? / มี entry วันนี้แล้ว?
• Single mode: check-in ได้ครั้งเดียวเท่านั้น

📊 เปรียบเทียบ 3 ช่องทาง Kiosk Check-in

หัวข้อ 🚶 Walk-in 📱 นัดหมาย + QR 🪪 นัดหมาย + บัตร
จำนวนขั้นตอน 8 steps 8 steps 8-9 steps
ค้นหานัดหมาย ไม่ต้อง (ลงทะเบียนใหม่) จาก QR Code จากชื่อ + เลขบัตร
เลือกวัตถุประสงค์ ✅ เลือกเอง + เลือกกอง ❌ กำหนดจากนัดหมาย ❌ กำหนดจากนัดหมาย
Data Preview ✅ แสดงข้อมูลจากบัตร ✅ แสดงข้อมูลนัดหมาย ✅ แสดงข้อมูลนัดหมาย
Blocklist Check
(ชื่อ+นามสกุล)
✅ ตรวจ Data Preview
ชื่อ+นามสกุล
⚡ ตรวจตอนยืนยันตัวตน
ชื่อ+นามสกุล
⚡ ตรวจตอนยืนยันตัวตน
ชื่อ+นามสกุล
WiFi ขึ้นกับวัตถุประสงค์ ขึ้นกับที่จองไว้ (pre-select) ขึ้นกับที่จองไว้ (pre-select)
Face Capture Timeout 60 วินาที 30 วินาที 30 วินาที
อุปกรณ์ที่ใช้ ID Reader + Camera + Printer QR Scanner + ID Reader + Camera + Printer ID Reader + Camera + Printer
6รปภ. (Counter App) — Check-in ที่เคาน์เตอร์
🛡️ เจ้าหน้าที่ รปภ. ประจำเคาน์เตอร์อาคาร · ใช้ Counter App · ทำ Check-in แทน Visitor ด้วยตนเอง · รองรับทั้ง Walk-in (ไม่มีนัด) และ Appointment (มีนัดล่วงหน้า) · ไม่ต้องยืนยันตัวตนผ่าน ThaiD — อ่านบัตรประชาชน / Passport หรือพิมพ์ชื่อ
🛡️ รปภ. — Walk-in: Visitor มาโดยไม่ได้นัดล่วงหน้า · รปภ.บันทึกข้อมูลที่เคาน์เตอร์ · ออก Visit Pass พร้อม QR Code + WiFi ทันที
🚫 Blocklist Check (Counter Walk-in): ระบบตรวจ Blocklist ด้วย ชื่อ+นามสกุล (partial match, case-insensitive) หลังรปภ. กรอกข้อมูลหรืออ่านบัตร — หากพบชื่อใน Blocklist จะ แจ้งเตือนรปภ. ทันที ไม่สามารถออก Visit Pass ได้ · ตรวจผู้ติดตามด้วย

🖥️ ขั้นตอน — Walk-in (รปภ. ทำรายการ)

① อ่านข้อมูลผู้มาติดต่อ
💳
บัตรประชาชน
เสียบบัตร Smart Card Reader
ดึงข้อมูลอัตโนมัติ
ถ้าติดตั้งอุปกรณ์
📘
Passport
Scan MRZ / เสียบอ่าน
ดึงข้อมูลอัตโนมัติ
ถ้าติดตั้งอุปกรณ์
⌨️
พิมพ์ชื่อเอง
กรณีไม่มีอุปกรณ์
หรืออุปกรณ์ขัดข้อง
Fallback เสมอ
② ข้อมูลการติดต่อ
  • Aเลือก ประเภทการติดต่อ: ติดต่อราชการ / ประชุม / ส่งเอกสาร / อื่นๆ
  • Bค้นหา ผู้ที่มาพบ / หน่วยงาน (ชื่อ Staff หรือกอง/กรม)
  • Cระบุ จำนวนผู้ติดตาม + ทะเบียนรถ (ถ้ามี)
③ ถ่ายภาพผู้มาติดต่อ
  • 1กดปุ่ม "ถ่ายภาพ" — กล้องหน้า Counter เปิด
  • 2Preview ภาพ → ยืนยัน หรือ ถ่ายใหม่
  • ✓ภาพพิมพ์ใน Visit Pass + บันทึกในระบบ
④ WiFi (ถ้ามี FortiGate)
ต้องการ WiFi
ระบบสร้าง Guest Password
พิมพ์ใน Visit Pass
ไม่ต้องการ
พิมพ์ Visit Pass ปกติ
⑤ บันทึก & พิมพ์ Visit Pass (สติ๊กเกอร์)
🖨️ Thermal Printer · กระดาษสติ๊กเกอร์ความร้อน · ความกว้าง 80 มม.
📋 ข้อมูลบน Visit Pass:
📷 รูปภาพผู้มาติดต่อ🔲 QR Code เข้าพื้นที่ 👤 ชื่อ-นามสกุล📅 วัน/เวลา Check-in 🏢 ผู้ที่มาพบ / หน่วยงาน📍 ชั้น / สถานที่ 🎫 รหัส (APT-XXX)📶 WiFi: User / Password*
* WiFi พิมพ์เฉพาะกรณีติดตั้ง FortiGate และ Visitor ต้องการ

📊 Flow — รปภ. Walk-in

Visitor มาถึงเคาน์เตอร์
↓
รปภ. เลือก "Walk-in"
ใน Counter App
↓
มีอุปกรณ์อ่านบัตร?
มี
↓
เสียบบัตร / Scan
ดึงข้อมูลอัตโนมัติ
ไม่มี/ขัดข้อง
↓
พิมพ์ชื่อด้วยตนเอง
↓
เลือกประเภท + หน่วยงาน
↓
ถ่ายภาพ → Preview → ยืนยัน
↓
ต้องการ WiFi?
ใช่
↓
สร้าง WiFi Password
ไม่
↓
กด "บันทึก & พิมพ์บัตร"
↓
พิมพ์ Visit Pass ✓
(ภาพ + QR + WiFi*)
⚙️ Option การติดตั้งอุปกรณ์ที่ Counter รปภ.
อุปกรณ์ติดตั้งไม่ติดตั้ง/ขัดข้องหมายเหตุ
💳 Smart Card Readerดึงข้อมูลอัตโนมัติพิมพ์ชื่อแทนเลขบัตร 13 หลัก
📘 Passport Reader (MRZ)ดึงข้อมูลอัตโนมัติพิมพ์ชื่อแทนชาวต่างชาติ
📷 กล้องถ่ายภาพถ่ายภาพ → พิมพ์ใน Slipข้ามขั้นตอนได้ระบบข้ามได้ถ้าไม่มีกล้อง
🖨️ Thermal Printer
กระดาษสติ๊กเกอร์ความร้อน 80 มม.
พิมพ์ Visit Passไม่พิมพ์ได้จำเป็นสำหรับ Counter
80mm width
📶 FortiGate WiFiออก WiFi Password อัตโนมัติไม่แสดง Option WiFiToggle ตามการตั้งค่า
⚡ Rule Enforcement (ใหม่):
• ก่อน check-in → ดึง visit_purpose_department_rules
• ถ้า requireApproval = true → สร้าง appointment pending + officer ที่มีสิทธิ์อนุมัติได้เลย (inline approve)
• ถ้า requirePersonName = false → ข้ามขั้นตอนระบุผู้ติดต่อได้
📅 Period Mode:
• นัดหมายหลายวัน → แสดง history วันก่อนหน้า
• ตรวจ: อยู่ใน date range? ซ้ำวันเดียวกัน?
• Period appointment ค้นหาได้ทุกวันใน range (ไม่ใช่แค่ dateStart = today)
7Check-out & การแจ้งเตือน — Line OA (e-Stamp)
หลักการ: ระบบ ไม่ตัดรายการอัตโนมัติ — Staff ต้องกดยืนยัน Check-out เอง เพื่อความถูกต้องของข้อมูลการเข้าพบ

📊 Flow Check-out

Visitor Check-in สำเร็จ ✓
↓
ส่ง Line Notification ให้ Staff
"[ชื่อ] มาถึงแล้ว" พร้อมข้อมูลนัดหมาย + ปุ่ม Check-out
↓
Staff พบ Visitor / ดูแลการเข้าพื้นที่
↓
Visitor ออกจากพื้นที่?
ออกแล้ว
↓
Staff กดปุ่ม
"บันทึกออกจากพื้นที่"
ใน Line OA (e-Stamp)
↓
Check-out ✓
บันทึกเวลาออก
ยังอยู่/ลืมกด
↓
ถึงเวลาที่กำหนด
หรือสิ้นวัน
↓
ระบบส่งแจ้งเตือน
"มีรายการค้าง"
ให้ Staff ตรวจสอบ
↓
ออกจริงแล้ว?
ใช่
↓
กดบันทึกออก ✓
ไม่
↓
ประสานงาน

💬 Line Notifications

① แจ้ง Staff เมื่อ Check-in:
✅ Visitor มาถึงแล้ว
ชื่อ: [ชื่อ Visitor]
บริษัท: [ชื่อบริษัท]
วันที่/เวลา: [วันที่ เวลา]
วัตถุประสงค์: [เหตุผล]
ผู้ติดตาม: [จำนวน] คน
② แจ้งเตือนรายการค้าง:
⚠️ มีรายการค้างในระบบ
[ชื่อ Visitor] ยังไม่ Check-out
กรุณาตรวจสอบว่าออกแล้วหรือยัง

📋 กฎสำคัญ

  • ✓ส่ง Notification ทันทีที่ Check-in สำเร็จ
  • ✓ปุ่ม Check-out ฝังใน Line OA (e-Stamp)
  • !ไม่ตัดรายการอัตโนมัติ ต้องให้ Staff กดเอง
  • !สิ้นวัน/เวลากำหนดค้าง → ระบบส่งแจ้งเตือน
  • iมีไว้ให้เจ้าหน้าที่ตรวจสอบข้อมูลการเข้าพบเอง
⚡ Overstay Detection (ใหม่):
• Cron ทุก 15 นาที ตรวจ entry ที่ checked-in อยู่
• หา timeEnd จาก: DaySchedule → Group default → Appointment → Business Hours (ตามลำดับ priority)
• ถ้า NOW > timeEnd → update status = "overstay" + แจ้งเตือน staff ผู้สร้างรายการ + host
🔔 notifyOnCheckin Toggle:
• แต่ละ appointment มี flag notifyOnCheckin (default: true, batch default: false)
• ถ้า true → แจ้ง staff เมื่อ visitor check-in / ถ้า false → ไม่แจ้ง (ดูจาก Arrival Dashboard แทน)
• Toggle ได้ทั้งระดับ group (cascade ทุกรายการ) และทีละรายการ
⏰ Auto-Expire:
• Single: dateStart < today → status = expired
• Period: dateEnd < today → status = expired
• Group: ทุก appointment expired/cancelled → group.status = completed
8ขั้นตอนการเตรียมระบบก่อนใช้งาน (System Setup Checklist)
⚠️ ต้องดำเนินการก่อน Go-Live: รายการต่อไปนี้เป็นขั้นตอนที่ต้องประสานงานระหว่างทีม VMS และหน่วยงาน (กระทรวงการท่องเที่ยวและกีฬา) ก่อนเปิดใช้งานระบบจริง
📌 ก่อน Setup ระบบ: หน่วยงานต้องจัดทำและส่งข้อมูลต่อไปนี้ให้ทีม VMS เพื่อนำเข้าระบบ (Master Data) ตามกำหนดระยะเวลาที่ตกลงกัน
📅 กำหนดระยะเวลาเตรียมข้อมูล
สัปดาห์ที่ 1–2
Kick-off
รวบรวมข้อมูล
สัปดาห์ที่ 3
Design UI &
Process Confirmation
สัปดาห์ที่ 4–10
Coding Production
สัปดาห์ที่ 10
Setup & Config
สัปดาห์ที่ 11
ทดสอบ UAT
สัปดาห์ที่ 12+
Go-Live

🏢 1. โครงสร้างองค์กรและสถานที่

รายการรูปแบบสถานะ
รายชื่อกรม / กอง / สำนัก ทั้งหมด พร้อมชั้นที่ตั้งExcel
รายการห้องประชุม พร้อมชั้น ความจุExcel
จุด Lobby / จุดรับรอง แต่ละชั้นExcel
แผนผังอาคาร (Floor Plan) ระบุตำแหน่ง Kiosk และกล้องPDF/IMG
ชื่อและรหัสสถานที่ QR Code ที่จะใช้ เช่น B-FL3-M1Excel

👤 2. รายชื่อพนักงาน (Staff Database)

⚠️ ใช้สำหรับตรวจสอบ Employee ID เมื่อสมัคร Staff · ต้องอัปเดตเมื่อมีการเปลี่ยนแปลง
ฟิลด์ที่ต้องการจำเป็น
เลขประจำตัวพนักงาน (Employee ID)บังคับ
ชื่อ-นามสกุล (ภาษาไทย)บังคับ
กรม / กอง / สำนักที่สังกัดบังคับ
ตำแหน่งงานบังคับ
อีเมลราชการบังคับ
เบอร์โทรภายในแนะนำ
สถานะ (Active / Inactive)บังคับ
ระดับสิทธิ์ใน VMS (Staff / Admin / Staff)บังคับ
รูปแบบไฟล์: Excel (.xlsx) · กำหนดส่งภายใน: สัปดาห์ที่ 1

🔐 3. ประเภทการเข้าพื้นที่ + เงื่อนไขการอนุมัติ

รายการสถานะ
รายการประเภทการเข้าพื้นที่ที่ใช้จริง เช่น พบเจ้าหน้าที่, ประชุม, ส่งเอกสาร, อื่นๆ
เงื่อนไขการอนุมัติแต่ละประเภท: ใครเป็น Staff, ระยะเวลาอนุมัติ
สิทธิ์การเข้าพื้นที่ตามประเภท: ชั้นไหน / ห้องไหน / Zone ไหน
เวลาทำการรับผู้มาติดต่อ (วัน/เวลา)
ระยะเวลาสูงสุดที่ Visitor อยู่ในพื้นที่ได้ก่อนระบบแจ้งเตือน
Mapping: ประเภทเข้าพื้นที่ → ประตู/Gate ใน Hikvision ที่เปิดให้

🌐 4. ข้อมูล Domain / Line OA

รายการสถานะ
ยืนยัน Domain name ที่จะใช้ เช่น vms.mots.go.th
จัดสรร Subdomain และขอ DNS Record จากผู้ดูแล Domain
ยืนยัน Line OA ID เช่น @mots-vms และสร้าง Official Account
ตั้งค่า Line Messaging API: Channel ID, Channel Secret, Access Token
ตั้งค่า Webhook URL ของ Line → ชี้ไปที่ VMS Server
ออกแบบ Rich Menu สำหรับ Visitor และ Staff (ภาพ + Layout)
กำหนด Email ระบบ (Sender) สำหรับส่งแจ้งเตือน Visitor

🖨️ 5. Visit Pass / สติ๊กเกอร์

📋 ข้อกำหนดระบบ (Fixed Specification)
🖨️ เครื่องพิมพ์: Thermal Printer 📏 ความกว้างกระดาษ: 80 มม. 🏷️ ประเภทกระดาษ: สติ๊กเกอร์ความร้อน 🔲 QR Code: พิมพ์ทุกใบ
รายการที่ต้องยืนยันสถานะ
ทดสอบพิมพ์กระดาษสติ๊กเกอร์ความร้อน 80 มม. ออกมาตรฐาน
ข้อมูลที่แสดง: ชื่อ, รูปภาพ, QR Code, วัน/เวลา, ชั้น/สถานที่, WiFi*
โลโก้กระทรวงและ Template สติ๊กเกอร์ (ยืนยันกับหน่วยงาน)
ทดสอบ QR Code บน Visit Pass สแกนเปิดประตู Hikvision ได้จริง
* WiFi Username/Password พิมพ์เฉพาะกรณีติดตั้ง FortiGate

📱 6. ข้อมูล Kiosk / Hardware

รายการสถานะ
IP Address / Network ของเครื่อง Kiosk แต่ละเครื่อง
ยืนยันการเชื่อมต่อ Kiosk → VMS Server (เครือข่ายภายใน)
ทดสอบอุปกรณ์: เครื่องอ่านบัตร, กล้อง, เครื่องพิมพ์

🛡️ 7. ความปลอดภัยและ PDPA

รายการสถานะ
นโยบายการเก็บข้อมูลผู้มาติดต่อ (ระยะเวลา, การลบ)
ข้อความแจ้ง PDPA Consent ที่จะแสดงบน Kiosk และ LINE OA (กำหนด display_channels แยกแต่ละ version)
ผู้รับผิดชอบ (DPO / ผู้ดูแลระบบ) พร้อมข้อมูลติดต่อ
นโยบายการเก็บภาพถ่ายของ Visitor (ระยะเวลา, การลบ)

🚫 8. ตั้งค่า Blocklist เริ่มต้น

รายการสถานะ
กำหนดรายชื่อ Blocklist เริ่มต้น (ถ้ามี) — ชื่อ+นามสกุล, เหตุผล, ประเภท (ถาวร/ชั่วคราว)
กำหนดสิทธิ์ผู้ดูแล Blocklist (Admin / Staff ที่มีสิทธิ์เพิ่ม-ลบ)
ทดสอบ Blocklist Check ทุกจุด: Kiosk, Counter, LINE OA, Web Staff
📌 หมายเหตุ: Blocklist ตรวจด้วย ชื่อ+นามสกุล (partial match, case-insensitive) ไม่ใช้เลขบัตร · จัดการผ่าน /web/blocklist · มีปุ่ม DB Schema + Flow Rule

📋 9. PDPA Consent + Display Channels

รายการสถานะ
จัดทำข้อความ PDPA Consent สำหรับ Kiosk (display_channels: ["kiosk"])
จัดทำข้อความ PDPA Consent สำหรับ LINE OA (display_channels: ["line"])
ตรวจสอบ display_channels ทำงานถูกต้อง (Kiosk แสดงเฉพาะ kiosk, LINE แสดงเฉพาะ line)
📌 PDPA Display Channels: แต่ละ PDPA version กำหนด display_channels ได้: ["kiosk"] ["line"] ["kiosk","line"] · สามารถสร้าง PDPA items ใหม่ได้ (ไม่จำกัดแค่แก้ไขของเดิม)

📊 10. ตั้งค่า Reports

รายการสถานะ
ทดสอบหน้า /web/reports — KPI cards, กราฟตามประเภท/หน่วยงาน/ช่องทาง
ตรวจสอบปุ่ม DB Schema + Flow Rule บนหน้า /web/appointments และ /web/search
📌 หน้าใหม่ที่เพิ่ม: /web/blocklist จัดการ Blocklist (DB Schema + Flow Rule) · /web/reports รายงาน KPI + กราฟ · ปุ่ม DB Schema + Flow Rule เพิ่มบน /web/appointments และ /web/search
✅ สรุปไฟล์ที่หน่วยงานต้องส่ง: โครงสร้างองค์กร.xlsx รายชื่อพนักงาน.xlsx ประเภทเข้าพื้นที่+เงื่อนไข.xlsx แผนผังอาคาร.pdf Template Visit Pass PDPA Consent Text Blocklist เริ่มต้น (ถ้ามี)
📊 ความคืบหน้า Checklist
0 / 59 รายการ (0%)
💡 วิธีใช้: กด "บันทึกลงไฟล์เดิม" → browser จะถามให้เลือกไฟล์ HTML นี้ครั้งแรก → ระบบเขียนทับไฟล์เดิมทันที · ครั้งถัดไปไม่ต้องเลือกใหม่ตลอด session