Skip to content

สรุปผลการพัฒนาระยะที่ 2: ระบบคลาวด์และชีวกลศาสตร์สองมือ (Sprint 1–4 Summary)

เอกสารฉบับนี้เป็นการรวบรวมและสังเคราะห์ผลการดำเนินงานใน ระยะที่ 2 (Phase 2: Cloud Integration, Two-Hand Heuristics & Data Pipelines) ของโครงการวิจัย TaijiFlow AI ครอบคลุมการพัฒนาตลอดทั้ง 4 Sprints เพื่อยกระดับสถาปัตยกรรมจากระบบประมวลผลฝั่งไคลเอนต์เฉพาะที่ (Local Client-side) ไปสู่ระบบคลาวด์สองชั้นแบบไร้เซิร์ฟเวอร์ (2-Tier Serverless Architecture) ควบคู่กับการขยายความสามารถในการวิเคราะห์ชีวกลศาสตร์สองมือ และการเตรียมชุดข้อมูลพิกัดสรีระ (AI-ready Dataset) ที่มีคุณภาพสูงสำหรับการพัฒนาแบบจำลองปัญญาประดิษฐ์ในระยะที่ 3


ภาพรวมการดำเนินงานราย Sprint (Phase 2 Sprint Roadmap)

Sprintภารกิจหลัก (Core Focus)เป้าหมายและผลลัพธ์สำคัญ (Key Milestones)สถานะ
Sprint 1Supabase Setup & Authenticationติดตั้งฐานข้อมูล PostgreSQL, ระบบสิทธิ์ RLS, Storage Bucket, และระบบสมาชิก Glassmorphic UI✅ สำเร็จ 100%
Sprint 2Data Pipeline & Optimizationออกแบบท่อส่งข้อมูลคลาวด์อัตโนมัติ, บีบอัดพิกัด 4 ทศนิยม, เก็บ Baseline T-Pose, และกำหนดเวลาสัมพัทธ์ t✅ สำเร็จ 100%
Sprint 3Two-Hand Heuristics & Annotationพัฒนากฎสองมือ (Rule 10–13), เส้นนำทางคู่ (Double Guideline), และแผงประเมินผลสำหรับผู้เชี่ยวชาญ (Expert Tool)✅ สำเร็จ 100%
Sprint 4Data Gathering & Deploymentสร้างสคริปต์ Python ตรวจสอบความสะอาดข้อมูล, ระบบสำรอง CDN Client, การจัดการแสง, และเตรียมพร้อมขึ้น Production✅ สำเร็จ 100%

Sprint 1: ระบบสมาชิกและโครงสร้างคลาวด์ (Supabase Setup & Authentication)

1. วัตถุประสงค์

  • ย้ายระบบจากการประมวลผลและจัดเก็บข้อมูลแบบ Local Client-side เท่านั้น ไปสู่ระบบ Client-Server (2-Tier Serverless) โดยเชื่อมโยงตรงสู่ Supabase
  • พัฒนาระบบสมาชิก (Authentication), ระบบประวัติและโปรไฟล์ (Profile DB Schema), และระบบจัดเก็บข้อมูลพิกัดการฝึก (Storage Buckets)
  • สร้างหน้าจอจัดการสมาชิกและแดชบอร์ดสถิติเบื้องต้น (Auth & Dashboard UI Popup) ในสไตล์ Glassmorphism

