ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

ไอเดีย (Idea) idea hr workflow sme

ไอเดีย #26: ระบบขอลาและอนุมัติแบบหลายขั้น

ใบลาแบบกระดาษในบริษัทขนาดกลางมักมีชะตากรรมเดียวกัน คือไปค้างอยู่บนโต๊ะหัวหน้าที่ออกไปพบลูกค้า พนักงานไม่รู้ว่าอนุมัติแล้วหรือยัง ฝ่ายบุคคลก็ต้องมานั่งนับวันลาคงเหลือจาก Excel ทีละคน สิ้นปีมีคนลาพักร้อนเกินสิทธิ์เพราะไม่มีใครเช็ก ระบบลาออนไลน์ที่อนุมัติได้หลายขั้นเลยเป็นของที่ SME อยากได้ และเป็นโจทย์ workflow ที่ดีสำหรับคนอยากฝึกออกแบบระบบ

ใครจะใช้

  • พนักงาน — ยื่นใบลา ดูสิทธิ์คงเหลือ ติดตามสถานะ
  • หัวหน้างาน / ผู้จัดการ — อนุมัติหรือปฏิเสธตามลำดับขั้น
  • ฝ่ายบุคคล — ตั้งค่าประเภทลา สิทธิ์ และสายการอนุมัติ

ฟีเจอร์ขั้นต่ำ (MVP)

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

ต่อยอดได้อีก

  • แจ้งเตือนผู้อนุมัติและผลการอนุมัติทาง LINE หรืออีเมล
  • เชื่อมกับระบบลงเวลาเพื่อหักค่าแรงกรณีลาไม่ได้รับค่าจ้าง
  • กติกาเพิ่มเติม เช่น ลาพักร้อนต้องยื่นล่วงหน้าตามจำนวนวันที่กำหนด
  • รายงานสถิติการลารายแผนก

โครงข้อมูลตั้งต้น

  • leave_types — id, name, require_attachment, allow_half_day, paid
  • leave_balances — id, employee_id, leave_type_id, year, entitled, carried_over, used
  • leave_requests — id, employee_id, leave_type_id, start_at, end_at, days, reason, status
  • approval_flows — id, department_id, step_no, approver_role, approver_id
  • leave_approvals — id, leave_request_id, step_no, approver_id, action, comment, acted_at
  • holidays — id, holiday_date, name

ระดับความยาก และสิ่งที่จะได้เรียนรู้

ระดับ ปานกลาง ทำด้วย Yii2 หรือ Laravel + PostgreSQL/MySQL สิ่งที่จะได้เรียนรู้:

  • การออกแบบ workflow engine แบบง่ายที่ตั้งค่าขั้นตอนได้โดยไม่ต้องแก้โค้ด
  • การใช้ RBAC เช่น authManager ของ Yii2 แยกสิทธิ์พนักงาน หัวหน้า และฝ่ายบุคคล
  • การคำนวณจำนวนวันทำงานจริงโดยตัดวันหยุดออก
  • การทำ background job ส่งแจ้งเตือนผ่าน queue

ข้อควรระวัง

  • ใบรับรองแพทย์เป็นข้อมูลสุขภาพ ถือเป็นข้อมูลอ่อนไหวตาม PDPA ควรให้เห็นเฉพาะคนที่จำเป็นและเก็บไฟล์นอก public folder
  • ถ้าผู้อนุมัติสองคนกดพร้อมกัน หรือกดซ้ำ อาจตัดสิทธิ์ซ้ำได้ ให้ตรวจสถานะใน transaction ก่อนอัปเดต
  • การเปลี่ยนสายอนุมัติกลางทาง ควรมีผลกับใบลาใหม่เท่านั้น ไม่กระทบใบที่ยื่นไปแล้ว

ถ้าเป็นคุณจะเก็บสายอนุมัติแบบผูกกับแผนก ผูกกับตำแหน่ง หรือผูกกับตัวคน? และเคยเจอเคสลาข้ามปีที่ต้องแบ่งตัดสิทธิ์สองปีไหม? มาแลกเปลี่ยนกันในกระทู้นี้ หรือถ้าทำเสร็จแล้วเอา flow มาโชว์ในบอร์ดนี้ได้เลยครับ

0 คะแนน

0 คำตอบ

ยังไม่มีคำตอบ

รู้คำตอบ? ช่วยแบ่งปันได้เลย

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก