ไม่มีชื่อบทความ
ภาพรวมระบบ Time Clock → Google Calendar
1. ขอบเขตระบบ
ระบบที่ออกแบบนี้ครอบคลุมเฉพาะฝั่ง Frontend โดยใช้เทคโนโลยี:
- Framework: Next.js v14 (App Router)
- ภาษา: JavaScript (ESM)
- รูปแบบการสื่อสารกับ Google Calendar ผ่าน API
ผู้พัฒนาคือ Dev เพียง 1 คน สามารถติดตั้ง ทดสอบ และ deploy ได้ด้วยตนเอง
2. วัตถุประสงค์
สร้างฟอร์มลงเวลา (Time Clock) แบบง่าย โดยให้ผู้ใช้งานเลือก:
- ชื่อ-นามสกุล
- รหัสพนักงาน (employeeCode)
- ชนิดการลงเวลา: เข้างาน (Check-in) หรือ ออกงาน (Check-out)
เมื่อกดยืนยัน ระบบจะ:
- ดึงเวลาปัจจุบัน (timestamp) ฝั่ง server (Asia/Bangkok)
- ส่งข้อมูลไปบันทึกเป็น Event ใหม่ใน Google Calendar ที่เตรียมไว้
3. โครงสร้างข้อมูลที่ส่งไป Google Calendar
| Field | Type | หมายเหตุ |
|---|---|---|
| fullName | String | ชื่อ-นามสกุลของพนักงาน |
| employeeCode | String | รหัสพนักงาน (ตัวเลขหรือตัวอักษร) |
| action | Enum ('Check-in', 'Check-out') | ประเภทการลงเวลา |
| timestamp | String (ISO-8601) | เวลาที่กดบันทึก โดย server จะ generate |
Event ที่สร้างจะมี:
- Summary เช่น
สมชาย ใจดี (E123) – Check-in - เวลาเริ่มต้นและสิ้นสุด: Timestamp เดียวกัน หรือเพิ่ม 1 นาที
4. Google Calendar เป็น Data-store หลัก
Google Calendar ใช้เป็นที่เก็บข้อมูลลงเวลา ไม่ต้องสร้าง Database เพิ่มเติมในระบบนี้
- ใช้ Service Account เชื่อมต่อ API
- ลงเวลาทุกรายการเป็น 1 Event ใหม่ใน Calendar เดียวกัน
- สามารถดูย้อนหลังได้ง่ายผ่าน Google Calendar Interface
5. การจัดการ Timezone
เนื่องจากพนักงานอยู่ในประเทศไทย จึงต้องกำหนด timezone เป็น Asia/Bangkok ทั้งฝั่ง client และ server:
- Server จะบันทึก timestamp ตาม Asia/Bangkok
- Client อาจดึง timezone จาก
Intl.DateTimeFormat().resolvedOptions().timeZone - ป้องกันปัญหาเวลาเพี้ยนข้ามประเทศ
6. การเชื่อมต่อ Google Calendar API
การยืนยันตัวตนเลือกใช้:
- OAuth 2.0 ผ่าน Service Account (ไม่ใช้ OAuth Consent Screen แบบ User Authorization)
- ข้อดี: ไม่ต้องให้ผู้ใช้กดยินยอมทีละคน / ใช้ได้ในระบบอัตโนมัติ / ควบคุมได้ง่าย
- Calendar ต้อง แชร์สิทธิ์ ให้กับ Email ของ Service Account แบบ "Make changes to events"
7. Roadmap 9 บทถัดไป
- ตั้งค่า Google Cloud Console และ Service Account สำหรับ Calendar API
- สร้างโปรเจกต์ Next.js และตั้งค่าเบื้องต้น
- เชื่อมต่อ Google Calendar API จากฝั่ง server ด้วย Service Account
- เขียน API Endpoint สำหรับลงเวลาที่สร้าง Event ใหม่
- พัฒนา Form UI สำหรับเลือกชื่อ, เลือกลงเวลา, และกดส่งข้อมูล
- จัดการ Timezone และ Validate ข้อมูลก่อนส่ง
- Debug และเขียนแนวทางการตรวจสอบข้อผิดพลาด
- Deploy ขึ้น Vercel พร้อมตั้ง Environment Variables
- แนวทางบำรุงรักษาและ Feature เพิ่มเติมในอนาคต
หมายเหตุ: เพื่อความแม่นยำสูงสุดในการพัฒนา โปรดอ้างอิงเอกสารล่าสุดจาก Google Calendar API Documentation และ Next.js Documentation ระหว่างดำเนินงาน