2. สิ่งที่ได้รับการพัฒนาสำเร็จ

  • โครงสร้างฐานข้อมูล Postgres (Database Schema):
    • ตาราง public.users: เก็บข้อมูลโปรไฟล์ผู้ฝึก ได้แก่ ชื่อแสดงผล (Display Name), ส่วนสูง (Height), น้ำหนัก (Weight), และระดับประสบการณ์ไท้เก๊ก (Experience Level)
    • ตาราง public.training_sessions: เก็บบันทึกประวัติการฝึกซ้อม (คะแนนรวม, เกรด, ข้อผิดพลาดหลัก, เวลาฝึกซ้อม, และลิงก์อ้างอิงไฟล์พิกัดโครงร่าง)
    • Postgres Trigger (handle_new_user): ตรวจจับสมาชิกสมัครใหม่ในระบบ Auth และคัดลอกข้อมูลโปรไฟล์เริ่มต้นลงสู่ตาราง public.users อัตโนมัติ
  • นโยบายความปลอดภัยของข้อมูล (Row Level Security - RLS):
    • กำหนดเงื่อนไข auth.uid() = id สำหรับข้อมูลโปรไฟล์ (อ่านและเขียนเฉพาะของตนเอง)
    • กำหนดเงื่อนไข auth.uid() = user_id สำหรับประวัติการฝึกซ้อม (ป้องกันการดึงข้อมูลข้ามบัญชีหรือบันทึกข้อมูลสวมรอย)
  • พื้นที่จัดเก็บไฟล์ส่วนบุคคล (Storage Bucket & Policies):
    • สร้าง Private Bucket training-sessions สำหรับจัดเก็บไฟล์ JSON พิกัดร่างกาย
    • กำหนด RLS Storage Policies บังคับให้เขียนและอ่านได้เฉพาะโฟลเดอร์ที่ตรงกับ UID ตนเอง: (storage.foldername(name))[1] = auth.uid()::text
  • ระบบติดต่อผู้ใช้และควบคุมสมาชิก (Auth UI & Manager):
    • พัฒนาระบบลงทะเบียน เข้าสู่ระบบ ออกจากระบบ และรองรับ Google OAuth
    • หน้าต่างป๊อปอัปสไตล์ Glassmorphic แสดงประวัติการฝึกย้อนหลัง 5 ครั้งล่าสุด พร้อมแผนภูมิสถิติพลอตคะแนนพัฒนาการย้อนหลัง

3. ผลการทดสอบระบบ

  • การสมัครและเข้าสู่ระบบ: ลงทะเบียนและล็อกอินสำเร็จ ข้อมูลในตาราง users ถูกสร้างอัตโนมัติตาม Trigger และดึงประวัติการฝึกซ้อมมาพลอตบนแดชบอร์ดได้แบบเรียลไทม์
  • การรักษาความปลอดภัย (RLS): ทดสอบใช้คำสั่ง SQL ฝั่งไคลเอนต์พยายามดึงข้อมูลข้าม UID พบว่าถูกบล็อกอย่างสมบูรณ์ (Access Denied)

Sprint 2: ท่อส่งข้อมูลและการบีบอัดพิกัด (Data Pipeline & Optimization)

1. วัตถุประสงค์

  • พัฒนาระบบท่อส่งข้อมูลการเคลื่อนไหวที่มีประสิทธิภาพ (Data Ingestion Pipeline) โดยลดขนาดไฟล์ JSON ให้เบาที่สุด
  • จัดรูปแบบข้อมูล (Formatting & Cleaning) ให้เหมาะสมสำหรับประมวลผลอนุกรมเวลา (Temporal Sequence) และเตรียมเป็นชุดข้อมูลสำหรับโมเดล Deep Learning ในระยะที่ 3
  • ปรับแต่งระบบให้ส่งออกข้อมูลคะแนนรวม ข้อมูลหลักการประเมินแยกหมวดหมู่ และพิกัดโครงร่างขึ้นสู่ Supabase อัตโนมัติ

