แผนการดำเนินงาน ระยะที่ 2: TaijiFlow AI
เป้าหมาย: พัฒนาระบบระบบบัญชีผู้ใช้ (User Account) และท่อส่งข้อมูลการฝึก (Data Pipeline) เพื่อสะสมฐานข้อมูล (Dataset) พิกัดสองมือ (8 ท่า) สำหรับเตรียมพร้อมฝึกสอน AI ด้วย Deep Learning / Machine Learning ในระยะที่ 3 โดยเน้นประสิทธิภาพของข้อมูล และยังคงรักษาระบบแจ้งเตือนแบบเรียลไทม์ (Real-time Feedback) ฝั่งเว็บไว้
Tech Stack:
- Frontend: HTML/JS + MediaPipe (รัน Heuristics Engine v3.0 บน Client-side เพื่อการตอบสนองที่ไร้ความหน่วง)
- Backend: Serverless (เชื่อมต่อตรงไปยัง Supabase Client SDK เพื่อความรวดเร็วและประหยัดค่าโฮสติ้ง)
- Database & Storage: Supabase (PostgreSQL + Cloud Storage) พร้อมระบบ Row Level Security (RLS)
🏃♂️ Sprint 1: Supabase Setup & Authentication (สัปดาห์ที่ 1 - 2)
เป้าหมาย: ติดตั้งฐานข้อมูลระบบสมาชิกและความปลอดภัยในการเข้าถึงข้อมูล
รายการงาน (Tasks):
- [x] 1.1 Supabase Database Setup & Security:
- [x] สร้างโปรเจกต์ Supabase และเปิดใช้งาน Email/Password Auth
- [x] ออกแบบ Database Schema รองรับการฝึกและการทำ Calibration:
users:id(UUID),display_name,height_cm,weight_kg,experience_level,role(trainee | expert | admin)training_sessions:id,user_id,exercise_id(เช่น2h_cw_cw),score,duration_seconds,coordinate_file_url,top_errors(JSONB),camera_angle(หน้าตรง/เฉียง),created_at
- [x] ตั้งค่า Row Level Security (RLS) Policies บน Postgres และ Storage Bucket เพื่อให้ผู้ใช้สามารถเขียน/อ่านข้อมูลและไฟล์เฉพาะของตนเองได้เท่านั้น
- [x] 1.2 Frontend Integration (Auth):
- [x] สร้างหน้าจอ (UI) สำหรับ Login และ Register
- [x] เชื่อมต่อ Supabase Client SDK เข้ากับ Frontend ในเว็บแอปพลิเคชัน
- [x] สร้างหน้า Dashboard พื้นฐานสำหรับแสดงโปรไฟล์ผู้ใช้หลังล็อกอิน และตารางประวัติผลคะแนนย้อนหลัง
✅ สิ่งที่ส่งมอบ (Deliverable): ระบบสมาชิกที่สามารถสมัครและล็อกอินเข้าสู่ระบบได้จริง พร้อมฐานข้อมูลที่ปลอดภัยด้วยสิทธิ์ RLS
🏃♂️ Sprint 2: Data Pipeline & Data Optimization (สัปดาห์ที่ 3 - 4)
เป้าหมาย: สร้างระบบส่งออกข้อมูลดิบควบคู่ผลการตรวจจับที่ปรับปรุงขนาดให้เล็กและนำไปใช้ในโมเดล ML ได้ง่าย
รายการงาน (Tasks):
- [x] 2.1 Coordinate Data Optimization (ใน data_exporter.js):
- [x] ปรับแก้การจัดรูปแบบ JSON: จัดเก็บพิกัดดิบจาก MediaPipe และผลลัพธ์การประเมินรายเฟรม (Auto-Label)
- [x] ปรับลดทศนิยมของพิกัดพอยต์ให้เหลือ 4 ตำแหน่ง เพื่อลดขนาดไฟล์ลงมากกว่า 50%
- [x] เพิ่มการเก็บค่า
t(Relative Timestamp ในหน่วยมิลลิวินาทีของแต่ละเฟรม) เพื่อแก้ปัญหา FPS ของอุปกรณ์ไม่เท่ากัน (สำหรับใช้ใน Time-series ML ในอนาคต) - [x] ทำระบบบันทึกค่าพิกัดท่ายืนเริ่มต้น (Calibration Pose) ไว้ใน Metadata ของไฟล์
- [x] 2.2 Supabase Storage Integration (Direct Upload):
- [x] เขียนฟังก์ชันอัปโหลดไฟล์พิกัด JSON บีบอัดตรงจากเบราว์เซอร์ขึ้นไปยัง Supabase Storage Bucket
- [x] เมื่ออัปโหลดไฟล์สำเร็จ ให้ทำการเขียนบันทึกข้อมูลคะแนนและ URL ของไฟล์ลงในตาราง
training_sessions
✅ สิ่งที่ส่งมอบ (Deliverable): ระบบท่อส่งข้อมูลที่บีบอัดและอัปโหลดพิกัดการรำจริงขึ้น Cloud Storage ทันทีหลังฝึกเสร็จ พร้อมตารางเก็บข้อมูลที่สะอาดเป็นระเบียบ
🏃♂️ Sprint 3: Two-Hand Heuristics & Annotation Tool (สัปดาห์ที่ 5 - 7)
เป้าหมาย: พัฒนากฎของท่า 2 มือ 8 ท่าฝั่งเบราว์เซอร์ และทำระบบช่วยตรวจสอบข้อมูล (Annotation Tool)
รายการงาน (Tasks):
- [x] 3.1 Two-Hand Heuristics Rules (JS):
- [x] เขียนตรรกะ Heuristics เพิ่มเติมใน
heuristics_engine.jsสำหรับความสัมพันธ์ของ 2 มือ (Symmetry, Hand-to-Hand Distance, และเวกเตอร์การเคลื่อนไหวของทั้งสองฝั่ง) - [x] สร้างและกำหนดค่ากฎสำหรับท่าม้วนไหม 2 มือ (8 ท่า)
- [x] ปรับปรุงการคำนวณคะแนนภาพรวมใน
scoring_manager.js
- [x] เขียนตรรกะ Heuristics เพิ่มเติมใน
- [x] 3.2 Skeletal Replay & Expert Labeling Tool:
- [x] ต่อยอด
replay_manager.jsให้แอดมินหรือครูผู้ฝึกสามารถคลิกเปิดรีเพลย์เส้นร่าง 3D จากข้อมูลพิกัด JSON บนหน้าเว็บย้อนหลังได้ - [x] สร้าง UI สำหรับปุ่มให้คะแนนจริงจากผู้เชี่ยวชาญ (Human Annotation) เพื่อบันทึกทับฟิลด์คะแนนดั้งเดิม (สำหรับนำไปใช้เป็นตัวเทียบคู่ใน Phase 3)
- [x] ต่อยอด
✅ สิ่งที่ส่งมอบ (Deliverable): ฟังก์ชันแจ้งเตือนสดท่าม้วนไหม 2 มือ 8 ท่า พร้อมระบบให้ผู้เชี่ยวชาญตรวจสอบประเมินคุณภาพของ Dataset ผ่านการดูรีเพลย์
🏃♂️ Sprint 4: Data Gathering & Deployment (สัปดาห์ที่ 8)
เป้าหมาย: ทดสอบระบบ รวบรวม Dataset จากผู้ฝึกจริง และปล่อยขึ้นระบบออนไลน์
รายการงาน (Tasks):
- [x] 4.1 System Testing & Data Validation:
- [x] ทดสอบความเข้ากันได้ของการอัปโหลดไฟล์และสิทธิ์ RLS บนเครือข่ายความเร็วต่าง ๆ
- [x] เขียนสคริปต์ Python ในฝั่ง AI สั้น ๆ เพื่อทดลองดึงไฟล์ JSON จาก Supabase มาแปลงเป็น NumPy Array / Pandas Dataframe เพื่อทดสอบว่าไม่มีโครงสร้างจุดใดพังและข้อมูลมีความสม่ำเสมอพร้อมใช้งาน
- [x] 4.2 Deployment & Scaling:
- [x] ดีพลอย Frontend ขึ้น Vercel
- [x] เริ่มต้นกิจกรรมเก็บรวบรวมข้อมูลกับผู้ฝึกหลากหลายระดับเพื่อสะสม Dataset ในฐานข้อมูล
✅ สิ่งที่ส่งมอบ (Deliverable): เว็บแอปพลิเคชัน TaijiFlow AI ระยะที่ 2 พร้อมใช้เก็บข้อมูล Dataset ที่สมบูรณ์แบบเพื่อป้อนให้ทีมพัฒนา AI ในระยะที่ 3