คู่มือและสถาปัตยกรรมโหมดเก็บข้อมูลวิจัยอัตโนมัติ (Research Data Collection Mode Complete Guide)
1. ที่มาและความจำเป็น (Rationale & System Objectives)
ในการฝึกซ้อมทั่วไป (General Practice Mode) ผู้ใช้งานสามารถเลือกท่ารำและปรับเวลาได้อย่างอิสระ แต่ในการเก็บข้อมูลวิจัยดุษฎีนิพนธ์และทดลองทางคลินิก (RCT) จำเป็นต้องมี "โหมดเก็บข้อมูลวิจัย (Research Mode)" เพื่อควบคุมตัวแปรและขจัดอคติทางวิทยาศาสตร์:
| มิติการวิเคราะห์ | โหมดการซ้อมทั่วไป | ปัญหาที่พบในการวิจัย | แนวทางแก้ไขด้วย Research Mode |
|---|---|---|---|
| ความผิดพลาดของผู้ใช้ (User Error) | เลือกท่าและระดับได้อิสระ | อาสาสมัครอาจสับสน เลือกรำข้ามท่า หรือเลือกระดับ L1-L3 ผิด | ล็อกระบบอัตโนมัติ: บังคับรำเรียงลำดับจากท่าที่ 1 ถึง 12 ตามมาตรฐาน |
| การควบคุมระยะเวลา (Duration Bias) | ปรับเวลาได้ 1, 3, 5, 10 นาที | ข้อมูลที่อัดมีความยาวไม่เท่ากัน ส่งผลต่อสถิติ | กำหนดเวลาตายตัว: ล็อกการอัดพิกัดที่ 3 นาทีต่อท่า (180 วิ) เสมอ |
| การควบคุมความล้า (Fatigue Bias) | อัดต่อได้ทันทีโดยไม่พัก | อาสาสมัครเร่งรำจนกล้ามเนื้อขาสั่นเกร็งสะสม | ระบบนับเวลาพัก (Rest Timer): บังคับพัก 1 นาทีระหว่างท่า และพัก 5 นาทีหลังท่าที่ 4 และ 8 |
| ประสบการณ์ใช้งาน (Hands-Free UX) | ต้องคลิกเปลี่ยนท่าและกดบันทึกเอง | การกดคลิกบ่อยครั้งรบกวนสมาธิและเสียเวลา | ท่อส่งงานอัตโนมัติ: รำเสร็จ ➡️ อัปโหลดคลาวด์ ➡️ เข้าหน้าพัก ➡️ สลับท่าถัดไป |
2. สถาปัตยกรรมและเวิร์กโฟลว์ของระบบ (System Workflow & State Machine)
โหมดบันทึกข้อมูลวิจัยถูกขับเคลื่อนด้วย State Machine ผ่านคอนโทรลเลอร์ [ResearchModeController](file:///Users/yut/TaijiFlow/src/js/controllers/research_mode_controller.js):
3. องค์ประกอบสำคัญที่ได้รับการพัฒนา (Key Implementation Modules)
3.1 การจัดกลุ่มอัตโนมัติด้วย Access Code & URL Routing
- รองรับรหัสคัดแยกกลุ่มใน
window.TAIJI_CONFIG.RESEARCH_CODES:"TAIJI_DATA_2026"➡️ กลุ่มเก็บข้อมูลวิจัยสร้าง Dataset ('data_collection')"TAIJI_EXP_2026"➡️ กลุ่มทดลอง RCT มีโครงกระดูกและคะแนนเรียลไทม์ ('experimental')"TAIJI_CTRL_2026"➡️ กลุ่มควบคุม RCT ซ่อนโครงกระดูกและคะแนนสด ('control')
- รองรับ URL Parameter เช่น
app.html?mode=researchหรือ?code=TAIJI_EXP_2026โดยระบบจะกรอกรหัสและล็อกฟิลด์เป็นreadonlyอัตโนมัติ
3.2 Dynamic Sessions Pacing (เป้าหมายเซสชันตามระดับสรีระ)
คำนวณเป้าหมายเซสชันหลักและเพดานสูงสุดโดยตรวจสอบจากระดับประสบการณ์ในโปรไฟล์จริง:
- ระดับเริ่มต้น/กลาง (L1/L2 Beginners/Intermediates): เป้าหมายหลัก = 3 เซสชัน, เพดานสูงสุด = 5 เซสชัน
- ระดับเชี่ยวชาญ (L3 Experts): เป้าหมายหลัก = 5 เซสชัน, เพดานสูงสุด = 10 เซสชัน
- กลุ่ม RCT (8 สัปดาห์): แสดงจำนวนสัปดาห์ปัจจุบัน (1-8 สัปดาห์) และจำนวนวันที่ฝึกแล้วในสัปดาห์นั้น (เช่น ฝึกแล้ว 2 / 3 วัน)
3.3 แผงแดชบอร์ด 2 คอลัมน์และการพรีวิวแบบไดนามิก (Interactive Dashboard & Preview)
- คอลัมน์ซ้าย: แสดงรายการ 12 ท่ารำ, ป้ายสถานะ (
✓ บันทึกเสร็จแล้ว,⏳ รำต่อท่านี้,รอการรำ), Progress Bar ความสำเร็จ, และปุ่มเริ่มรำ - คอลัมน์ขวา: เล่นแอนิเมชันพรีวิวท่ารำถัดไปอัตโนมัติ โดยรองรับระบบสลับภาพ 4 ขั้นตอน (Step 1-4 Sprite Loop) และ Fallback Skeleton Canvas สำหรับท่าที่ไม่มีรูปถ่าย
4. การทดสอบและการตรวจรับ (Validation & Testing)
- ความแม่นยำของตัวจับเวลา: ตรวจสอบว่าระบบเริ่มอัดที่วินาทีที่ 0 และหยุดสั่งอัปโหลดที่ 180,000 ms (3 นาทีเต็ม) อย่างแม่นยำ
- ระบบความปลอดภัยข้อมูล (IRB e-Consent): บายพาสด่านความยินยอมสำหรับอาสาสมัครที่เคยลงนามแล้ว พร้อมปุ่มตรวจสอบสิทธิ์การถอนตัว (
btn-research-privacy) - Automated Unit Tests: รัน
npm testผ่านครบ 84 / 84 Test Cases (100% Passed)