N

Nokfa Docs

ไม่มีชื่อบทความ

การบำรุงรักษาและแนวทางพัฒนาระบบ Time Clock ในอนาคต

1. การหมุน (Rotate) Service Account Keys

เหตุผล: เพิ่มความปลอดภัย ป้องกัน Key รั่วไหลหรือล้าสมัย

วิธีการ:

  • เข้า Google Cloud Console → IAM & Admin → Service Accounts
  • เลือก Service Account ที่ใช้อยู่
  • ไปที่แท็บ Keys
  • กด Add KeyCreate New Key (ประเภท JSON)
  • ดาวน์โหลดและแทนที่ไฟล์เดิมใน /config/google-service-account.json
  • อัปเดตค่าใน Environment Variables (ถ้ามีเปลี่ยน)
  • ลบ Key เก่าออกทันทีเพื่อป้องกัน misuse

ข้อควรระวัง: Key เก่าอาจยัง valid จนกว่าจะลบออกเอง

2. เปลี่ยนรหัสพนักงานใหม่ / ลบพนักงานเก่า

กรณีเปลี่ยนรหัส:

  • แก้ไข Array employeeList ในฟอร์ม TimeClockForm.js
  • อัปเดตทั้ง fullName และ employeeCode ให้สอดคล้อง

กรณีลบคนออก:

  • ลบ object ของพนักงานคนนั้นออกจาก employeeList

หมายเหตุ:

  • Event ที่เคยลงไปใน Google Calendar แล้วจะยังคงอยู่ (ไม่ถูกลบอัตโนมัติ)
  • ถ้าต้องการลบ Event เก่า ต้องใช้ batch delete (ดูข้อ 3)

3. รีเซ็ตวันหยุดหรือข้อมูลเก่าด้วย Google Calendar API batchDelete

Google Calendar API ไม่มี batch delete โดยตรง ต้องทำผ่าน loop เอง:

วิธีเบื้องต้น:

  • เรียก events.list เพื่อดึง event ทั้งหมดตามช่วงเวลา
  • ใช้ events.delete ลบแต่ละรายการ

ตัวอย่าง pseudocode:

const events = await calendar.events.list({
  calendarId: process.env.GOOGLE_CALENDAR_ID,
  timeMin: '2024-01-01T00:00:00Z',
  timeMax: '2024-12-31T23:59:59Z',
});

for (const event of events.data.items) {
  await calendar.events.delete({
    calendarId: process.env.GOOGLE_CALENDAR_ID,
    eventId: event.id,
  });
}

คำเตือน: ต้องใช้ด้วยความระมัดระวัง เพราะลบแล้วไม่สามารถกู้คืนได้

4. Roadmap ต่อไป (ฟีเจอร์ในอนาคต)

  • 🔒 เพิ่ม Auth

    • ให้ผู้ใช้ login ก่อนกดลงเวลา (เช่น Basic Auth หรือ OAuth)
  • 👥 รองรับ Multi-employee + Dynamic Employee List

    • ดึงรายชื่อพนักงานจาก Database แทน Hardcode
  • 📄 เพิ่มระบบรายงาน CSV Export

    • สามารถ export รายการลงเวลาเป็นไฟล์ .csv
    • ตัวอย่าง column: ชื่อ, รหัสพนักงาน, ประเภท, วันเวลา
  • 📅 สร้าง iCal Feed (ics link)

    • เปิดให้ผู้จัดการหรือแผนก HR subscribe ผ่าน Calendar App อื่น ๆ ได้

5. Checklist ตรวจสอบระบบทุกเดือน

  • ตรวจสอบว่า Key ของ Service Account ยังไม่ใกล้หมดอายุ
  • ตรวจสอบ Google Calendar ยังใช้งานได้ปกติ ไม่มี quota เต็ม
  • ตรวจสอบว่ารายชื่อพนักงานในระบบเป็นปัจจุบัน
  • ทดสอบลงเวลาแบบสุ่ม 1-2 ครั้งแล้วเช็คใน Calendar
  • ตรวจสอบ log บน Vercel ว่ามี Error หรือ Warning หรือไม่
  • ตรวจสอบว่า Environment Variables บน Vercel ไม่เปลี่ยนไปหรือสูญหาย

หมายเหตุ: การดูแลระบบอย่างต่อเนื่องจะช่วยลด downtime และทำให้ข้อมูลมีความถูกต้องสำหรับใช้งานในระยะยาว