แบ่งบทบาททีม
คน 01 ใช้ Owner เดิมได้ คนอื่นใช้บัญชีแยกตามบทบาท ถ้าทีมมี Owner สำรองให้นับนอก 10 คนและเลือกเก็บบัญชีไว้ด้วย ไม่แจกสิทธิ์ Owner ให้ทุกคน
ชุดข้อมูลร่วม
P01/P02/P03/PT01/PT02/PILOT-G01 เป็นชื่ออ้างอิงในแบบฝึก หากระบบออกรหัสอัตโนมัติให้ใช้รหัสของระบบ ใส่ชื่ออ้างอิงในชื่อ/หมายเหตุ แล้วจดรหัสจริงในช่องหลักฐาน
P01 น้องฟ้า และ P02 น้องต้น อยู่กลุ่ม PILOT-G01; P03 น้องดาว ใช้ทดสอบ Refund แยก; PT01/PT02 สอนวิชาเดียวกันได้; Parent A ผูก P01/P03 และ Parent B ผูก P02 ใช้ห้องที่มีที่นั่งนักเรียนอย่างน้อย 2 ที่ โดยจำนวนที่นั่งผู้สอนไม่ใช่จำนวนรับนักเรียน
ชั่วโมงเริ่มต้น P01/P02 คนละ 10 ชั่วโมง ราคา 4,000 บาทต่อคนเป็นข้อมูลตัวอย่าง หากต้องใช้ราคาจริงในทะเบียน ให้ผู้คุมรอบจดยอดที่ตกลงใหม่แล้วคำนวณผลคาดหวังก่อนซ้อม เรทครูและกฎขาดเรียนใช้ค่าที่ตั้งไว้จริง ตรวจทุกครั้ง ไม่เดาจากยอดขาย
P00 · คน 01 + ทุกคน
เตรียมรอบและตรวจสิทธิ์
ก่อนเริ่ม: ติดตั้ง v0.8.41 บน staging
- นัดเวลาหยุดรายการทั้งทีม ตรวจ /health เป็น v0.8.41 และ staging
- Owner เปิดหน้าทำรายการ → ตั้งค่า → ระบบ → Pilot Reset ตรวจรายการล้าง/เก็บ และเลือกบัญชีทีมที่ต้องการเก็บ รวมตนเอง
- พิมพ์ เริ่มรอบซ้อมใหม่ แล้วจดชื่อ backup ที่แสดง ตรวจว่าข้อมูลนักเรียน/ติวเตอร์ว่าง และ Asset/ห้อง/โรงเรียนยังอยู่
- สร้าง/ใช้บัญชีแยกตามบทบาท 10 คน รหัสผ่านตั้งเองและส่งให้เจ้าตัวโดยตรง ห้ามใส่ในแบบบันทึกนี้
- บัญชี Tutor/Family ที่ยังไม่สร้าง ให้สร้างหลัง P01 เมื่อมีบุคคลให้ผูกแล้ว; ไม่ใช้ Owner แทนบทบาทอื่น
ผลที่ต้องได้: Owner ยังเข้าได้; บัญชีที่ไม่เลือกถูกปิด; ผู้ใช้คนอื่นต้อง login ใหม่; ผู้จัดการ/Admin เปิดเครื่องมือ Reset ไม่ได้
หลักฐาน: ชื่อ backup, ภาพรายการเก็บ และผลสิทธิ์
P01 · คน 03,04,01
สร้างนักเรียน ติวเตอร์ และผูกบัญชี
ก่อนเริ่ม: P00 ผ่าน
- Admin สร้างนักเรียนสมมติ P01 น้องฟ้า, P02 น้องต้น, P03 น้องดาว พร้อมผู้ปกครองทดลอง เลือกโรงเรียนจาก Dropdown
- Admin/Manager ตามสิทธิ์ทะเบียนสร้าง PT01 ครูทดลองหนึ่ง และ PT02 ครูทดลองสอง กำหนดวิชาที่สอนได้ สาขา เวลาว่าง เรทค่าสอน
- Owner สร้างหรือแก้บัญชีคน 07/08 ให้ผูก PT01/PT02; ผูกคน 09 กับ P01/P03 และคน 10 กับ P02 โดยยืนยันความสัมพันธ์ แล้วเปิดใช้งานบัญชีที่ถูกพักไว้หลัง Reset
- แต่ละคน login ใหม่ ตรวจเมนูและรายชื่อนักเรียนที่ตนมีสิทธิ์เห็น; ผู้จัดการต้องดูรายชื่อเด็กในขอบเขตตนได้
- กำหนดรายวิชากลุ่มหนึ่งวิชา ราคาแพ็กเกจทดลอง 10 ชั่วโมง 4,000 บาท ถ้ากฎราคาปัจจุบันไม่อนุญาต ให้ผู้รับผิดชอบตั้งราคาทดลองก่อนขาย
ผลที่ต้องได้: Parent A เห็น P01/P03; Parent B เห็น P02; Tutor เห็นงานของตน; รหัสไม่ซ้ำและโรงเรียนเชื่อมถูกต้อง
หลักฐาน: รหัสนักเรียน/ครู, ภาพหน้าจอจากแต่ละบัญชี
P02 · คน 04 → 06 → 09,10 → 02
ขายแพ็กเกจ รับเงิน ออกใบเสร็จ
ก่อนเริ่ม: P01 ผ่าน
- ขาย P01 และ P02 คนละ 10 ชั่วโมง ยอดสุทธิ 4,000 บาท ไม่มีส่วนลด ใช้ราคาใน P01
- Finance รับเต็มจำนวนคนละหนึ่งรายการ ออกใบเสร็จและตรวจชื่อโรงเรียน/นักเรียน/จำนวนเงิน
- Parent ตรวจชั่วโมงคงเหลือ; Manager ตรวจยอดรับเงิน; Refresh หน้าแล้วตรวจว่าไม่เกิดรายการซ้ำ
ผลที่ต้องได้: รับเงินรวม 8,000 บาท; ชั่วโมงเริ่มต้นคนละ 10; เลขที่ใบเสร็จไม่ซ้ำ; ยอดรับเงินไม่จำเป็นต้องเท่ารายได้ที่รับรู้ก่อนสอน
หลักฐาน: เลข SO/ใบเสร็จ 2 ชุด, ยอด Package
P03 · คน 04 → 07
จัดกลุ่มและเปิดคาบ
ก่อนเริ่ม: P02 ผ่าน
- สร้างกลุ่ม PILOT-G01 มี P01/P02 ใช้ PT01 และห้องที่ความจุพอ กำหนดคาบ S1 ระยะ 2 ชั่วโมง
- ทดลองจอง Tutor หรือห้องเดิมเวลาชนกัน ระบบต้องแจ้งขัดแย้ง แล้วจัดเวลาที่ไม่ชน
- Tutor PT01 เปิดคาบและเช็กชื่อทั้งสองคนมาเรียน; ถ้าเวลาไม่ถึง ให้ Owner พิจารณาโหมดทดสอบปลดล็อกเวลาเฉพาะ staging
ผลที่ต้องได้: กลุ่มมีนักเรียนถูกต้อง ตารางไม่ชน Tutor เปิดได้เฉพาะคาบที่มีสิทธิ์
หลักฐาน: รหัสกลุ่ม/คาบ, ข้อความกันเวลาชน
P04 · คน 07 → 09,10
สรุป Group / Private / Internal และแนบไฟล์
ก่อนเริ่ม: คาบ S1 จาก P03
- Tutor เขียน Group: วันนี้เรียนสมการ พร้อมแนบ worksheet.txt ตั้งให้ตอบกลับได้และเผยแพร่
- Tutor เขียน Private ถึง P01: ฝึกโจทย์ข้อ 3 เพิ่ม พร้อมแนบไฟล์อีกหนึ่งชิ้นและเผยแพร่
- Tutor เขียน Internal: นัดคุยทีมเรื่องแผนสอน และเผยแพร่
- Parent A/B เปิดดู Group และตอบกลับ; Parent A ดู Private ได้; Parent B ต้องไม่เห็น Private หรือดาวน์โหลดไฟล์ส่วนตัวได้แม้รู้ลิงก์
- ทั้งสอง Family ต้องไม่เห็น Internal; กดรับทราบสรุปแล้วเทียบชั่วโมง/เงินก่อนหลัง
ผลที่ต้องได้: Group เห็นทั้งสองครอบครัว; Private เห็นเฉพาะครอบครัว P01; Internal เฉพาะทีมที่มีสิทธิ์; รับทราบไม่ตัดชั่วโมง ไม่ยืนยันคาบ ไม่ลงเงิน
หลักฐาน: ภาพจาก 3 บัญชี, post ID, ผลเปิดไฟล์ที่ไม่มีสิทธิ์
P05 · คน 07 → 09,10 → 06
ปิดคาบ ยืนยัน ตรวจชั่วโมงและค่าสอน
ก่อนเริ่ม: P04 ผ่าน
- Tutor ปิด S1 ที่สอนจริง 2 ชั่วโมง ตรวจรายละเอียดก่อนยืนยัน
- Parent แต่ละคนยืนยันคาบของลูก ดูยอดก่อนและหลัง; Refresh และตรวจว่ารายการเดิมไม่ถูกนับอีกครั้ง
- Finance ตรวจ Package, Hour ledger, รายได้ และค่าสอนโดยเทียบเรท/กฎที่ตั้งไว้ใน P01
ผลที่ต้องได้: เมื่อจบขั้นตอนตัดชั่วโมงตามระบบ P01/P02 เหลือคนละ 8 ชั่วโมง; ค่าสอนตรงเรทจริงที่ตั้งไว้; ไม่มีรายการซ้ำ
หลักฐาน: รหัสคาบ, ledger, ยอดค่าสอน และสูตรจากเรท
P06 · คน 04 → 07 → 10 → 02 → 06
ข้อโต้แย้งและขาดเรียน
ก่อนเริ่ม: P05 ผ่าน; สร้างคาบ S2 แยกจาก S1
- จัด S2 และบันทึกการมาสาย/ขาดของ P02 ตรวจข้อความกฎการหักชั่วโมงก่อนปิด
- Parent B ทักท้วงพร้อมเหตุผลทดลอง; Manager ตรวจและตัดสินตามขั้นตอน
- Finance ตรวจรายการกลับชั่วโมง/รายได้/ค่าสอนตามผลตัดสิน; ทำคาบอีกใบเพื่อทดสอบผลตัดสินอีกทาง
ผลที่ต้องได้: ข้อโต้แย้งส่งถึงผู้มีสิทธิ์; การปรับยอดสอดคล้องผลตัดสินและกฎขาดเรียน; มีประวัติผู้ดำเนินการ
หลักฐาน: คาบ S2, คำตัดสิน, ยอดก่อนหลัง
P07 · คน 07 → 02,04 → 08 → 09,10
ติวเตอร์ลา เปลี่ยนครู เลื่อนคาบ
ก่อนเริ่ม: PT02 มีคุณสมบัติวิชาเดียวกันและเวลาว่าง
- PT01 ขอหยุด/เปลี่ยนตารางคาบอนาคต S3 ตามเมนูที่บัญชีเข้าถึง
- ผู้จัดการ/ธุรการอนุมัติและกำหนด PT02 สอนแทน ตรวจห้องและเวลาว่างก่อนบันทึก
- Parent ตรวจตารางใหม่ และ PT02 ตรวจว่าเปิดคาบที่ได้รับมอบหมายได้
ผลที่ต้องได้: งานย้ายถึงผู้สอนแทนและไม่มีตารางซ้อน; ถ้าระบบมีเพียงคิวแจ้งเตือนจำลอง ห้ามนับว่า LINE ส่งถึงแล้ว
หลักฐาน: คาบ S3, ผู้สอนเดิม/ใหม่, หน้าตาราง Family
P08 · คน 08 → 02 → 05 → 06
ขอซื้อ → รับของ → จ่ายเงิน
ก่อนเริ่ม: มี Vendor/Item ทดลอง; Stock เริ่มที่ศูนย์หลัง Reset
- Tutor ขอซื้อวัสดุที่ใช้ในห้อง แนบรายละเอียด/ใบเสนอราคาทดลอง
- Manager อนุมัติตามวงเงินที่ตั้งไว้; ถ้าต้องสองลายเซ็นให้ Owner เป็นผู้อนุมัติอีกคน
- Admin เปิด PO รับของหนึ่งครั้ง; Finance ตั้งหนี้และชำระพร้อมหลักฐานทดลอง
- ตรวจ Stock, เจ้าหนี้ และเอกสารเชื่อมโยง
ผลที่ต้องได้: ผู้ขอกับผู้อนุมัติต่างคนตามกฎ; รับของ/จ่ายไม่ซ้ำ; จำนวน Stock และยอดคงค้างตรงเอกสาร
หลักฐาน: PR, PO, ใบรับ, ใบจ่าย, ledger
P09 · คน 07,08 → 05 → 02,06
เบิกวัสดุและเบิกค่าใช้จ่าย
ก่อนเริ่ม: P08 รับวัสดุเข้าสต็อกแล้ว
- Tutor ขอเบิกวัสดุเข้าคลาส; Admin อีกคนตรวจและจ่ายของ
- ทดลองให้ผู้ขอจ่ายของให้ตนเอง ระบบต้องปฏิเสธตามกฎ
- อีกใบให้ Tutor ขอเบิกค่าใช้จ่ายพร้อมเอกสารอนุมัติที่ระบบกำหนด; Manager อนุมัติ Finance จ่าย
ผลที่ต้องได้: Stock ลดตรงจำนวน; รายจ่ายลงศูนย์ต้นทุน/คอร์สที่เลือก; แยกผู้ขอกับผู้จ่ายและมีหลักฐาน
หลักฐาน: ใบเบิก, Expense, เอกสารอนุมัติ, ยอดก่อนหลัง
P10 · คน 07 → 02 → 05
แจ้งซ่อมทรัพย์สิน
ก่อนเริ่ม: มี Asset ที่ตรวจสอบแล้วและห้องว่าง
- แจ้งโปรเจกเตอร์เสีย เลือก Asset/ห้องที่ถูกต้อง
- Manager อนุมัติ Admin บันทึกงานซ่อม/ค่าใช้จ่าย และตรวจสถานะห้องระหว่างซ่อม
- ปิดงานหลังตรวจรับ ตรวจว่า Asset/ห้องกลับมาใช้ได้ตามสถานะจริง
ผลที่ต้องได้: ประวัติซ่อมผูก Asset ถูกตัว; ช่วงห้องไม่พร้อมต้องไม่ถูกจอง; ตรวจสถานะที่คงมาจาก baseline ด้วย
หลักฐาน: เลขงานซ่อม, Asset, สถานะห้องก่อนหลัง
P11 · คน 03,04 → 02 → 06 → 09
คืนเงินแบบมีผู้อนุมัติ
ก่อนเริ่ม: P03 นักเรียนใช้เป็นเคสแยก: ขายและรับชำระแพ็กเกจใหม่ก่อน
- Admin รับเรื่องขอคืนเงินของ P03 และยื่นตามช่องทาง Refund ที่มีในระบบ
- Manager ตรวจสิทธิ์/กฎ/จำนวนชั่วโมงที่ใช้แล้วและอนุมัติ
- Finance จ่ายคืนพร้อมหลักฐานทดลอง; Parent A ตรวจยอดและ Finance ตรวจ ledger
ผลที่ต้องได้: เงินคืนและชั่วโมงตรงกติกา; ไม่เกินยอดที่อนุญาต; ไม่กระทบ P01/P02; ไม่มีการจ่ายคืนซ้ำ
หลักฐาน: คำขอ Refund, ผลอนุมัติ, หลักฐาน และ ledger
P12 · คน 06 → 02 → 01
กระทบยอด ปิดงวด และรายงาน
ก่อนเริ่ม: P02–P11 เสร็จ ไม่มีรายการรอที่ไม่ทราบเหตุผล
- Finance รวมใบรับ/ใบคืน/ใบจ่ายเทียบช่องทางชำระและเอกสารที่จดไว้ แยกเงินรับจากรายได้ที่รับรู้
- Manager ตรวจชั่วโมงคงเหลือ ค่าสอนค้างจ่าย รายได้ และ Dashboard
- ปิดงวดทดลอง แล้วพยายามลงรายการในงวดปิด ระบบต้องปฏิเสธ; อย่าบันทึก Go-live ในเครื่องซ้อม
ผลที่ต้องได้: อธิบายยอดแต่ละส่วนได้จากเอกสารจริงในรอบ; งวดปิดกันรายการย้อนหลัง; P00–P12 มีหลักฐานครบ
หลักฐาน: รายงานกระทบยอด, ภาพการปฏิเสธ, รายการ Issue
P13 · คน 01 + ผู้ดูแลระบบ
คืน Baseline และเริ่มรอบใหม่
ก่อนเริ่ม: สำรอง baseline ไว้หลัง P01; ทุกคนหยุดทำรายการ
- ส่งออกผลทดสอบ JSON/พิมพ์เก็บก่อนคืน baseline; ผลในคู่มือนี้อยู่ใน browser ไม่ใช่ฐาน ERP
- ผู้ดูแลหยุด web และ worker แล้วใช้ PILOT_BASELINE.py restore ตาม PILOT_OPERATIONS.txt
- เปิดระบบใหม่ ทุกคน login ตรวจ Asset/ห้อง/บัญชี/นักเรียนตรง baseline และธุรกรรมหลัง snapshot หาย
- เริ่มบันทึกผลรอบใหม่ด้วยรหัสรอบใหม่ ไม่เขียนทับหลักฐานรอบก่อน
ผลที่ต้องได้: มี backup ก่อน restore; คืนข้อมูลและบัญชีตรง snapshot; token เก่าใช้ไม่ได้; รายงานรอบก่อนยังเก็บแยก
หลักฐาน: ชื่อ baseline/backup, ผลตรวจหลังเปิดระบบ
ผู้จัดการสรุปผล
ผ่านชุดซ้อมนี้เป็นหลักฐาน UAT หนึ่งส่วน ยังต้องทบทวนความพร้อม Go-live, Backup/Restore, ยอดตั้งต้น และการเชื่อม LINE แยกต่างหาก