0ภาพรวม Flow ทั้งระบบ (System Overview)
Line OA
@mots-vms
* ยังไม่ได้กำหนด — ต้องยืนยันกับหน่วยงาน
Web / Domain
vms.mots.go.th
* ยังไม่ได้กำหนด — ต้องยืนยันกับหน่วยงาน
สถานที่
กระทรวงการท่องเที่ยวและกีฬา
อาคารหลายชั้น · หลายกรม/กอง
📊 Master Flow — Pre-Registration (ภาพรวม)
Visitor
สมัครระบบ
สมัครระบบ
→
ขอนัดหมาย
Line / Web
Line / Web
→
Staff รับ
Notification
Notification
→
อนุมัติ?
Yes
→
ส่ง QR Code
Line & / หรือ Email
Line & / หรือ Email
→
Kiosk Check-in
QR/บัตร/ThaiID
QR/บัตร/ThaiID
→
แจ้ง Staff
Line & / หรือ Email
Line & / หรือ Email
→
Staff กด
Check-out
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)
| สถานการณ์ | 📱 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
Login
→
หน้า
จัดการผู้ใช้งาน
จัดการผู้ใช้งาน
→
กด "ยกเลิก
Line เดิม"
Line เดิม"
→
ระบบ Unlink
Line เดิม
Line เดิม
→
กด "ผูก
Line ใหม่"
Line ใหม่"
→
Add Friend
Line OA
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
กรอกชื่อ → ตรวจ Blocklist
🛡️
② Counter
เจ้าหน้าที่ รปภ.
ตรวจชื่อ+นามสกุล
ตรวจชื่อ+นามสกุล
📱
③ LINE OA
จองนัดหมาย
ตรวจก่อนบันทึก
ตรวจก่อนบันทึก
👔
④ Web (Staff)
เจ้าหน้าที่สร้าง
นัดหมายให้ Visitor
นัดหมายให้ Visitor
Visitor / ผู้ติดตาม
ชื่อ+นามสกุล
ชื่อ+นามสกุล
→
Blocklist Check
partial match, case-insensitive
partial match, case-insensitive
→
อยู่ใน
Blocklist?
Blocklist?
No (ปกติ)
→
ดำเนินการต่อ ✓
Yes (ถูกบล็อก)
→
ปฏิเสธ + บันทึก Log
blocklist_check_logs
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
• 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
Line / Web
↓
ประเภท
ผู้ใช้งาน?
ผู้ใช้งาน?
→
Visitor
กรอกข้อมูล
ส่วนบุคคล
ส่วนบุคคล
↓
ข้อมูลถูกต้อง?
Yes
↓
สมัครสำเร็จ
Rich Menu Visitor
Rich Menu Visitor
No
↓
แจ้ง Error
Staff
ระบุ
Employee ID
Employee ID
↓
ระบบตรวจสอบ
ฐานข้อมูล HR
ฐานข้อมูล HR
↓
พบ + Active?
Yes
↓
กรอกข้อมูล
เพิ่มเติม
เพิ่มเติม
↓
สมัครสำเร็จ
Rich Menu Staff
Rich Menu Staff
No
↓
ไม่พบ /
Inactive
ไม่อนุญาต
Inactive
ไม่อนุญาต
🔗 การจัดการ Line Account — ผูก / เปลี่ยน / ยกเลิก
หลักการ: ระบบใช้ Email เป็น Primary Key ของบัญชีผู้ใช้ · Line เป็นช่องทางแจ้งเตือนเสริม · สามารถผูก เปลี่ยน หรือยกเลิก Line ได้ตลอดเวลาผ่าน Web App โดยไม่กระทบข้อมูลบัญชีหลัก
📊 สถานะช่องทางแจ้งเตือนตามการผูก Line
สมัคร Web App
Email เท่านั้น
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 / แผนก]
สถานะ: ⏳ รอการตอบกลับ
วันที่: [วันที่] เวลา: [เวลา]
เข้าพบ: [ชื่อ Staff / แผนก]
② กรณีอนุมัติ:
✅ อนุมัติรายการแล้ว
วันที่: [วันที่] [เวลา]
กรุณาแสดง QR Code ที่ Kiosk
[🔲 QR Code]
* ส่ง Email สำรองด้วย
วันที่: [วันที่] [เวลา]
กรุณาแสดง QR Code ที่ Kiosk
[🔲 QR Code]
* ส่ง Email สำรองด้วย
③ กรณีไม่อนุมัติ:
❌ ไม่อนุมัติรายการ
วันที่: [วันที่]
หมายเหตุ: [เหตุผล]
* ส่ง Email แจ้งด้วย
วันที่: [วันที่]
หมายเหตุ: [เหตุผล]
* ส่ง Email แจ้งด้วย
📊 Flow (Line OA)
Visitor กด
Rich Menu
Rich Menu
→
กรอกฟอร์ม
นัดหมาย
นัดหมาย
→
ระบบบันทึก
ส่งคำขอ
ส่งคำขอ
→
Visitor รับ
"รอตอบกลับ"
"รอตอบกลับ"
→
Staff รับ
Notification
Notification
→
Staff
อนุมัติ?
อนุมัติ?
Yes
→
ส่ง QR Code
Line + Email
Line + Email
No
→
แจ้ง Visitor
Line + Email
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 เมื่อเลือก วัตถุประสงค์ + แผนก
• ถ้า วัตถุประสงค์ + แผนก ที่เลือก มี 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 / ผู้มาติดต่อ
ผู้ติดตาม: [จำนวน] คน
รถยนต์: [ทะเบียน] (ถ้ามี)
หมายเหตุ: [ข้อความ]
ผู้ขอ: [ชื่อ Visitor] บริษัท [ชื่อบริษัท]
วันที่: [วันที่] เวลา: [เวลา]
ประเภท: Visitor / ผู้มาติดต่อ
ผู้ติดตาม: [จำนวน] คน
รถยนต์: [ทะเบียน] (ถ้ามี)
หมายเหตุ: [ข้อความ]
📊 Flow การอนุมัติ
Staff รับ
Notification
Notification
→
กด Action
ตรวจสอบ
ตรวจสอบ
→
อนุมัติ?
Yes
→
ส่ง QR Code
Line + Email
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 สามารถอนุมัติ/ปฏิเสธได้
• ถ้า 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
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"
• 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
🪪 บัตร ปชช. / 📕 Passport / 📱 ThaiID App
↓
ระบบอ่านข้อมูลจากเอกสาร
↓
อ่านสำเร็จ?
Yes
↓
Preview ข้อมูล
+ ตรวจ Blocklist
ชื่อ+นามสกุล
+ ตรวจ Blocklist
ชื่อ+นามสกุล
↓
อยู่ใน Blocklist?
No (ปกติ)
↓
เลือกวัตถุประสงค์
+ กอง/สำนัก
+ กอง/สำนัก
↓
ถ่ายภาพใบหน้า
↓
วัตถุประสงค์
รองรับ WiFi?
รองรับ WiFi?
Yes
↓
รับ WiFi?
Yes
↓
Pass+WiFi
No
↓
Visit Pass
No
↓
Visit Pass
↓
ผูก LINE?
Yes
↓
เลือก
พิมพ์/ส่ง LINE
พิมพ์/ส่ง 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
• 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 ได้ครั้งเดียวเท่านั้น
• 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 ปกติ
⑤ บันทึก & พิมพ์ 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
ใน Counter App
↓
มีอุปกรณ์อ่านบัตร?
มี
↓
เสียบบัตร / Scan
ดึงข้อมูลอัตโนมัติ
ดึงข้อมูลอัตโนมัติ
ไม่มี/ขัดข้อง
↓
พิมพ์ชื่อด้วยตนเอง
↓
เลือกประเภท + หน่วยงาน
↓
ถ่ายภาพ → Preview → ยืนยัน
↓
ต้องการ WiFi?
ใช่
↓
สร้าง WiFi Password
ไม่
↓
กด "บันทึก & พิมพ์บัตร"
↓
พิมพ์ Visit Pass ✓
(ภาพ + QR + WiFi*)
(ภาพ + 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 WiFi | Toggle ตามการตั้งค่า |
⚡ Rule Enforcement (ใหม่):
• ก่อน check-in → ดึง visit_purpose_department_rules
• ถ้า requireApproval = true → สร้าง appointment pending + officer ที่มีสิทธิ์อนุมัติได้เลย (inline approve)
• ถ้า requirePersonName = false → ข้ามขั้นตอนระบุผู้ติดต่อได้
• ก่อน 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)
• นัดหมายหลายวัน → แสดง 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
"[ชื่อ] มาถึงแล้ว" พร้อมข้อมูลนัดหมาย + ปุ่ม Check-out
↓
Staff พบ Visitor / ดูแลการเข้าพื้นที่
↓
Visitor ออกจากพื้นที่?
ออกแล้ว
↓
Staff กดปุ่ม
"บันทึกออกจากพื้นที่"
ใน Line OA (e-Stamp)
"บันทึกออกจากพื้นที่"
ใน Line OA (e-Stamp)
↓
Check-out ✓
บันทึกเวลาออก
บันทึกเวลาออก
ยังอยู่/ลืมกด
↓
ถึงเวลาที่กำหนด
หรือสิ้นวัน
หรือสิ้นวัน
↓
ระบบส่งแจ้งเตือน
"มีรายการค้าง"
ให้ Staff ตรวจสอบ
"มีรายการค้าง"
ให้ Staff ตรวจสอบ
↓
ออกจริงแล้ว?
ใช่
↓
กดบันทึกออก ✓
ไม่
↓
ประสานงาน
💬 Line Notifications
① แจ้ง Staff เมื่อ Check-in:
✅ Visitor มาถึงแล้ว
ชื่อ: [ชื่อ Visitor]
บริษัท: [ชื่อบริษัท]
วันที่/เวลา: [วันที่ เวลา]
วัตถุประสงค์: [เหตุผล]
ผู้ติดตาม: [จำนวน] คน
ชื่อ: [ชื่อ Visitor]
บริษัท: [ชื่อบริษัท]
วันที่/เวลา: [วันที่ เวลา]
วัตถุประสงค์: [เหตุผล]
ผู้ติดตาม: [จำนวน] คน
② แจ้งเตือนรายการค้าง:
⚠️ มีรายการค้างในระบบ
[ชื่อ Visitor] ยังไม่ Check-out
กรุณาตรวจสอบว่าออกแล้วหรือยัง
[ชื่อ 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
• 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 ทุกรายการ) และทีละรายการ
• แต่ละ 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
• 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
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-M1 | Excel |
|
👤 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