Laravel 12 • Livewire 3 • Bootstrap 5 • FontAwesome 6

เกี่ยวกับ “ระบบปฏิทิน”

แพลตฟอร์มปฏิทินกลางของมหาวิทยาลัยราชภัฏนครสวรรค์ (NSRU) สำหรับบริหารจัดการกิจกรรมระดับบุคคล ผู้บริหาร หน่วยงาน และกลุ่ม พร้อมเครื่องมือค้นหาวันว่าง ฟิลเตอร์ขั้นสูง การมอบหมายเลขาฯ และการเชื่อมต่อข้อมูลวันสำคัญ/วันหยุดอัตโนมัติ

ปลอดภัย • รวดเร็ว • ออกแบบเพื่อการใช้งานจริงในงานมหาวิทยาลัย

ภาพรวมระบบ

ระบบปฏิทินถูกออกแบบให้รองรับการทำงานหลากหลายบทบาท ตั้งแต่ “ปฏิทินของฉัน” (บุคคล) ไปจนถึงปฏิทิน “ผู้บริหาร”, “หน่วยงาน”, และ “กลุ่ม” พร้อมโครงสร้างข้อมูลที่ยืดหยุ่น และการกำหนดสิทธิ์/ผู้ช่วย (เลขาฯ) เพื่อบริหารจัดการกำหนดการแทนได้อย่างปลอดภัย

  • ใช้ FullCalendar และ Livewire 3 เพื่อการโต้ตอบแบบเรียลไทม์
  • รองรับ ฟิลเตอร์ขั้นสูง (ประเภทกิจกรรม, หน่วยงานผู้จัด, รูปแบบออนไลน์/ออนไซต์, คีย์เวิร์ด, ช่วงวันที่, Day Type)
  • มี เครื่องมือค้นหาวันว่าง ทั้งตามช่วงเวลาเช้า/บ่าย และช่วงเวลาที่กำหนดเอง
  • ซัพพอร์ต RRULE สำหรับอีเวนต์ซ้ำซ้อน และการแสดงผลวันสิ้นสุดข้ามวันอย่างถูกต้อง
  • เชื่อมต่อข้อมูลวันหยุด/วันสำคัญจาก ICS/JSON ภายนอก และบันทึกลงฐานข้อมูล
  • โครงสร้างตารางรองรับ Soft Deletes และฟิลด์ติดตามการเปลี่ยนแปลง (created_by, updated_by, deleted_by)

เทคโนโลยีหลัก

Laravel 12
โครงหลังบ้านแข็งแรง ขยายระบบง่าย
Livewire 3
โต้ตอบลื่นไหล ไม่ต้องเขียน JS เยอะ
Bootstrap 5
ออกแบบ UI ให้สวยและใช้งานง่าย
FullCalendar
แสดงปฏิทินยืดหยุ่น สัปดาห์/เดือน/รายการ
Guzzle (API)
ดึงข้อมูลภายนอก ปรับใช้กับ Seeder/Controller

เน้นใช้เครื่องมือ/บริการที่ ฟรี เป็นอันดับแรก และระบุข้อจำกัดให้ชัดเจนในงานพัฒนา

ฟีเจอร์เด่น

ฟิลเตอร์ขั้นสูง

กรองตามประเภทกิจกรรม หน่วยงาน รูปแบบออนไลน์/ออนไซต์ คีย์เวิร์ด ช่วงวันที่ Day Type

ปฏิทินผู้บริหาร & เลขาฯ

มอบหมายเลขาฯ หลายคนต่อผู้บริหารหนึ่งคน ให้ช่วยจัดการกำหนดการแทนได้

กิจกรรมซ้ำ (RRULE)

รองรับ Weekly/Monthly/Yearly พร้อมปรับพฤติกรรมวันสิ้นสุดที่ 23:59:59 → ข้ามวัน

ผู้เข้าร่วม/ผู้ประสานงาน/คนขับ

รองรับผู้เข้าร่วมหลายคน ผู้ประสานงาน และคนขับรถมากกว่า 1 คนต่อกิจกรรม

ค้นหาวันว่าง

ตรวจสอบว่างเช้า/บ่าย หรือกำหนดช่วงเวลาเอง พร้อมแผนที่เวลาให้ชัดเจน

นำเข้า ICS/JSON

เชื่อมต่อวันหยุดราชการ/วันสำคัญ แล้วบันทึกลงฐานข้อมูล (event_types: holiday)

รองรับภาษาไทยเต็มรูปแบบ

รูปแบบวันที่ไทย + ปี พ.ศ. และการแสดงผลที่เป็นมิตรต่อผู้ใช้ไทย

แนบไฟล์ & แท็ก

เพิ่มไฟล์แนบและแท็กกิจกรรม เพื่อค้นหา/จัดกลุ่มได้ง่ายขึ้น

โมดูลหลักของระบบ

ปฏิทินของฉัน

จัดการกิจกรรมส่วนบุคคล พร้อมแชร์/มอบหมายให้ผู้ช่วยได้

ปฏิทินผู้บริหาร

โฟกัสตารางผู้บริหาร พร้อมเลขาฯ หลายคนช่วยดูแล

ปฏิทินหน่วยงาน

รวมกิจกรรมของหน่วยงานและการอนุมัติเชิงระบบ

ปฏิทินกลุ่ม

สำหรับทีม/โครงการ/ภารกิจเฉพาะกิจ

ปฏิทินสาธารณะ

เผยแพร่กิจกรรมสาธารณะ พร้อมฟิลเตอร์ให้ผู้ชมค้นหา