2. สิ่งที่ได้รับการพัฒนาสำเร็จ

  • การบีบอัดพิกัด MediaPipe (4 Decimal Precision):
    • ปรับลดทศนิยมของตัวแปร x,y,z และ visibility บนจุดข้อต่อ 33 จุด จากเดิม 5 ตำแหน่งเหลือ 4 ตำแหน่ง
    • ช่วยลดขนาดไฟล์ JSON สุทธิลง 20–30% (~1.2 MB ต่อเซสชันการฝึก 5 นาที) ประหยัดแบนด์วิดท์และพื้นที่จัดเก็บอย่างมีนัยสำคัญ
  • การกำหนดเวลาสัมพัทธ์มาตรฐาน (Relative Timestamp t):
    • บันทึกความต่างของเวลาในหน่วย มิลลิวินาที (Milliseconds) สัมพัทธ์ตั้งแต่เริ่มฝึกรำ (t0=0) ช่วยเพิ่มเสถียรภาพและคุณภาพเมื่อนำไปป้อนโมเดลโครงข่ายกลุ่ม ST-GCN / Transformer
  • การสกัดป้ายกำกับข้อผิดพลาด (ML Heuristics Classification Labels):
    • สกัดข้อความ Feedback การประเมินกฎไท้เก๊กแยกตามหมวดหมู่และบันทึกเป็นอาเรย์ labels รายเฟรม สำหรับใช้เป็น Classification Ground Truth
  • การบันทึกพิกัดมาตรฐาน T-Pose (Calibration Pose Baseline):
    • บันทึกพิกัด 33 จุดของท่ากางแขน T-pose ขณะปรับเทียบสำเร็จไว้ใน meta.calibration_pose เพื่อใช้อ้างอิงสัดส่วนสรีระเฉพาะบุคคลของผู้ฝึก
  • ท่อส่งคลาวด์อัตโนมัติ (Automated Cloud Pipeline):
    • อัปโหลดไฟล์ JSON เข้าสู่ Private Bucket แบบ Asynchronous ทันทีหลังจบการฝึกซ้อม โดยแยกพาธตามผู้ใช้: training-sessions/{user_id}/{session_id}.json
    • บันทึกสถิติผลลัพธ์การฝึก คะแนนรวม เกรด และคะแนนแยกตามหลักการไท้เก๊ก 6 หมวด (category_scores) เข้าสู่ตาราง public.training_sessions
    • มีระบบสำรองให้ดาวน์โหลดไฟล์เก็บในเครื่อง (Local Download) เสมอหากระบบเครือข่ายมีปัญหา

3. ผลการทดสอบระบบ

  • การทดสอบ End-to-End (E2E): การฝึกซ้อมเสร็จสิ้นและท่อส่งข้อมูลทำงานอัตโนมัติ ข้อมูลถูกบีบอัดและอัปโหลดขึ้น Supabase Storage พร้อมบันทึกลงฐานข้อมูลเสร็จสิ้นภายใน 1–2 วินาที
  • ความถูกต้องของโครงสร้างไฟล์: ตรวจสอบไฟล์ JSON มีคีย์ Baseline ครบถ้วน ทศนิยม 4 ตำแหน่ง ลำดับเวลา t ต่อเนื่อง และ Label ถูกต้องตามข้อกำหนด

Sprint 3: ชีวกลศาสตร์สองมือและเครื่องมือประเมิน (Two-Hand Heuristics & Annotation)

1. วัตถุประสงค์

  • ออกแบบและพัฒนาชุดตรรกะตรวจเช็คความสัมพันธ์ของการเคลื่อนไหวสองมือ 4 กฎใหม่ (Rule 10 ถึง 13)
  • เปิดระบบสนับสนุนท่ารำม้วนไหมสองมือใหม่ 8 ท่า (ท่าที่ 5 ถึง 12) พร้อมรองรับระดับความสูงสรีระ L1, L2, L3
  • พัฒนาเครื่องมือในโหมดรีเพลย์ (Replay Mode) สำหรับให้ผู้เชี่ยวชาญให้คะแนน (Human Annotation Score) และบันทึกคำแนะนำ เพื่อใช้เป็นชุดข้อมูลอ้างอิงมาตรฐาน (Ground Truth) ในระยะที่ 3

