สารบัญคู่มือ
สำหรับครู

จัดการนักเรียน

นักเรียนถูกผูกอยู่กับห้องเรียนผ่านระบบ Enrollment — บัญชีนักเรียน 1 คนใช้ร่วมกันทั้งโรงเรียน (รหัสนักเรียน unique เฉพาะภายในโรงเรียน) จึงสามารถ enroll ได้หลายห้องของครูคนเดียวกันหรือต่างคน บทนี้ครอบคลุม 3 วิธีในการเพิ่มนักเรียนเข้าห้อง: เพิ่มเองทีละคน, นำเข้าจากไฟล์ Excel แบบ wizard 3 ขั้น และการดึงบัญชีนักเรียนที่มีอยู่แล้วในโรงเรียน

หน้านักเรียนในห้อง

กริดการ์ดนักเรียน (4-3-2-1 คอลัมน์ตามจอ) + ช่องค้นหา + 2 ปุ่มหลัก: 'เพิ่มนักเรียน' (ทีละคน) และ 'นำเข้ารายชื่อ' (จาก Excel)

หน้าตา Empty State

ห้องใหม่ที่ยังไม่เคยเพิ่มนักเรียนจะขึ้น empty state "👋 ยังไม่มีนักเรียนในห้องนี้" พร้อมปุ่ม 2 ทาง

หน้า students ของห้องใหม่ที่ยังไม่มีนักเรียน
รูปที่ 1 หน้า students ว่างเปล่า

หน้าตาเมื่อมีนักเรียนแล้ว — กริดการ์ด

นักเรียนแต่ละคนเป็นการ์ด 1 ใบในกริด 4 คอลัมน์ (responsive 4→3→2→1 ตามขนาดจอ) — แทนตารางแถวยาวๆ แบบเดิม เพื่อให้กวาดสายตาเร็วในห้องที่มี 30–50 คน

การ์ดแต่ละใบประกอบด้วย:

  • Ribbon มุมซ้ายบน = #<เลขที่> สีหมุน 6 สีตามลำดับ
  • ชื่อ-สกุล เด่นกลางการ์ด
  • รหัสนักเรียน เป็นชิปเล็กใต้ชื่อ (ถ้ามี)
  • อีเมล พร้อมไอคอน (ซ่อนถ้าเป็น synthetic email)
  • Footer 3 ปุ่ม — ปุ่ม แก้ไข สีมินต์ (CTA หลัก) + ไอคอน รีเซ็ตรหัส + ไอคอน นำออกจากห้อง

การ์ดเรียงตาม studentNumber ที่ตั้งไว้ — ถ้าไม่ได้ตั้งจะ fallback เรียงตามเวลาเพิ่ม

กริดการ์ดนักเรียน 4 คอลัมน์ — ribbon เลขที่ที่มุมซ้ายบนของแต่ละการ์ด + ชื่อ + รหัส + อีเมล + ปุ่ม 'แก้ไข' + 2 icon (reset/remove)
รูปที่ 2 กริดการ์ดนักเรียน 4 คอลัมน์ + filter bar ด้านบน

ค้นหานักเรียนในห้อง

เหนือกริดมี ช่องค้นหา — พิมพ์ชื่อ, รหัสนักเรียน หรืออีเมล ระบบจะกรองการ์ด ทันทีขณะพิมพ์ (ไม่ต้องกด Enter, ค้นแบบ ไม่สนตัวพิมพ์ใหญ่-เล็ก)

  • ช่องค้นหา มีปุ่ม × ปรากฏเมื่อมีคำพิมพ์อยู่ — กดเพื่อล้าง
  • ใต้ช่องค้นหามี chip บอกจำนวน เช่น "พบ 3 คน จากทั้งหมด 42" เพื่อเช็คว่าตัวกรองทำงานถูกต้อง
  • ถ้าค้นแล้วไม่เจอ จะแสดงกล่อง "ไม่พบนักเรียนที่ตรงกับคำค้นหา" พร้อมปุ่ม ล้างคำค้นหา สีชมพู