ปฏิทินวันสำคัญ/วันหยุด

นำเข้าจาก ICS/JSON (เช่น วันหยุดราชการ) เพื่อแสดงรวมในระบบ

ภาพรวมโครงสร้างข้อมูล

events
SoftDeletes + created_by/updated_by
event types
SoftDeletes + created_by/updated_by
day types
SoftDeletes + created_by/updated_by
event participants
SoftDeletes + created_by/updated_by
event drivers
SoftDeletes + created_by/updated_by
event coordinators
SoftDeletes + created_by/updated_by
event files
SoftDeletes + created_by/updated_by
event tags
SoftDeletes + created_by/updated_by
tags
SoftDeletes + created_by/updated_by
users
SoftDeletes + created_by/updated_by
user names
SoftDeletes + created_by/updated_by
user jobs
SoftDeletes + created_by/updated_by
user accounts
SoftDeletes + created_by/updated_by
user settings
SoftDeletes + created_by/updated_by
ระบบเน้น Query Scope (เช่น EventType::root()->orderBy('name_th')) และออกแบบความสัมพันธ์เพื่อส่งข้อมูลพร้อมใช้ให้ FullCalendar/ตัวกรองได้ครบถ้วน

หลักการแสดงวันที่

  • เหตุการณ์วันเดียว: แสดงเวลาตามจริง
  • เหตุการณ์ข้ามวัน: ปัด 23:59:59 → วันถัดไป 00:00:00 เพื่อความถูกต้องของการมองเห็น
  • รองรับปี พ.ศ. และภาษาไทย

มาตรฐานคุณภาพ

  • จัดการ Error ใน Seeder/Importer (เช่น OAuth/วันเวลา/ค่าผิดปกติ)
  • ทดสอบกับกรณีซ้ำซ้อน (Weekly/Monthly/Until)
  • บันทึกการกระทำผู้ใช้ (Log) ตามนโยบายภายใน

การเชื่อมต่อ & นำเข้าข้อมูล

Holiday/Important Days Import

ระบบรองรับการนำเข้าวันหยุดราชการ/วันสำคัญจากแหล่งข้อมูลภายนอก (ICS/JSON) และบันทึกลงตาราง events ด้วยประเภท holiday (เชื่อมกับ event_types)

ตัวอย่าง JSON Endpoint
https://www.myhora.com/calendar/ical/holiday.aspx?latest.json
ตัวอย่างเพิ่มเข้ากับ Google Calendar
เปิด Google Calendar แล้วใช้ลิงก์ (cid=webcal://...ics)
https://calendar.google.com/calendar/render?cid=webcal://www.myhora.com/calendar/ical/buddha.aspx?latest.ics
*เปลี่ยนพารามิเตอร์ตามชนิดปฏิทินที่ต้องการ

แนวทางด้านความปลอดภัย & นโยบาย

  • การเข้าถึงข้อมูลกิจกรรมอ้างอิงสิทธิ์ผู้ใช้และบทบาท (ผู้บริหาร/เลขาฯ/หน่วยงาน/กลุ่ม)
  • แยกข้อมูลสาธารณะกับข้อมูลภายในชัดเจน
  • ควบคุมการมอบหมายเลขาฯ หลายคนต่อผู้บริหารได้
  • ติดตามการเปลี่ยนแปลง (created_by, updated_by, deleted_by) ทุกตารางหลัก
  • เน้นแหล่งข้อมูลที่ฟรีและระบุข้อจำกัดการใช้งานให้ชัดเจนก่อนเชื่อมต่อ

เครื่องมือ “ค้นหาวันว่าง”

เลือกกรองช่วงเวลาแบบมาตรฐาน ช่วงเช้า (08:00–12:00), ช่วงบ่าย (13:00–17:00) หรือกำหนดช่วงเวลาที่ต้องการเอง ระบบจะตรวจสอบอีเวนต์ที่ทับซ้อนอย่างถูกต้อง (หากเหตุการณ์เริ่มเช้าและสิ้นสุดบ่าย ระบบถือว่า “ไม่ว่าง” ทั้งสองช่วง)

  • รองรับการคำนวณจากหลายปฏิทิน (บุคคล/ผู้บริหาร/กลุ่ม)
  • กำหนดช่วงวันที่และความยาวช่องว่างขั้นต่ำได้
  • แสดงผลและแจ้งเตือน (เช่น gritter/SweetAlert) หลังประมวลผลเสร็จ
🗓️
ค้นหาช่องว่างได้แม่นยำ
ลดเวลาหาหมายรวมกับหลายฝ่าย

Roadmap (หัวข้อเด่นถัดไป)

PWA & Mobile UX
ปรับแต่งประสบการณ์ใช้งานบนมือถือและการติดตั้งเป็นแอป
แจ้งเตือนอัจฉริยะ
เลือกช่องทางแจ้งเตือนและความถี่ได้ตามกลุ่มผู้ใช้
KPI & Dashboard
ภาพรวมการใช้งานรถ/ห้อง/กิจกรรม และอัตราใช้งานระบบ
Workflow & อนุมัติ
รองรับการขอใช้/อนุมัติสำหรับกิจกรรมที่ต้องอนุญาต

ติดต่อทีมพัฒนา

สำนักวิทยบริการและเทคโนโลยีสารสนเทศ มหาวิทยาลัยราชภัฏนครสวรรค์
แนวทางการพัฒนายึด Design for Thai Users และ Free-First Tools เพื่อการนำไปใช้จริงในงานมหาวิทยาลัย