2. สิ่งที่ได้รับการพัฒนาสำเร็จ

  • ชุดกฎชีวกลศาสตร์สองมือ 4 กฎใหม่ (Rule 10–13):
    • Rule 10: Bilateral Symmetry (สมมาตรโครงสร้าง): ตรวจวัดความเอียงของแกนระดับไหล่ (Shoulder Tilt) และสะโพก (Pelvic Tilt) ไม่ให้เกิน 5% พร้อมตรวจวัดระยะการยืดออกของข้อมือซ้าย-ขวาเทียบกับแนวกึ่งกลางตัว
    • Rule 11: Opposition Movement (การเคลื่อนสวนทิศ): วิเคราะห์เวกเตอร์ความเร็ว Vx,Vy ของทั้งสองมือให้เคลื่อนสวนทางกันอย่างสัมพันธ์กัน (เช่น ท่ามือเมฆที่สองมือสลับขึ้นลงสวนทิศ)
    • Rule 12: Hand Coordination (มือสอดคล้องคล้อยตาม): ควบคุมสัดส่วนความเร็วเชิงเส้นระหว่างสองมือให้อยู่ในช่วง [0.22,4.5] ป้องกันมือข้างใดข้างหนึ่งหยุดนิ่งหรือเคลื่อนไหวขาดความต่อเนื่อง
    • Rule 13: Phase Matching (การประสานเฟสจังหวะ): คำนวณมุมเฟสของการแกว่งแขน (θ) รอบจุดหมุน และตรวจสอบความต่างของเฟสให้อยู่ในจังหวะสวนทิศรอบวงกลมสมบูรณ์ที่ 180±45
  • ระบบเส้นนำทางคู่ (Double Path Guidelines):
    • พัฒนาการคำนวณและเรนเดอร์เส้น Guideline วงกลมคู่ซ้าย-ขวาพร้อมเป้าเล็งมือ (Hand Targets) สองจุดพร้อมกันบนแคนวาส สำหรับท่ารำที่ 5 ถึง 12
  • แผงเครื่องมือประเมินของผู้ฝึกสอน (Expert Annotation Tool):
    • ออกแบบอินเตอร์เฟส Glassmorphic Overlay ในโหมดเล่นย้อนหลัง (Skeletal Replay) ประกอบด้วยสไลเดอร์ให้คะแนน (0–100) และช่องกรอกข้อเสนอแนะเชิงลึก
    • ส่งค่าคะแนน expert_score และคำแนะนำ expert_notes อัปเดตลงตาราง training_sessions บนฐานข้อมูลหลักทันที
  • ระบบจัดหมวดหมู่ท่าฝึกซ้อม (Categorized Exercise Selection):
    • แบ่งหมวดหมู่การเลือกท่าเป็นแบบ "มือเดียว (ท่า 1–4)" และ "สองมือ (ท่า 5–12)" พร้อมระบบสุ่มแยกหมวด
    • รองรับการซิงค์ข้ามอุปกรณ์ (Two-Way Sync) ระหว่างจอเดสก์ท็อปและจอมือถืออย่างแม่นยำ

3. ผลการทดสอบระบบ

  • Unit & Integration Tests: ผ่านชุดทดสอบ 75 ชุดทดสอบ (100% Pass)
  • Build & Obfuscation: คอมไพล์ผ่านและรันฟังก์ชันรีเพลย์พร้อมส่งคะแนนผู้เชี่ยวชาญขึ้นฐานข้อมูลได้สมบูรณ์

Sprint 4: การตรวจสอบคุณภาพข้อมูลและการนำขึ้นใช้งาน (Data Gathering & Deployment)

1. วัตถุประสงค์

  • พัฒนาเครื่องมือ Python Script สำหรับตรวจสอบความสมบูรณ์และวิเคราะห์ความสะอาดของข้อมูลพิกัดร่างกาย (JSON Dataset) ทั้งจากไฟล์ในเครื่องและจากระบบคลาวด์
  • ยกระดับความทนทานของระบบเชื่อมต่อ Supabase Client ให้พร้อมรับมือกับข้อผิดพลาดของเครือข่ายและตัวบล็อกโฆษณา (Adblockers)
  • ปรับปรุงระบบตรวจจับสภาพแสงเพื่อลดการรบกวนผู้ฝึก และเตรียมความพร้อมสำหรับการนำระบบขึ้นใช้งานจริง (Production Deployment)

