Full-stack Learning Guidance System ที่ผสมผสาน Algorithm Recommendation, Real-time Tracking และ Vercel Serverless เข้าด้วยกัน
SSR บน Vercel Serverless Functions, ข้อมูลถูกป้องกันด้วย Row-Level Security ทุก request ผ่าน JWT Middleware เพื่อให้มั่นใจว่าไม่มีข้อมูลหลุดข้ามบทบาท
Next.js App Router ทำงานบน Vercel Serverless Functions
ทุกตารางมี RLS — นักเรียนเห็นแค่ข้อมูลของตัวเอง
ประมวลผล Interest Score ทุกคืน ไม่กระทบ UX ระหว่างวัน
*ในอนาคตอาจมีการเปลี่ยนแปลงได้ตามความเหมาะสมและประสิทธิภาพที่ดีที่สุดในแต่ละช่วงเวลา
แต่ละฟีเจอร์ออกแบบมาเพื่อนักเรียน หัวหน้าห้อง ครู และผู้ดูแลระบบ
ฟีดกิจกรรมที่จัดเรียงด้วย Algorithm Recommendation — รองรับ Cold-Start, Collaborative Filtering และ Serendipity Detection
ค้นหา + บันทึก + ติดตามเดดไลน์ พร้อม Urgency Badge สีแดงเมื่อเหลือ ≤3 วัน — Optimistic Updates
รองรับ Recurring (รายวัน/สัปดาห์), ระดับความสำคัญ 1-5, เวลาโดยประมาณ และ Completion Tracking
จับเวลาเรียน + คำนวณ Focus Ratio (เวลาจริง / เวลาที่วางแผน) เชื่อมโยงกับวิชาและการบ้าน
สร้างกลุ่ม + รหัสเชิญ 8 ตัวอักษร, แบ่ง Subtask ให้สมาชิก ติดตามสถานะ Real-time ผ่าน Supabase Realtime
บันทึกเกรดรายวิชา คำนวณ GPAX ถ่วงน้ำหนักตามหน่วยกิต
Badge แสดงจำนวนที่ยังไม่อ่าน (สูงสุด 99+), ดึงข้อมูลอัตโนมัติทุก 60 วินาที
ดูรายชื่อนักเรียน + Completion Rate, สร้าง/จัดการการบ้านและการแข่งขัน, ดูสถานะรายคน
Funnel Analysis, Cohort Retention, NDCG Trend, Position Bias Curve, A/B Testing ด้วย Thompson Sampling, Health Monitoring
ระบบใช้ Composite Interest Score ที่ผสมผสานสัญญาณพฤติกรรม, Diversity Reranking และอื่นๆ เพื่อให้ฟีดมีทั้งความเกี่ยวข้องและความหลากหลาย
ดึงสัญญาณพฤติกรรม 5 ชนิดจาก Raw Events: ความถี่ในการดู, การบันทึก, การคลิก, การมีส่วนร่วม, และเวลาที่ใช้ — แต่ละสัญญาณมี Time Decay ตามอายุข้อมูล
Events เก่ากว่า 90 วัน จะถูกลบ — Time Decay: exp(-0.05 × days)
รวมสัญญาณทั้ง 5 เข้าด้วยกันด้วยค่าน้ำหนักที่ปรับได้ ผ่าน Tanh Normalization เพื่อบีบค่าให้อยู่ในช่วงที่เหมาะสม
ค่าน้ำหนักแต่ละตัวปรับได้ผ่าน Admin Dashboard
ปรับคะแนนในหมวดหมู่ที่มีข้อมูลน้อย เพื่อป้องกัน Overfitting — ใช้ค่าเฉลี่ยแบบ Global เป็นจุดอ้างอิง
ปรับคะแนนตามปฏิทินการศึกษา — ลดเนื้อหาในสัปดาห์สอบ เพิ่มการสำรวจในวันหยุด
ดึงข้อมูลจาก School Calendar ในฐานข้อมูล
สำหรับผู้ใช้ใหม่ที่มีข้อมูลน้อย ระบบใช้ Collaborative Filtering + Jaccard Similarity เปรียบเทียบกับผู้ใช้ที่มีความสนใจคล้ายกัน
ใช้ข้อมูล "สิ่งที่สนใจ" ขตอนลงทะเบียนเป็นจุดเริ่มต้น แล้วค่อยๆ ผสมผสานข้อมูลจริงเข้ามา
ปรับคะแนนตามปัจจัยจิตวิทยา 6 ด้าน: แรงจูงใจ ภาระทางปัญญา ความวิตกกังวล แรงกดดันทางสังคม การแสวงหาสิ่งใหม่ และพฤติกรรมตามช่วงเวลา
PCS สูง (มีแรงจูงใจ ไม่เหนื่อย) → เพิ่มเนื้อหาท้าทาย / PCS ต่ำ → แนะนำเนื้อหาที่ปลอดภัยกว่า
จัดเรียงใหม่ด้วย Maximal Marginal Relevance เพื่อสร้างความหลากหลายในฟีด — ไม่ให้เนื้อหาพื้นที่เดียวกันเรียงติดกัน
เลือก Top 20 รายการหลัง Reranking → บันทึกลง Feed Cache (TTL ตั้งค่าได้)
*อยู่ในระหว่างการพัฒนา บางส่วนอาจยังไม่สมบูรณ์หรือมีการเปลี่ยนแปลงในอนาคต
ปรับค่าสัญญาณพฤติกรรมด้านล่าง
ทดลองปรับค่าสัญญาณ แล้วดูผลลัพธ์แบบเรียลไทม์
จำนวนครั้งที่เข้าดูเนื้อหาในหมวดนี้
บันทึก +1, ยกเลิก -0.5
คลิกเปิดลิงก์ภายนอก
สมัคร, ทำกิจกรรมกลุ่ม, จับเวลา
เวลาที่ใช้ดูเนื้อหาในหมวดนี้ (dwell time)
ปานกลาง-สูง — มีโอกาสปรากฏในฟีด
0.83 · 0.76 · 0.36 · 0.58 · 0.46
ค่าสัญญาณหลัง Normalization
0.6696
คะแนนก่อนปรับ
0.6360
หลัง Smoothing
0.6360
หลัง Context Multiplier
โครงสร้างที่ออกแบบมาเพื่อความปลอดภัยและประสิทธิภาพ
Profiles, Auth Sessions, Role Management — รองรับ 4 Roles (Student, Room Leader, Teacher, Admin)
Activities, Contests, Deadlines — พร้อม Urgency Scoring และ Optimistic Updates
Homework, Subjects, Study Timers — Recurring Tasks รายวัน/สัปดาห์ + Completion Tracking
Groups, Members, Invitations, Subtasks — รหัสเชิญ 8 ตัวอักษร + Realtime Board
Interest Scores, Feed Cache, Event Logs — Batch Processing ทุกคืนด้วย pg_cron
Notifications, Event Tracking, A/B Tests — รองรับ Real-time Badge Count + Thompson Sampling
ทุกตารางที่มีข้อมูลส่วนบุคคลถูกป้องกันด้วย RLS Policy — นักเรียนเห็นแค่ข้อมูลตัวเอง, ครูเห็นข้อมูลนักเรียนในชั้นที่สอน, Admin เห็นทั้งหมดแต่ไม่สามารถแก้ไขข้อมูลข้ามบทบาทได้
ทุก Endpoint ผ่าน JWT Middleware
(student → room_leader → teacher → admin)
ใช้ Client-side Event Buffer — รวบรวม Events ไว้ในหน่วยความจำ แล้ว Flush เป็น Batch ตาม Timer / Threshold / Page Unload / Tab Hidden — ส่ง Rate Limited เพื่อลดภาระ Network
*อยู่ในระหว่างการพัฒนา API บางส่วนอาจยังไม่สมบูรณ์หรือมีการเปลี่ยนแปลงในอนาคต
BD2LGS สร้างขึ้นโดยนักเรียน บดินทรเดชา ๒
ด้วย passion เพื่อแก้ปัญหาจริงในโรงเรียน