ปัญหาเดิม
พนักงานลืมสแกนออก และกะดึกข้ามเที่ยงคืน ทำให้ข้อมูลเวลาไม่ครบหรือลงผิดวัน
สิ่งที่สร้าง
บริการ Python สองตัวใน Docker ตัวแรกฟังเครื่องสแกนทุกเครื่องแบบสด แล้วตัดสินว่าเป็นเข้าหรือออกจากแผนกะของพนักงาน ตัวที่สองปิดรายการที่ค้างเกินเวลาทุกคืน
ฟีเจอร์หลัก
- รับข้อมูลสดจากเครื่องสแกนทุกเครื่องที่เปิดใช้งาน
- ตัดสินเข้า/ออกจากกะที่วางแผนไว้
- ถ้าเริ่มกะใหม่ขณะกะเก่ายังเปิดอยู่ ปิดกะเก่าที่เวลาสิ้นสุดตามแผน
- สแกนซ้ำภายใน 1 ชั่วโมงจะอัปเดตเวลาออกแทนการสร้างรายการใหม่
- ปิดรายการค้างเกิน 16 ชั่วโมงอัตโนมัติทุกคืน
- ส่งเหตุการณ์สแกนไป n8n
เบื้องหลังทางเทคนิค
- หน้าต่างเวลาของกะเริ่ม 4 ชั่วโมงก่อนเข้างานถึง 8 ชั่วโมงหลังเลิก และกะที่เวลาเลิกน้อยกว่าเวลาเข้าจะเลื่อนไปวันถัดไป
- หนึ่ง thread ต่อหนึ่งเครื่อง reconnect เองทุก 30 วินาที และส่ง webhook แบบไม่บล็อก
- GitHub Actions build image และ deploy ด้วย docker compose บน runner ภายใน