2. สิ่งที่ได้รับการพัฒนาสำเร็จ

  • สคริปต์ Python ตรวจสอบความพร้อมของชุดข้อมูล (validate_dataset.py):
    • รองรับทั้ง Local Mode (-p) ตรวจสอบไฟล์ในเครื่องแบบกลุ่ม (Batch) และ Cloud Mode (-c) ดึงข้อมูลล่าสุดจาก Supabase มาตรวจอัตโนมัติ
    • รายการตรวจสอบคุณภาพ (Validation Checklist):
      • ตรวจสอบ Schema ของคีย์หลัก (meta, score_summary, frames)
      • ตรวจสอบการปัดเศษทศนิยม 4 ตำแหน่งของ Landmarks (x,y,z,visibility)
      • ตรวจสอบความครบถ้วนของข้อต่อ 33 จุดในทุกเฟรม และดักจับค่าผิดปกติ เช่น NaN, null
      • ตรวจสอบลำดับเวลา t (Relative Timestamp) ป้องกันเวลาซ้ำซ้อนหรือย้อนกลับ
      • ทดสอบแปลงข้อมูลเข้าสู่ NumPy Array รูปทรง (N,33,4) และสร้าง Pandas DataFrame สถิติภาพรวม
  • การเพิ่มความทนทานของระบบเชื่อมต่อคลาวด์ (Resilient Supabase Integration):
    • Dynamic CDN Fallbacks: หาก CDN หลัก (jsDelivr) ถูกบล็อก ระบบจะสลับไปโหลดจาก CDN สำรอง (unpkg หรือ cdnjs) อัตโนมัติ
    • On-Demand Initialization: ปรับปรุงตรรกะเรียกใช้งาน Auth API ให้ทวนสอบความพร้อมของ Client ก่อนเสมอ ป้องกันปัญหาปุ่มกดไม่ทำงานเมื่อเครือข่ายล่าช้า
    • Duplicate Event Guard: ป้องกันการลงทะเบียน Event Listener ซ้ำซ้อนในระบบสมาชิก
  • การปรับปรุงระบบตรวจเช็คสภาพแสง (Lighting Manager Enhancements):
    • Throttled Luminance Checks: วิเคราะห์ความสว่างของพิกเซลกล้องทุก 60 เฟรม (~2 วินาทีต่อครั้ง) ป้องกันอาการเฟรมเรตตก
    • Calibration-Only Alerts: จำกัดการเตือนเรื่องแสงเฉพาะช่วงปรับเทียบสรีระ (Calibration Phase) เท่านั้น เมื่อเริ่มรำจริง (Flow Mode) ระบบจะปิดเสียงเตือนเพื่อรักษาสมาธิของผู้ฝึก

3. ผลการทดสอบระบบ

  • การทดสอบความถูกต้องของข้อมูล (Dataset Validation):
    • ไฟล์ที่ถูกต้อง: รายงาน 🎉 Validation Result: SUCCESS (Perfect AI-ready Dataset!)
    • ไฟล์ที่ชำรุด: ดักจับค่าเวลาซ้ำซ้อน พิกัด NaN และจุดข้อต่อไม่ครบได้อย่างแม่นยำทุกบรรทัด
  • การทดสอบในสภาวะแสงจริง: ทดสอบในห้องสลัว ห้องสว่าง และระยะยืนใกล้-ไกล ระบบแจ้งเตือนได้อย่างถูกต้องตามบริบทและไม่รบกวนระหว่างฝึกซ้อม
  • Production Build: คอมไพล์โค้ดและทดสอบผ่าน Jest 75 ชุดทดสอบ (100% Pass) พร้อมดีพลอยขึ้นระบบ Production บน Vercel ได้สำเร็จ

สรุปความพร้อมของระบบสู่ระยะที่ 3 (Phase 2 to Phase 3 Readiness)

การดำเนินงานในระยะที่ 2 ทั้ง 4 Sprints ส่งมอบรากฐานสำคัญที่พร้อมสนับสนุนงานวิจัยดุษฎีนิพนธ์ในระยะที่ 3 อย่างเต็มรูปแบบ:

  1. โครงสร้างพื้นฐานคลาวด์ (Cloud Infrastructure): มีระบบจัดเก็บข้อมูลพิกัดและประวัติการฝึกซ้อมที่ปลอดภัยด้วยนโยบาย RLS พร้อมรองรับอาสาสมัครวิจัย
  2. ชุดกฎชีวกลศาสตร์ครบ 12 ข้อ (Biomechanical Rules): รองรับการประเมินท่ารำม้วนไหมทั้งแบบมือเดียวและสองมือ ครอบคลุม 12 ท่าฝึกมาตรฐาน
  3. เครื่องมือจัดทำป้ายกำกับข้อมูล (Expert Annotation Suite): ผู้เชี่ยวชาญสามารถดูภาพโครงร่างย้อนหลังและให้คะแนน Ground Truth ได้อย่างเป็นระบบ
  4. ชุดข้อมูลมาตรฐาน AI-ready (Standardized Dataset): ข้อมูลพิกัดได้รับการบีบอัด ทำความสะอาด มีการอ้างอิง Baseline T-Pose และผ่านการตรวจสอบด้วยสคริปต์ Python พร้อมป้อนเข้าสู่โมเดล ST-GCN และ Transformer ทันที

TaijiFlow AI Research & Development Project (Chán Sī Jìng Biomechanics)