🧩 จำลอง Mapping Algorithm — Redesign (Phase 1 + Phase 2 + Collapse)

Group 0 → 1a ครบ 4 รอบ → 1b ครบ 4 รอบ → Collapse Linked Groups — ตามเอกสาร "Mapping Algo - Redesign Complete" (2026-07-09)

📂 อัพโหลดข้อมูล CSV เพื่อรัน Mapping Algorithm (Redesign)

เลือกไฟล์ CSV ผลการเรียน และแผนการเรียน แล้วกด รัน Algorithm
รองรับฟอร์แมต CSV จากระบบ SMS ของ KMITL โดยตรง (รหัสวิชาแบบ {a,b} จะถูกแตกเป็น Linked Group อัตโนมัติ)

คอลัมน์: subject_code, academic_year, semester, grade (, credit ถ้ามี)
คอลัมน์: subject_code, subject_name_th, credit, study_year, semester
เว้นว่างได้ — ระบบ auto-detect จากปีการศึกษาแรกในไฟล์ผลการเรียน
👤 Student Context
📋 แผนการเรียน (Plan Subjects)
#Patternชื่อวิชาปี/เทอมหน่วยกิต
✏️ แก้ไขข้อมูลแผน (รหัส, หน่วยกิต, ปี, เทอม ต่อบรรทัด — หลายรหัสใช้ {a,b})
🎓 วิชาที่นักศึกษาลงจริง
#รหัสปี/เทอมเกรดหน่วยกิตสถานะ
✏️ แก้ไขผลการเรียน (รหัส, ปีการศึกษา, เทอม, เกรด, หน่วยกิต — เกรดว่าง = กำลังเรียน)
วิชาที่ "🔒 คง lock (retake)" คือถูกแทนด้วยรหัสเดียวกัน — กันแสดงซ้ำสอง slot
1️⃣ Phase 1 — Ordered Slots (หลัง Expand Multi-Code)
🪵 Execution Log (ทีละรอบ)
2️⃣ Phase 2 — ผลการจับคู่ราย Slot
3️⃣ Phase 2.9 — Collapse: ผลสุดท้าย (1 รายวิชาในแผน = 1 ผล)