🥊 I-EA-T BOXING CLUB
คู่มือระบบจองคลาสและจัดการคะแนน
# คู่มือการใช้งานเว็บไซต์ชมรม I-EA-T BOXING คู่มือนี้อธิบายการใช้งานระบบจองคลาส คะแนน XP ระดับ Badge ฤดูกาล และไฟต่อเนื่องของเว็บไซต์ชมรม I-EA-T BOXING สำหรับแอดมินและสมาชิก ## ภาพรวมระบบ เว็บไซต์แบ่งการใช้งานหลักเป็น 2 ส่วน 1. **หน้าบ้าน** สำหรับสมาชิกและผู้เข้าชมทั่วไป - ดูข่าวสาร ชมรม กิจกรรม โค้ช สมาชิก Sponsor และตารางคลาส - สมาชิกที่ Login แล้วสามารถจองคลาส ยกเลิกคลาส และดูสถานะของตัวเองได้ 2. **หลังบ้าน** สำหรับ Admin และ Manager - อนุมัติสมาชิก - เปิด/ปิดคลาส และตั้งเวลาเปิดจอง - เช็กชื่อ Join / No join - เติมชื่อ Walk-in - จัดการฤดูกาลคะแนน - ปรับคะแนนกรณีพิเศษ - แก้ไขเนื้อหา รูปภาพ กิจกรรม และข้อมูลหน้าเว็บ ระบบใช้เวลาอ้างอิงเป็น **เวลาไทย (Asia/Bangkok)** เสมอ --- # ส่วนที่ 1: คู่มือสำหรับ Admin ## 1. การเปิดจองคลาส เมนูที่เกี่ยวข้อง: **ระบบหลังบ้าน > เช็กชื่อ / Training** ### 1.1 ข้อมูลที่ต้องตั้งค่าก่อนสร้างคลาส เมื่อ Admin สร้างรอบเรียน ต้องกรอกข้อมูลหลักดังนี้ | รายการ | ความหมาย | |---|---| | วันที่เปิดคลาส | วันที่มีการเรียนจริง | | เวลาเริ่ม | เวลาเริ่มเรียน เช่น 17:30 | | เวลาเลิก | เวลาเลิกเรียน เช่น 19:00 | | สถานที่ | สถานที่เรียน | | รับกี่คน | จำนวนตัวจริง เช่น 8 คน | | สำรอง | จำนวนสำรอง เช่น 4 คน | | เปิดรับจองทันที | ถ้าติ๊ก ระบบจะเปิดให้จองเมื่อถึงเวลาเปิดจอง | | เวลาเปิดจอง | วันและเวลาที่ระบบเริ่มให้สมาชิกกดจอง | | เวลาปิดจอง | วันและเวลาที่ระบบปิดรับจอง ถ้าไม่ระบุ ระบบจะปิดจองเมื่อถึงเวลาเริ่มคลาส | ### 1.2 เงื่อนไขสำคัญของการเปิดจอง การที่คลาสจะจองได้ ต้องผ่านเงื่อนไขทั้งหมดนี้ 1. Admin ต้องเปิดสถานะรับจองไว้ 2. เวลาปัจจุบันต้องถึงหรือเกิน **เวลาเปิดจอง** 3. ถ้าตั้งเวลาปิดจองไว้ เวลาปัจจุบันต้องยังไม่เกินเวลาปิดจอง 4. สมาชิกต้อง Login และต้องเป็นสมาชิกที่ได้รับอนุมัติแล้ว ระบบจะตรวจสอบตอนสร้างคลาสว่า **เวลาเปิดจองต้องมาก่อนเวลาปิดจอง** ถ้า Admin ตั้งเวลาเปิดจองช้ากว่าเวลาปิดจอง ระบบจะแจ้งเตือนว่า `เวลาเปิดจองต้องมาก่อนเวลาปิดจอง กรุณาตรวจสอบอีกครั้ง` และจะไม่สร้างคลาสนั้น ถ้าหน้าบ้านขึ้นว่า **ยังไม่ถึงเวลาเปิดจอง** แปลว่า Admin เปิดรับจองไว้แล้ว แต่ยังไม่ถึงเวลาที่ตั้งไว้ ถ้าหน้าบ้านขึ้นว่า **เต็ม/ปิด** หรือ **ปิดรับจอง** มักเกิดจากกรณีใดกรณีหนึ่ง: - Admin ยังไม่ได้เปิดรับจอง - ยังไม่ถึงเวลาเปิดจอง - เลยเวลาปิดจองแล้ว - คลาสเต็มและสำรองเต็ม - สมาชิกคนนั้นมีเงื่อนไขจองในสัปดาห์นั้นครบแล้ว ### 1.3 วิธีเช็กว่า Admin ตั้งเวลาเปิดจองไว้กี่โมง ดูได้ 2 จุด 1. **หน้าบ้าน > NEXT TRAINING** - ระบบจะแสดงข้อความ เช่น `เปิดจอง 5 ต.ค. 2569 12:00 น.` - ถ้ายังไม่ถึงเวลา จะขึ้นสถานะ `ยังไม่ถึงเวลาเปิดจอง` 2. **หลังบ้าน > เช็กชื่อ** - ใต้รายการคลาสจะแสดงทั้งเวลาเปิดจองและเวลาปิดจองพร้อมข้อความ `(เวลาไทย)` ข้อควรจำ: ถ้า Admin ตั้งเวลาเปิดจองเป็นอนาคต ต่อให้กดเปิดรับจองแล้ว สมาชิกก็ยังจองไม่ได้จนกว่าจะถึงเวลานั้น ข้อควรจำเพิ่มเติม: ถ้าไม่กรอกเวลาปิดจอง ระบบจะใช้ **เวลาเริ่มคลาส** เป็นเวลาปิดจองอัตโนมัติ เช่น คลาสเริ่ม 14:30 น. ระบบจะรับจองได้จนถึง 14:30 น. ไม่ใช่ปิดก่อนเริ่ม 1 ชั่วโมง ถ้าเป็นคลาสที่สร้างไว้ก่อนปรับระบบ และเคยใช้กติกาปิดก่อนเริ่ม 1 ชั่วโมง ระบบจะซ่อมเวลาปิดจองของคลาสนั้นเป็นเวลาเริ่มคลาสเมื่อ Admin รันไฟล์ `supabase/booking_window_manual_close_migration.sql` ใน Supabase SQL Editor แล้ว --- ## 2. กติกาการจองคลาส ### 2.1 จำนวนที่นั่ง ค่าปัจจุบันที่ใช้ในระบบคือ - ตัวจริง: ตามจำนวนที่ Admin ตั้ง เช่น 8 คน - สำรอง: ตามจำนวนที่ Admin ตั้ง เช่น 4 คน หน้าบ้านแสดงรายชื่อผู้จองด้วย **ชื่อเล่นเท่านั้น** เพื่อป้องกันการนำรหัสพนักงานของคนอื่นไปยกเลิกแทนกัน หลังบ้านแสดงข้อมูลเต็ม ได้แก่ - ชื่อเล่น - รหัสพนักงาน - ชื่อ-นามสกุล - สถานะจองสำเร็จ / สำรอง - สถานะ Join / No join ### 2.2 กติกาจองใน 1 สัปดาห์ สมาชิกสามารถมีรายการจองในสัปดาห์เดียวกันได้สูงสุด 2 รายการ ตาม logic นี้ 1. ถ้าจองคลาสแรกได้เป็นตัวจริงแล้ว 2. การจองคลาสที่สองในสัปดาห์เดียวกันจะถูกจัดเป็น **สำรอง** ก่อน แม้ว่าคลาสที่สองยังมีที่ว่าง 3. ถ้ามีการยกเลิกตัวจริงในสัปดาห์นั้น ระบบจะพยายามเลื่อนรายการสำรองของสมาชิกคนนั้นขึ้นเป็นตัวจริง ### 2.3 การเลื่อนสำรอง ระบบเลื่อนสำรองอัตโนมัติในกรณีต่อไปนี้ - สมาชิกตัวจริงกดยกเลิก - Admin ลบรายการจองของตัวจริง - ถึงเวลาปิดจองแล้วและยังมีที่นั่งว่าง ลำดับการเลื่อนสำรองจะเรียงตามคิวสำรองก่อนหลัง ### 2.4 คลาสที่ผ่านมาแล้ว คลาสที่ผ่านวันเวลาไปแล้วจะตกไปอยู่ด้านล่าง แต่ยังแสดงข้อมูลไว้จนกว่า Admin จะลบคลาสนั้น คลาสย้อนหลังจะแสดงเฉพาะข้อมูลที่เกี่ยวข้อง เช่น - ผู้ที่เคยจอง - ผู้ที่ Join - สถานะเช็กชื่อ --- ## 3. การกด Join, No join, ลบ และผลต่อคะแนน XP เมนูที่เกี่ยวข้อง: **ระบบหลังบ้าน > เช็กชื่อ** ### 3.1 กด Join เมื่อ Admin กด **Join** ให้สมาชิก ระบบจะถือว่าสมาชิกมาเรียนจริง ผลที่เกิดขึ้น: - ได้คะแนน Join +10 XP - ถ้าเป็นรายการจองปกติ จะยังคงได้คะแนนจอง +2 XP ด้วย - ถ้าเป็น Walk-in จะได้เฉพาะ Join +10 XP - มีผลต่อการคำนวณไฟต่อเนื่อง - มีผลต่ออันดับประจำฤดูกาลและอันดับตลอดกาล ตัวอย่าง: - จองคลาสสำเร็จและ Admin กด Join = +12 XP - เป็นสำรองและ Admin กด Join = +12 XP - Walk-in และ Admin กด Join = +10 XP ### 3.2 กด No join เมื่อ Admin กด **No join** ระบบจะถือว่าสมาชิกไม่ได้มาเรียนจริง ผลที่เกิดขึ้น: - ไม่ได้คะแนน Join +10 XP - ถ้าเคยจองไว้และไม่ยกเลิก ยังได้คะแนนจอง +2 XP - อาจทำให้ไฟต่อเนื่องดับ เพราะถือว่าขาดการเรียนจริง ### 3.3 กดลบรายการจอง เมื่อ Admin กด **ลบ** รายการจอง ระบบจะลบรายการนั้นออกจากการคำนวณ ผลที่เกิดขึ้น: - ไม่ได้คะแนนจอง +2 XP - ไม่ได้คะแนน Join +10 XP - ถ้าเป็นตัวจริง ระบบจะเลื่อนสำรองขึ้นมาแทนตามคิว - ถ้าเป็นรายการของสมาชิกที่มีสำรองอีกคลาสในสัปดาห์เดียวกัน ระบบจะพยายามเลื่อนสำรองของคนนั้นขึ้นเป็นตัวจริง ข้อควรระวัง: ถ้าต้องการบันทึกว่า “จองแล้วแต่ไม่มา” ให้ใช้ **No join** แทนการลบ เพราะการลบคือเอารายการออกจากระบบ --- ## 4. Walk-in และการแก้คะแนน ### 4.1 Walk-in คืออะไร Walk-in คือสมาชิกที่ไม่ได้จองผ่านระบบ แต่หน้างานได้เข้าเรียนจริง Admin สามารถใช้เมนู **เติมชื่อ Walk-in** เพื่อเพิ่มสมาชิกเข้าคลาสและบันทึก Join ทันที ผลคะแนน: - Walk-in ได้ +10 XP - Walk-in ไม่ได้ +2 XP จากการจอง เพราะไม่ได้จองผ่านระบบ ### 4.2 การปรับคะแนนโดย Admin เมนูที่เกี่ยวข้อง: **ระบบหลังบ้าน > Dashboard > ปรับคะแนนโดย Admin** Admin สามารถบวกหรือลบคะแนนได้ในกรณีพิเศษ เช่น - ระบบมีปัญหาชั่วคราว - สมาชิกมาเรียนจริงแต่ไม่ได้กดจอง - Admin ลืมกด Join - ต้องชดเชยคะแนน - ต้องหักคะแนนจากเหตุผลเฉพาะ ทุกครั้งที่ปรับคะแนนต้องใส่ **หมายเหตุ** เพื่อเก็บประวัติ ข้อมูลที่ระบบเก็บ: - สมาชิกที่ถูกปรับคะแนน - จำนวนคะแนนที่บวก/ลบ - เหตุผล - Admin ที่เป็นผู้ปรับ - วันเวลาที่ปรับ - ฤดูกาลที่ผูกคะแนน ถ้ามีการเลือกฤดูกาล คำแนะนำ: ควรใส่หมายเหตุให้ชัด เช่น `มาเรียนจริง แต่ระบบจองมีปัญหา วันที่ 6 ต.ค. 2569` --- ## 5. การจัดการฤดูกาลคะแนน เมนูที่เกี่ยวข้อง: **ระบบหลังบ้าน > Dashboard > จัดการฤดูกาลคะแนน** ### 5.1 ฤดูกาลคืออะไร ฤดูกาลคือช่วงเวลาที่ใช้คำนวณ **อันดับประจำฤดูกาล 10 อันดับ** ตัวอย่าง: - `SS1/2027` วันที่ 1 ต.ค. 2569 ถึง 31 มี.ค. 2570 - `SS2/2027` วันที่ 1 เม.ย. 2570 ถึง 30 ก.ย. 2570 Admin สามารถกำหนดชื่อและช่วงวันที่เองได้ เพราะแต่ละปีงบประมาณอาจมีจำนวนคลาสไม่เท่ากัน ### 5.2 กติกาฤดูกาล - ระบบมีได้หลายฤดูกาล - แต่มีฤดูกาลที่ Active ได้ครั้งละ 1 ฤดูกาลเท่านั้น - อันดับประจำฤดูกาลจะนับเฉพาะคลาสที่วันที่เรียนอยู่ในช่วงฤดูกาล Active - อันดับตลอดกาลจะนับคะแนนสะสมรวมทุกฤดูกาล - ไฟต่อเนื่องคำนวณภายในช่วงฤดูกาล ### 5.3 วิธีตั้งค่าฤดูกาล 1. ไปที่หลังบ้าน > Dashboard 2. กรอกชื่อฤดูกาล 3. เลือกวันเริ่มและวันสิ้นสุด 4. ติ๊ก `ใช้เป็นฤดูกาลปัจจุบัน` 5. กดเพิ่มฤดูกาล ### 5.4 ข้อควรระวัง - ถ้าไม่มีฤดูกาล Active หน้า Dashboard อาจไม่แสดงอันดับประจำฤดูกาลอย่างถูกต้อง - ถ้าคลาสอยู่นอกช่วงวันที่ของฤดูกาล Active คะแนนคลาสนั้นจะไม่เข้าอันดับประจำฤดูกาล - คะแนนตลอดกาลยังคงนับรวม แม้คลาสจะอยู่นอกฤดูกาล Active - ไม่ควรสร้างฤดูกาลซ้อนช่วงวันที่กัน เพราะระบบป้องกันไม่ให้ช่วงฤดูกาลทับกัน --- ## 6. กติกาคะแนน XP ### 6.1 คะแนนหลัก | เหตุการณ์ | คะแนน | |---|---:| | จองสำเร็จ หรือติดสำรอง และยังไม่ยกเลิก | +2 XP | | Admin กด Join | +10 XP | | Walk-in และ Admin กด Join | +10 XP | | Admin กด No join | ไม่ได้ +10 XP | | Admin ลบรายการจอง | รายการนั้นไม่ถูกนับคะแนน | | โบนัสไฟต่อเนื่อง | +5 XP ต่อไฟ 1 ดวง | | Admin ปรับคะแนนเอง | ตามจำนวนที่ Admin กรอก | ### 6.2 ตัวอย่างคะแนน | สถานการณ์ | คะแนน | |---|---:| | จองเป็นตัวจริงและมาเรียนจริง | +12 XP | | จองเป็นสำรองและมาเรียนจริง | +12 XP | | จองแล้วไม่มา แต่ Admin กด No join | +2 XP | | Walk-in หน้างาน | +10 XP | | จองแล้วกดยกเลิกเอง | 0 XP | | Admin ลบรายการจอง | 0 XP | --- ## 7. กติกาการเลื่อนระดับ Badge ระดับ Badge ใช้คะแนน **ตลอดกาล** ไม่ใช่เฉพาะฤดูกาล | ระดับ | คะแนนสะสม | |---|---:| | Rookie | 0 - 49 XP | | Contender | 50 - 149 XP | | Fighter | 150 - 299 XP | | Elite | 300 - 499 XP | | Champion | 500 XP ขึ้นไป | ข้อควรจำ: - Badge ไม่รีเซ็ตเมื่อเปลี่ยนฤดูกาล - Badge แสดงใน Dashboard และ Member Directory - คะแนนที่ Admin ปรับให้มีผลต่อระดับ Badge ด้วย - ถ้า Admin ลบคะแนนจนต่ำกว่าเกณฑ์ ระดับอาจลดลงตามคะแนนจริง --- ## 8. กติกาการขึ้นไฟฤดูกาล ไฟต่อเนื่องใช้เพื่อเพิ่มความสนุกในการแข่งขันประจำฤดูกาล ### 8.1 เงื่อนไขการขึ้นไฟ กติกาปัจจุบัน: 1. เรียนจริง 1 ครั้ง ยังไม่ขึ้นไฟ 2. Join ต่อเนื่องครบ 2 ครั้ง ไฟขึ้น 1 ดวง และได้โบนัส +5 XP 3. Join ต่อเนื่องครั้งต่อไป เพิ่มไฟอีก 1 ดวง และได้โบนัส +5 XP ต่อครั้ง 4. การติดสำรองช่วยรักษาไฟไว้ แต่ไม่เพิ่มไฟและไม่เพิ่มโบนัสไฟ 5. ถ้าขาดเรียน หรือมีคลาสที่ไม่ได้ Join/ไม่ได้เป็นสำรอง ไฟดับและเริ่มนับใหม่ 6. ไฟคำนวณตามฤดูกาล Active ### 8.2 ตัวอย่างไฟ | ลำดับคลาส | สถานะสมาชิก | ผลไฟ | โบนัส | |---|---|---|---:| | คลาส 1 | Join | ยังไม่ขึ้นไฟ | 0 | | คลาส 2 | Join | ไฟ 1 ดวง | +5 XP | | คลาส 3 | Join | ไฟ 2 ดวง | +5 XP | | คลาส 4 | สำรอง | รักษาไฟ 2 ดวง | 0 | | คลาส 5 | Join | ไฟ 3 ดวง | +5 XP | | คลาส 6 | ไม่ได้ Join และไม่ได้สำรอง | ไฟดับ | 0 | | คลาส 7 | Join | เริ่มนับใหม่ ยังไม่ขึ้นไฟ | 0 | ### 8.3 ข้อควรเข้าใจ - ไฟไม่ได้ดูจากคะแนนที่ Admin ปรับเอง - ไฟดูจากประวัติคลาสจริงและสถานะ Join/สำรอง - ถ้า Admin เพิ่มคะแนนเอง เช่น +100 XP ไฟจะไม่ขึ้นตามคะแนนนั้น - ไฟแสดงเฉพาะใน **อันดับประจำฤดูกาล 10 อันดับ** - Member Directory ไม่แสดงไฟ เพื่อไม่ให้หน้าสมาชิกดูรก --- ## 9. กิจกรรม Boot Camp / Fight Trips และผู้ลงทะเบียน เมนูที่เกี่ยวข้อง: **ระบบหลังบ้าน > เนื้อหา** และ **ระบบหลังบ้าน > เช็กชื่อ > รายชื่อผู้ลงทะเบียนกิจกรรม** ### 9.1 การแก้ไขข้อมูลกิจกรรม Admin สามารถแก้ไขข้อมูลของ Boot Camp และ Fight Trips ได้จากเมนู **เนื้อหา** ได้แก่ - ชื่อหัวข้อ - รายละเอียดกิจกรรม - รูปภาพ - ลิงก์เพิ่มเติม - สถานะเปิด/ปิดลงทะเบียน หน้าบ้านจะแสดงทั้ง **ชื่อหัวข้อ** และ **รายละเอียด** ที่ Admin กรอกไว้ หากรายละเอียดมีลิงก์ ระบบจะแสดงเป็นข้อความตามที่กรอกไว้ ### 9.2 การเปิด/ปิดลงทะเบียน - ถ้าเปิดรับลงทะเบียน หน้าบ้านจะแสดงปุ่ม `ลงทะเบียน` - ถ้าปิดรับลงทะเบียน หน้าบ้านจะแสดงสถานะปิดรับลงทะเบียน - สมาชิกต้อง Login จึงจะลงทะเบียนกิจกรรมได้ ### 9.3 รายชื่อผู้ลงทะเบียนกิจกรรม รายชื่อผู้ลงทะเบียนจะแยกตามประเภทกิจกรรม ได้แก่ - Boot Camp - Fight Trips Admin สามารถจัดการรายการได้ เช่น - ตรวจรายชื่อผู้ลงทะเบียน - แก้ไขข้อมูลการเดินทางหรือสถานะ - ลบรายการลงทะเบียนที่กรอกผิดหรือเป็นข้อมูลทดสอบ ข้อควรจำ: การลบรายการลงทะเบียนกิจกรรมไม่เกี่ยวกับคะแนน XP ของคลาสเรียน --- ## 10. รูปภาพ Media และ Cloudinary เมนูที่เกี่ยวข้อง: **ระบบหลังบ้าน > เนื้อหา / สมาชิก / Sponsor / Profile** ### 10.1 เหตุผลที่ย้ายรูปไป Cloudinary ระบบย้ายการอัปโหลดรูปใหม่ไป Cloudinary เพื่อลดการใช้ Supabase Egress โดยเฉพาะรูปที่ถูกโหลดซ้ำบ่อย เช่น รูปหน้า Landing, รูปกิจกรรม และรูปโปรไฟล์สมาชิก ### 10.2 รูปที่ควรอัปโหลดผ่านหลังบ้าน Admin ควรอัปโหลดรูปผ่านระบบหลังบ้าน ได้แก่ - Landing images - Sponsor logo - Boot Camp - Fight Trips - Giveaway - รูปโปรไฟล์สมาชิก ### 10.3 รูปโปรไฟล์สมาชิก - รูปโปรไฟล์สมาชิกใช้ Cloudinary preset แยกจากรูป public ทั่วไป - รูปใหม่ควรอยู่ใน Cloudinary โฟลเดอร์ `ieat-boxing/profile-photos` - ขนาดไฟล์รูปโปรไฟล์ไม่เกิน 2 MB - เมื่ออัปโหลดรูปใหม่ ระบบใช้รูปใหม่แทนรูปเดิม ไม่ต้องเก็บรูปเก่าไว้ในหน้าแก้ไข - ฟอร์มจะแสดงชื่อไฟล์รูปที่เลือก เพื่อให้ Admin หรือสมาชิกตรวจได้ก่อนบันทึก ### 10.4 รูปเก่าใน Supabase หรือ public รูปที่เคยอัปโหลดก่อนย้ายระบบอาจยังอยู่ใน Supabase Storage หรือ Cloudinary โฟลเดอร์ `public` ได้ ถือเป็นข้อมูลเก่าที่เคยใช้งาน แนวทางปฏิบัติ: - รูปที่ต้องการใช้งานต่อ ให้ re-upload ผ่านหลังบ้านเพื่อให้ URL เปลี่ยนเป็น Cloudinary - หลังตรวจว่า database ไม่ชี้ไป Supabase Storage แล้ว จึงค่อยลบไฟล์เก่าใน Supabase Storage - ไม่ควรลบไฟล์เก่าทันทีถ้ายังไม่แน่ใจว่าไม่มีหน้าเว็บหรือ profile ใดใช้อยู่ ### 10.5 การลด Supabase quota เพื่อช่วยลดการใช้ quota: - ใช้ Cloudinary สำหรับรูปใหม่ทั้งหมด - ลดการ refresh ทดสอบหน้าเว็บถี่ๆ โดยเฉพาะหน้าที่มีรูปเยอะ - หลีกเลี่ยงการอัปโหลดไฟล์ใหญ่เกินจำเป็น - ใช้รูปที่เหมาะกับหน้าเว็บ ไม่ใช้ไฟล์ความละเอียดสูงเกินจริง --- ## 11. สิ่งที่มักเข้าใจผิดว่าเป็นบัค ### 11.1 Admin เปิดรับจองแล้ว แต่สมาชิกยังจองไม่ได้ ให้ตรวจสอบ: - ตั้งเวลาเปิดจองไว้เป็นอนาคตหรือไม่ - เลยเวลาปิดจองหรือยัง - คลาสเต็มหรือไม่ - สมาชิก Login แล้วหรือยัง - สมาชิกได้รับอนุมัติแล้วหรือยัง ถ้าระบบขึ้น `ยังไม่ถึงเวลาเปิดจอง` แปลว่าไม่ใช่บัค แต่ยังไม่ถึงเวลาที่ตั้งไว้ ### 11.2 คะแนน Join ไม่ขึ้น ให้ตรวจสอบ: - Admin กด Join แล้วจริงหรือไม่ - รายการจองถูกลบไปหรือไม่ - สมาชิกอยู่ในสถานะ approved หรือไม่ - คลาสอยู่ในช่วงฤดูกาล Active หรือไม่ หากดูจากอันดับประจำฤดูกาล - ถ้าดูอันดับตลอดกาล คะแนนควรนับรวมทุกฤดูกาล ### 11.3 ไฟไม่ขึ้น ให้ตรวจสอบ: - สมาชิก Join ต่อเนื่องครบ 2 ครั้งหรือยัง - มีคลาสระหว่างทางที่ไม่ได้ Join และไม่ได้เป็นสำรองหรือไม่ - คลาสนั้นอยู่ในฤดูกาล Active หรือไม่ - คะแนนที่เห็นเกิดจาก Admin ปรับคะแนนเองหรือไม่ เพราะคะแนนปรับเองไม่ทำให้ไฟขึ้น ### 11.4 คะแนนสูงมากแต่ไฟไม่มี เป็นไปได้ถ้าคะแนนนั้นมาจาก: - คะแนนที่ Admin ปรับเอง - คะแนนสะสมเก่าก่อนเริ่มระบบไฟ - Join ไม่ต่อเนื่อง - คลาสอยู่นอกฤดูกาล Active ### 11.5 จองแล้วชื่อขึ้นเป็นสำรอง ทั้งที่ยังมีที่ว่าง เกิดได้ถ้าสมาชิกคนนั้นมีตัวจริงในสัปดาห์เดียวกันอยู่แล้ว ระบบจะให้คลาสที่สองเป็นสำรองก่อนตามกติกา --- # ส่วนที่ 2: คู่มือสำหรับสมาชิก ## 1. วิธี Login สมาชิกใช้ข้อมูลดังนี้ - Username: รหัสพนักงาน - Password: รหัสพนักงาน ถ้ายังไม่ได้รับอนุมัติ ระบบจะยังไม่ให้ใช้งานส่วนสมาชิกเต็มรูปแบบ --- ## 2. วิธีจองคลาส 1. เข้าเว็บไซต์ I-EA-T BOXING 2. กด Login 3. ไปที่ส่วน **NEXT TRAINING / รอบฝึกสัปดาห์นี้** 4. เลือกคลาสที่ต้องการ 5. กด **จองคลาส** 6. ระบบจะแสดงสถานะว่า - จองสำเร็จ - สำรองอันดับที่เท่าไหร่ - ยังไม่ถึงเวลาเปิดจอง - เต็ม/ปิด ถ้าต้องการยกเลิก ให้กด **ยกเลิกจอง** ที่รายการของตัวเอง ข้อควรจำ: - สมาชิกยกเลิกได้เฉพาะการจองของตัวเอง - หน้าบ้านแสดงชื่อผู้จองเป็นชื่อเล่นเท่านั้น - ถ้าติดสำรองแล้วมีที่ว่าง ระบบจะเลื่อนขึ้นตามคิว --- ## 3. คะแนน XP สำหรับสมาชิก | การกระทำ | คะแนน | |---|---:| | จองสำเร็จ หรือสำรอง และไม่ยกเลิก | +2 XP | | มาเรียนจริงและ Admin กด Join | +10 XP | | มาเรียนแบบ Walk-in | +10 XP | | จองแล้วไม่มา | ได้เฉพาะ +2 XP ถ้า Admin กด No join | | ยกเลิกจอง | 0 XP | | ได้โบนัสไฟ | +5 XP ต่อไฟ 1 ดวง | ตัวอย่าง: - จองและมาเรียนจริง = +12 XP - จองแล้วไม่ได้มา = +2 XP - ไม่ได้จอง แต่มาเรียนจริงแบบ Walk-in = +10 XP --- ## 4. ระดับ Badge Badge คือระดับสะสมระยะยาวของสมาชิก | ระดับ | คะแนนสะสม | |---|---:| | Rookie | 0 - 49 XP | | Contender | 50 - 149 XP | | Fighter | 150 - 299 XP | | Elite | 300 - 499 XP | | Champion | 500 XP ขึ้นไป | Badge ใช้คะแนนตลอดกาล จึงไม่รีเซ็ตเมื่อเปลี่ยนฤดูกาล --- ## 5. ไฟต่อเนื่อง ไฟเป็นสัญลักษณ์การแข่งขันประจำฤดูกาล กติกาง่ายๆ: 1. มาเรียนจริง 1 ครั้ง ยังไม่ขึ้นไฟ 2. มาเรียนจริงต่อเนื่อง 2 ครั้ง ไฟขึ้น 1 ดวง 3. ยิ่ง Join ต่อเนื่อง ไฟยิ่งเพิ่ม 4. ทุกไฟ 1 ดวง ได้โบนัส +5 XP 5. ถ้าติดสำรอง ไฟไม่ดับ แต่ไม่เพิ่ม 6. ถ้าขาดเรียนโดยไม่ได้ Join และไม่ได้เป็นสำรอง ไฟดับ ตัวอย่าง: - อังคาร Join, พฤหัส Join = ไฟ 1 ดวง - พฤหัสสัปดาห์ที่แล้ว Join, อังคารสัปดาห์นี้ Join = ไฟ 1 ดวง ถ้าไม่มีคลาสที่ขาดคั่นกลาง - Join 2 ครั้งแล้วสัปดาห์ถัดไปติดสำรอง = ไฟยังอยู่เท่าเดิม - ขาดคลาสที่ควรเข้าร่วมและไม่ได้เป็นสำรอง = ไฟดับ --- # ข้อเสนอแนะเพิ่มเติมสำหรับ Admin ## 1. ควรมีแนวทางใช้งานคะแนน Manual ให้ชัด แนะนำให้ชมรมกำหนดแนวปฏิบัติ เช่น - ปรับคะแนนได้เฉพาะกรณีระบบขัดข้อง หรือ Admin ลืมเช็กชื่อ - ทุกครั้งต้องใส่หมายเหตุ - ไม่ควรปรับคะแนนเพื่อเพิ่มไฟ เพราะไฟต้องสะท้อนการ Join ต่อเนื่องจริง ## 2. ควรตรวจ Dashboard หลังจบคลาสทุกครั้ง หลังเรียนจบ Admin ควรทำตามลำดับนี้ 1. เปิดเมนูเช็กชื่อ 2. กด Join ให้คนที่มาเรียนจริง 3. กด No join ให้คนที่จองแต่ไม่มา 4. เพิ่ม Walk-in ถ้ามีคนมาเรียนโดยไม่ได้จอง 5. รีเฟรช Dashboard 6. ตรวจอันดับ คะแนน และไฟ ## 3. ควรตั้งฤดูกาลก่อนเปิดใช้งานจริง ก่อนเปิดระบบให้สมาชิกใช้งานจริง ควรตรวจว่า - มีฤดูกาล Active แล้ว - ช่วงวันที่ครอบคลุมคลาสที่จะเปิด - ชื่อฤดูกาลถูกต้อง เช่น `SS1/2027` ## 4. ควรหลีกเลี่ยงการลบข้อมูลถ้าไม่จำเป็น ถ้าต้องการเก็บประวัติว่าใครจองแล้วไม่มา ให้ใช้ **No join** การลบควรใช้เมื่อ: - สร้างรายการผิด - มีข้อมูลทดสอบ - ต้องการเอารายการออกจากระบบจริงๆ ## 5. ฟังก์ชันสำรองที่มีไว้แก้ปัญหาหน้างาน ระบบมีเครื่องมือช่วยแก้ปัญหาแล้ว ได้แก่ - Walk-in สำหรับคนมาเรียนจริงแต่ไม่ได้จอง - Manual score adjustment สำหรับปรับคะแนนกรณีพิเศษ - ประวัติการปรับคะแนน เพื่อย้อนตรวจสอบ - การลบรายการจอง เพื่อเคลียร์ข้อมูลผิด - การจัดการฤดูกาล เพื่อกำหนดรอบการแข่งขันเอง ถ้าจะเพิ่มฟังก์ชันในอนาคต แนะนำให้เพิ่ม: - ปุ่ม export คะแนนและรายชื่อผู้เข้าเรียนเป็น Excel - หน้า Audit log สำหรับดูว่า Admin คนไหนกด Join / No join / ลบ / ปรับคะแนน - ปุ่ม recalculation สำหรับให้ Admin สั่งคำนวณคะแนนใหม่หลังแก้ข้อมูลจำนวนมาก - โหมดทดสอบระบบ เพื่อทดลองจอง/Join/ไฟ โดยไม่กระทบข้อมูลจริง