ส่งออกเอกสาร
เปลี่ยนข้อมูลคะแนนในห้องเป็นไฟล์ .xlsx เพื่อส่งฝ่ายวิชาการ เก็บไว้ใช้เอง หรือเอาเข้าระบบกลางอย่าง SGS — เลือกรูปแบบที่ฝ่ายต้องการ (3 preset) แล้วระบบจัดคอลัมน์/ชีตให้ตรงโครงสร้างเลย
ก่อนเปิดหน้านี้ — ต้องมีนักเรียน + วิชา
เหมือนหน้าสรุปคะแนน ถ้าขาด ระบบจะขึ้น StepEmptyState
StepEmptyState ของหน้าส่งออก
ถ้านักเรียน = 0 หรือหัวข้อประเมิน = 0 — หน้านี้ ไม่แสดงฟอร์ม แต่ขึ้น empty state พร้อมลิงก์กลับไปสร้าง
ปุ่ม "ดาวน์โหลด .xlsx" จะ disable ตราบใดที่ยังไม่ครบ — ป้องกัน export ไฟล์เปล่า
ภาพรวมหน้าส่งออก
4 panel เรียงลงล่าง: FontNotice · สรุปข้อมูล · เลือกรูปแบบ · ตัวเลือกเสริม
โครงสร้างของหน้า
- FontNoticeCard — แจ้งเตือนเรื่องฟอนต์ไทย (ไฟล์ .xlsx ใช้ฟอนต์ระบบเครื่องที่เปิด)
- สรุปข้อมูล — badge บอกว่า "นักเรียน N · หัวข้อ M"
- เลือกรูปแบบ (PresetPicker) — radio 3 ตัว
- CategoryMappingPanel — โผล่เฉพาะตอนเลือก preset ปพ.5 หรือ SGS
- ตัวเลือกเสริม — 4 checkbox (รวม/ร้อยละ/เกรด/ปกปิดชื่อ)
- ปุ่ม ดาวน์โหลด .xlsx ที่มุมขวาล่าง
3 preset — เลือกรูปแบบไฟล์
คะแนนดิบ (Plain) / ปพ.5 (บางส่วน) / SGS-ready — เลือกตามที่ฝ่ายวิชาการขอ
PresetPicker — กดที่กล่อง radio
preset ที่ active จะมีพื้นลาเวนเดอร์ + เงา ink ส่วน preset อื่น เป็นพื้นขาวธรรมดา
Preset A · 'คะแนนดิบ (Plain)'
ใช้เมื่อ: เก็บไว้เอง / ส่งคนอื่นที่ไม่ต้องการรูปแบบฝ่ายวิชาการ
ได้อะไร:
- ไฟล์ Excel 1 ชีต
- คอลัมน์: เลขที่ · รหัสนักเรียน · ชื่อ · วิชา/หัวข้อทั้งหมด · รวม · ร้อยละ · เกรด
- เรียงตามเลขที่นักเรียน
Preset B · 'ปพ.5 (บางส่วน)'
ใช้เมื่อ: ฝ่ายวิชาการขอเอกสารมาตรฐานตามแบบฉบับปัจจุบันของระบบ
ได้อะไร:
- ไฟล์ Excel หลายชีต แยกตาม "หมวด ปพ.5" ของหัวข้อประเมิน
- หมวดที่ระบบรู้จัก: ก่อนกลางภาค (pre_mid) · กลางภาค (midterm) · หลังกลางภาค (post_mid) · ปลายภาค (final)
- หัวข้อที่ไม่มีหมวด — จะถูกตัดออกจาก preset นี้
ระบบจะโชว์ "จัดหมวดแล้ว N/M หัวข้อ (X%)" ใต้กล่อง preset เพื่อให้รู้ว่าจะส่งออกไปเท่าไร
Preset C · 'SGS-ready'
ใช้เมื่อ: โรงเรียนใช้ระบบ SGS (ระบบนักเรียนของ สพฐ.) ผ่าน Chrome extension "SGS Autofill"
ไฟล์จะถูกจัดคอลัมน์ตรงกับช่องบน SGS — ครูเปิด SGS, เปิดไฟล์นี้, ใช้ปลั๊กอินช่วย auto-fill ตัวเลขข้ามแอป — ไม่ต้อง copy ทีละช่อง
จัดหมวด ปพ.5 (CategoryMappingPanel)
ปรับว่าหัวข้อไหนอยู่ก่อนกลางภาค / กลางภาค / หลังกลางภาค / ปลายภาค
panel จะโผล่เฉพาะ preset ปพ.5 / SGS
เลือก preset "คะแนนดิบ (Plain)" — ไม่ขึ้น panel นี้ เพราะ Plain ไม่ใช้หมวด
เลือก ปพ.5 หรือ SGS-ready — panel โผล่ใต้ PresetPicker ทันที
ตารางจัดหมวด
แต่ละแถวคือ 1 หัวข้อประเมิน — มี dropdown 5 ตัวเลือก:
- ก่อนกลางภาค (pre_mid)
- กลางภาค (midterm)
- หลังกลางภาค (post_mid)
- ปลายภาค (final)
- ทั่วไป (เก็บ) — จะถูกตัดออกจากไฟล์ ปพ.5 / SGS
ค่าตั้งต้นมาจากการจัดหมวดที่หน้า วิชา/หัวข้อ ของห้องนั้น — ครูปรับซ้ำในหน้านี้ได้ (override ครั้งเดียวต่อการ export)
ตัวเลือกเสริม (4 checkbox)
เปิด/ปิดคอลัมน์รวม/ร้อยละ/เกรด + ปกปิดชื่อ
4 checkbox ที่ครูเลือกได้
- ☑ รวมคอลัมน์ "รวม" (เปิด default) — sum คะแนนของหัวข้อในชีตนั้น
- ☑ รวมคอลัมน์ "ร้อยละ" (เปิด default) — % คิดจาก รวม ÷ คะแนนเต็มรวม × 100
- ☑ รวมคอลัมน์ "เกรด" (เปิด default) — ตัวอักษรจากเกณฑ์เกรด
- ☐ ปกปิดชื่อ (เหลือเฉพาะรหัส) (ปิด default) — เอาคอลัมน์ "ชื่อ-สกุล" ออก เหลือแค่รหัสนักเรียน (ใช้ตอนแชร์เพื่อ feedback แบบ anonymous)
กดดาวน์โหลด — รับไฟล์ .xlsx
ปุ่ม 'ดาวน์โหลด .xlsx' มุมขวาล่าง
กดปุ่ม → ระบบ POST form ไปที่ /dashboard/teacher/[id]/export/download → backend สร้างไฟล์ Excel → ตอบกลับด้วย header Content-Disposition: attachment → เบราว์เซอร์เซฟไฟล์ลงเครื่องอัตโนมัติ
ชื่อไฟล์: {ชื่อห้อง}-{preset}-{วันที่}.xlsx
ระบบ ไม่ใช้ use:enhance ในฟอร์มนี้ เพราะอยากให้เบราว์เซอร์ handle download เอง (ไม่ใช่ ajax)
สรุป — เลือก preset แบบไหนเมื่อไร
| สถานการณ์ | preset แนะนำ |
|---|---|
| เก็บไฟล์เอง / ส่งเพื่อนครู / ใช้คุยในที่ประชุม | คะแนนดิบ (Plain) |
| ฝ่ายวิชาการขอเล่ม ปพ.5 | ปพ.5 (บางส่วน) — ตรวจ coverage ก่อนกด |
| คีย์เข้าระบบ SGS ของ สพฐ. | SGS-ready + ใช้คู่ปลั๊กอิน SGS Autofill |