ไอเดีย #41: ระบบสหกิจศึกษา/ฝึกงาน จับคู่นักศึกษากับบริษัท
ทุกปีช่วงใกล้เปิดภาคฝึกงาน อาจารย์ที่ดูแลสหกิจศึกษาต้องรับมือกับไฟล์ Excel รายชื่อนักศึกษา อีเมลจากบริษัทที่ส่งมาคนละรูปแบบ และแบบประเมินกระดาษที่กว่าจะกลับมาครบก็เลยกำหนดส่งเกรดไปแล้ว ฝั่งนักศึกษาเองก็ไม่รู้ว่าบริษัทไหนยังรับอยู่ ส่งใบสมัครไปแล้วเงียบหาย ส่วนบริษัทก็ได้ใบสมัครกองโตที่ไม่ตรงสาขาที่ต้องการ ถ้ามีระบบกลางให้ทั้งสามฝ่ายเจอกัน งานนี้จะเบาลงเยอะมาก
ใครจะใช้
- นักศึกษา — ดูประกาศรับฝึกงาน สมัคร อัปโหลด resume ติดตามสถานะ และส่งรายงานประจำสัปดาห์
- บริษัท/สถานประกอบการ — ลงประกาศ คัดเลือกผู้สมัคร และกรอกแบบประเมินเมื่อจบการฝึก
- อาจารย์นิเทศ — อนุมัติการจับคู่ ดูรายงาน บันทึกการนิเทศ และสรุปคะแนน
- เจ้าหน้าที่ฝ่ายสหกิจ — จัดการรอบฝึกงาน ตรวจสอบบริษัท และออกเอกสารหนังสือส่งตัว
ฟีเจอร์ขั้นต่ำ (MVP)
- บริษัทลงประกาศตำแหน่งฝึกงาน ระบุสาขาที่รับ จำนวนที่นั่ง ช่วงเวลา และสวัสดิการ
- นักศึกษาสร้างโปรไฟล์ ใส่ทักษะ เกรดเฉลี่ย แนบ resume แล้วกดสมัครได้หลายตำแหน่งตามที่ภาควิชากำหนด
- สถานะใบสมัครชัดเจน เช่น ส่งแล้ว / นัดสัมภาษณ์ / ตอบรับ / ปฏิเสธ พร้อมแจ้งเตือนทางอีเมลหรือ LINE
- อาจารย์อนุมัติการจับคู่ก่อนยืนยันจริง เพื่อไม่ให้นักศึกษาตอบรับซ้อนหลายที่
- นักศึกษาส่งบันทึกการฝึกงานรายสัปดาห์ อาจารย์คอมเมนต์ได้
- แบบประเมินออนไลน์ให้พี่เลี้ยงที่บริษัทกรอกตามหัวข้อของภาควิชา แล้วรวมคะแนนอัตโนมัติ
- รายงานภาพรวมรายรอบ ว่าใครยังไม่มีที่ฝึก ใครยังไม่ได้รับการประเมิน
ต่อยอดได้อีก
- ระบบแนะนำตำแหน่งที่เหมาะกับนักศึกษาจากทักษะและสาขา
- สร้างหนังสือขอความอนุเคราะห์และหนังสือส่งตัวเป็น PDF อัตโนมัติ
- เก็บประวัติบริษัทย้อนหลังหลายปี ให้รุ่นน้องดูรีวิวจากรุ่นพี่
- แผนที่บริษัทสำหรับวางแผนเส้นทางนิเทศของอาจารย์
โครงข้อมูลตั้งต้น
companies— id, name, address, contact_name, verified, created_atpositions— id, company_id, term_id, title, majors, seats, start_date, end_date, statusstudents— id, user_id, student_code, major, gpa, skills, resume_pathapplications— id, position_id, student_id, status, approved_by, updated_atweekly_logs— id, application_id, week_no, content, advisor_commentevaluations— id, application_id, evaluator_id, scores (jsonb), total, submitted_at
ระดับความยาก และสิ่งที่จะได้เรียนรู้
ระดับ ปานกลาง ทำได้ด้วย Yii2 หรือ Laravel + PostgreSQL/MySQL โดยไม่ต้องใช้อะไรพิเศษ สิ่งที่จะได้ฝึก:
- ออกแบบ RBAC หลายบทบาท ที่แต่ละฝ่ายเห็นข้อมูลไม่เท่ากัน
- ทำ state machine ของใบสมัคร และกันการข้ามสถานะผิดลำดับ
- สร้างแบบประเมินที่ปรับหัวข้อได้ด้วย jsonb หรือตารางคำถามแยก
- จัดการอัปโหลดไฟล์อย่างปลอดภัย และออกเอกสาร PDF
ข้อควรระวัง
- resume และเกรดเป็นข้อมูลส่วนบุคคลตาม PDPA ควรให้บริษัทเห็นเฉพาะผู้ที่สมัครตำแหน่งของตัวเอง และขอความยินยอมก่อนส่งต่อข้อมูล
- จำนวนที่นั่งมีจำกัด ถ้าตอบรับพร้อมกันหลายคนอาจเกิด race condition ควรล็อกแถวหรือนับใน transaction
- ต้องยืนยันตัวตนบริษัทก่อนเปิดให้ลงประกาศ ไม่งั้นอาจมีประกาศหลอกลวงนักศึกษา
ใครเคยทำระบบสหกิจให้มหาวิทยาลัยหรือวิทยาลัยบ้างครับ ตอนนั้นจัดการเรื่องแบบประเมินที่แต่ละสาขาใช้หัวข้อไม่เหมือนกันยังไง แล้วถ้าเป็นคุณจะเพิ่มฟีเจอร์อะไรให้ฝั่งบริษัทอยากเข้ามาใช้จริง ลองมาแชร์แนวคิดหรือโชว์ผลงานที่ทำไว้ในกระทู้นี้ได้เลย