หน้านักเรียนตอน search active — match chip 'พบ N คน จากทั้งหมด M' + กริดเหลือเฉพาะการ์ดที่ตรงคำค้น
รูปที่ 2b search active — match chip + กริดที่กรองเหลือเฉพาะการ์ดที่ตรง

เพิ่มนักเรียนทีละคน

เหมาะกับห้องเล็ก หรือเพิ่มย้อนหลังคนเดียว — ระบบช่วย lookup บัญชีเก่าให้อัตโนมัติ

คลิก 'เพิ่มนักเรียน'

ปุ่ม เพิ่มนักเรียน สีมินต์อยู่มุมขวาบนตาราง — กดเปิด StudentFormDialog (ribbon mint สำหรับโหมดสร้าง)

Dialog 'เพิ่มนักเรียน' ribbon มินต์ ฟอร์มเปล่า
รูปที่ 3 Dialog 'เพิ่มนักเรียน'

กรอกฟอร์ม 5 ช่อง

  • เลขที่ — ตำแหน่งในรายชื่อ (ตัวเลข) ใช้เรียงตาราง
  • รหัสนักเรียน — Student Code (1-30 ตัวอักษร) ใช้เป็น username ตอน login
  • คำนำหน้า — เช่น ด.ช. / นาย / น.ส. (ไม่จำเป็น)
  • ชื่อ-สกุล — ชื่อเต็มที่จะแสดงในรายงาน
  • อีเมล — ไม่จำเป็น ระบบจะ generate synthetic email student-<รหัส>@s<schoolId>.students.dograde.local ให้ ถ้าเว้นว่าง

ระบบ Lookup บัญชีเดิม (สำคัญมาก)

หลังพิมพ์รหัสนักเรียนแล้ว blur ออกจากช่อง ระบบจะ ค้นหาในโรงเรียนของคุณ ว่ารหัสนี้มีบัญชีอยู่แล้วไหม — เพื่อให้ครูคนถัดมาที่สอนนักเรียนเดิม (ในโรงเรียนเดียวกัน) ไม่ต้องสร้างใหม่

4 สถานะที่ระบบตอบกลับ:

  • 🔵 checking — กำลังตรวจ (ปุ่ม submit disabled)
  • 🟢 found — พบบัญชีในระบบ → auto-fill ชื่อ + email และ ล็อกช่อง readonly — กดบันทึกเพื่อ enroll เข้าห้องนี้
  • 🟠 already-enrolled — นักเรียนคนนี้อยู่ในห้องนี้แล้ว → submit ถูก block
  • 🔴 not-student — รหัสนี้มีบัญชีอยู่ แต่ไม่ใช่ role student (เช่นเป็นครู) → submit ถูก block
Dialog เพิ่มนักเรียน ตอนพบบัญชีนักเรียนเดิมในระบบ — ชื่อกับ email ถูกล็อก readonly
รูปที่ 4 สถานะ 'found' — auto-fill ชื่อ + email

กดบันทึก → เห็นรหัสผ่านชั่วคราว (โหมดสร้างใหม่เท่านั้น)

ถ้าเป็น การสร้างบัญชีใหม่ (ไม่ใช่ enroll บัญชีเก่า) หลังบันทึกสำเร็จ dialog จะ ไม่ปิด — เปลี่ยนเป็น StudentCreatedPanel:

  • หัวเรื่อง "สร้างบัญชีนักเรียนแล้ว" มี check_circle เขียว
  • กล่องสีมินต์แสดงรหัสผ่านชั่วคราวด้วย font monospace
  • ปุ่ม คัดลอก → copy ลง clipboard, Toast "คัดลอกแล้ว"
  • ปุ่ม เพิ่มอีกคน รีเซ็ตฟอร์ม / ปิด ปิด dialog
Panel หลังเพิ่มนักเรียนสำเร็จ แสดงรหัสผ่านชั่วคราว
รูปที่ 5 StudentCreatedPanel แสดงรหัสผ่านชั่วคราว

