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