แก้ไข / ลบ / รีเซ็ตรหัสผ่าน

3 action ใน footer ของการ์ดนักเรียน — ปุ่ม 'แก้ไข' (CTA) + 2 ไอคอนกลม

แก้ไขข้อมูลนักเรียน

คลิกปุ่ม แก้ไข สีมินต์ที่ footer ของการ์ด — เปิด StudentFormDialog โหมดแก้ไข (ribbon ลาเวนเดอร์) แก้ เลขที่ คำนำหน้า ชื่อ-สกุล อีเมล ได้ แต่ รหัสนักเรียนแก้ไม่ได้ (เป็น key ของบัญชี)

รีเซ็ตรหัสผ่าน

คลิกไอคอน (วงกลมสีขาว) ที่การ์ด → confirm dialog "รีเซ็ตรหัสผ่านนักเรียน?" + คำเตือนว่านักเรียนจะถูก บังคับเปลี่ยนรหัสครั้งถัดไป และ ออกจากระบบทุกอุปกรณ์ทันที

หลังยืนยัน ระบบ generate รหัสผ่านใหม่และตั้ง mustChangePassword=true — รหัสใหม่จะแสดงใน TempPasswordBanner สีมินต์ที่ขึ้นเหนือกริด พร้อมปุ่มคัดลอก

Banner สีมินต์ขึ้นบนกริดการ์ดหลังรีเซ็ตรหัสผ่าน แสดงรหัสใหม่
รูปที่ 6 Banner รหัสผ่านใหม่หลังรีเซ็ต

นำนักเรียนออกจากห้อง

คลิกไอคอน (วงกลมสีขาว) ที่การ์ด → confirm "นำนักเรียนออกจากห้อง?" เป็นการลบ Enrollment (ความสัมพันธ์นักเรียน–ห้อง) ไม่ใช่ลบบัญชีนักเรียน

บัญชีนักเรียนยังอยู่ในระบบ ใช้ login ได้ และครูคนอื่นยังเพิ่มเข้าห้องของตนได้ ส่วนคะแนนเดิมที่บันทึกไว้ใน ห้องนี้ จะหายไปด้วย

นำเข้านักเรียนจาก Excel — Wizard 3 ขั้น

เหมาะกับห้องเริ่มเทอม หรือนักเรียนเยอะ — เปิดผ่านปุ่ม 'นำเข้ารายชื่อ' ที่หน้ารวมห้องเรียน

ขั้นที่ 1 — เลือกไฟล์

กลับไปที่หน้ารวมห้องเรียน (คลิก ห้องเรียนของฉัน ที่มุมขวาบน) → คลิกปุ่ม นำเข้ารายชื่อ ที่ toolbar บนกริดห้องเรียน

Drop ไฟล์ลง drag-drop zone หรือคลิกเลือก — รองรับ .xlsx, .xls, .csv ขนาด ≤ 5MB และ ต้องมีแถวหัวคอลัมน์

มีลิงก์ "ดาวน์โหลด template" ดึงไฟล์ Excel เปล่ามาให้ใช้เป็นต้นแบบ

หน้า import step 1 — drag-drop zone + ลิงก์ดาวน์โหลด template + ปุ่มตรวจสอบไฟล์
รูปที่ 7 หน้า Import ขั้น 1 — Upload

คอลัมน์ที่ระบบรู้จัก (fuzzy match)

ระบบจับคู่ header กับ field โดย ไม่สนตัวพิมพ์ใหญ่-เล็ก และยอมรับหลายชื่อ:

  • รหัสนักเรียน (จำเป็น) — "รหัสนักเรียน", "studentCode", "รหัส", "code", "ID"
  • ชื่อ-สกุล (จำเป็น) — "ชื่อ-สกุล", "ชื่อ", "fullName", "name"
  • เลขที่ — "เลขที่", "studentNumber", "no", "number"
  • คำนำหน้า — "คำนำหน้า", "titlePrefix", "prefix"
  • อีเมล — "อีเมล", "email" (ถ้าเว้นว่าง ระบบ synthesize ให้)
  • รหัสผ่าน — "รหัสผ่าน", "password" (≥4 ตัวอักษร) — ถ้าเว้นว่าง ระบบ generate random alphanumeric ให้แต่ละคน

ขั้นที่ 2 — Preview + Column Mapping + เลือกห้อง

หลังกด ตรวจสอบไฟล์ ระบบอ่านไฟล์แล้วแสดง:

  1. Column Mapping Panel — บอกว่า header ในไฟล์ map ไปคอลัมน์อะไรของระบบ
  2. Warning — แถวที่อาจมีปัญหา (รหัสซ้ำในไฟล์, email format ผิด ฯลฯ)
  3. Preview Table — แสดง 10 แถวแรกเพื่อ verify ก่อนนำเข้าจริง
  4. Dropdown 'เลือกห้องเรียน' — เลือกว่าจะนำเข้าไปห้องไหน (จำเป็น — ถ้าไม่เลือก ปุ่มยืนยันจะ disabled)

ในตาราง preview รหัสผ่านที่ผู้ใช้กรอกจะแสดงเป็น ••••• ส่วนรหัสที่ระบบ generate ให้จะเห็นเต็มๆ (จะถูก hash ก่อนเก็บใน DB)

หน้า import step 2 — column mapping + ตาราง preview 10 แถวแรก + dropdown เลือกห้อง
รูปที่ 8 ขั้น 2 — Preview + Column Mapping

ขั้นที่ 3 — ผลลัพธ์ + รหัสผ่านชั่วคราว

หลังกด ยืนยันนำเข้า N คน ระบบประมวลผลและสรุปเป็น 3 ตัวเลข:

  • สร้าง — บัญชีนักเรียนใหม่ที่ระบบสร้างให้ + enroll เข้าห้อง
  • ลงทะเบียน — บัญชีนักเรียนเดิมที่มีอยู่แล้ว ระบบเพียง enroll เข้าห้องใหม่
  • ข้าม — แถวที่ skip (รหัสซ้ำในห้อง, format ผิด ฯลฯ)

Toast เขียว "นำเข้าเสร็จสิ้น — สร้าง [N] / ลงทะเบียน [M] / ข้าม [L]" + ลิงก์กลับหน้านักเรียนของห้องนั้น

หน้า import step 3 — สรุปผล สร้าง/ลงทะเบียน/ข้าม + ลิงก์ไป students page
รูปที่ 9 ขั้น 3 — ผลลัพธ์

สรุปการเพิ่มนักเรียน — เลือกวิธีไหนดี?

ทั้ง 3 วิธีนำไปสู่ผลลัพธ์เดียวกัน — เลือกจากจำนวนคนและสถานะบัญชี

วิธีเหมาะกับความเร็ว
เพิ่มทีละคน (StudentFormDialog)เพิ่มย้อนหลัง 1-2 คน, แก้รายละเอียดเป็นรายคนช้ามากถ้าหลายคน
เพิ่มทีละคน + lookup foundดึงบัญชีเก่าที่ครูคนอื่นสร้างไว้ (เช่นเลื่อนชั้น)เร็วเพราะ auto-fill
Import จาก Excelเริ่มเทอม, ทั้งห้อง 20-50 คนเร็วที่สุด

เข้าสู่ระบบ

ยินดีต้อนรับกลับมา

ใส่อีเมลและรหัสผ่านที่ได้รับจากผู้ดูแลระบบ

ยังไม่มีบัญชี? ลงทะเบียนขอใช้งาน แล้วรอผู้ดูแลอนุมัติ

เชื่อมต่อ LINE

รับการแจ้งเตือนผ่าน LINE OA

DoGrade จะส่งคะแนน/การบ้าน/อัปเดตสำคัญผ่าน LINE OA
ผูกครั้งเดียว ไม่ต้องคอยเช็คเว็บ

  • ทราบทันทีที่ครูประกาศคะแนน
  • เตือน deadline การบ้านล่วงหน้า
  • ครูคอมเมนต์ส่งงาน → ได้ noti