Files
alla-tms/plans/system-test-flow.md
2026-07-16 09:53:14 +07:00

10 KiB

Training System Test Flow

เอกสารนี้ใช้สำหรับทดสอบระบบตามโครงสร้างล่าสุดของโปรเจ็กต์:

  • Super Admin จัดการ Organizers
  • Admin จัดการ Users, Courses, Training Records, Training Matrix, Reports
  • User เห็นเฉพาะ Dashboard, Training Records, Reports
  • ใช้ users เป็น person entity เดียวของระบบแล้ว ไม่ใช้ employees เป็น runtime module

1. Scope

ครอบคลุม flow หลักดังนี้:

  • Authentication และ organizer access
  • Organizer management
  • User management
  • Course management
  • Training record CRUD
  • Certificate upload
  • Approval workflow
  • Training matrix
  • Dashboard
  • Reports และ CSV export
  • RBAC และ data scoping

2. Test Prerequisites

ก่อนเริ่มทดสอบ ให้ตรวจสอบว่า:

  • ตั้งค่า .env.local แล้ว
  • PostgreSQL ทำงานได้
  • migrations ถูก apply แล้ว
  • dev server รันได้ด้วย npm run dev
  • มีข้อมูล master ของ departments และ positions

บัญชีทดสอบที่แนะนำ:

  • super_admin 1 คน
  • admin 1 คน
  • user 1 คน

ข้อมูลทดสอบขั้นต่ำ:

  • 1 organizer
  • 2 departments
  • 2 positions
  • 3 users
  • 3 courses
  1. Auth and access
  2. Organizer management
  3. User management
  4. Courses
  5. Training records
  6. Certificates
  7. Approval workflow
  8. Training matrix
  9. Dashboard
  10. Reports
  11. RBAC regression

4. Auth And Access

4.1 Sign In

ทดสอบ:

  • เปิด /auth/sign-in
  • login ด้วย super_admin
  • login ด้วย admin
  • login ด้วย user

ผลที่คาดหวัง:

  • super_admin เข้า organizer flow ได้
  • admin เข้า /dashboard/overview ได้
  • user เข้า /dashboard/overview ได้

4.2 Sign Up Disabled

ทดสอบ:

  • เปิด /auth/sign-up
  • เรียก POST /api/auth/register

ผลที่คาดหวัง:

  • ผู้ใช้สมัครเองไม่ได้
  • ระบบแจ้งชัดว่าต้องให้ admin สร้างบัญชีให้

4.3 Protected Routes

ทดสอบ:

  • logout
  • เปิด /dashboard/overview
  • เรียก /api/users

ผลที่คาดหวัง:

  • หน้า dashboard redirect ไป sign-in
  • protected API ตอบ 401

5. Organizer Flow

ใช้ super_admin

5.1 Organizer List

ทดสอบ:

  • เปิด /dashboard/organizers

ผลที่คาดหวัง:

  • เห็นรายการ organizer ทั้งหมด

5.2 Create Organizer

ทดสอบ:

  • สร้าง organizer ใหม่

ผลที่คาดหวัง:

  • สร้าง organizer สำเร็จ
  • master data ของ organizer ใหม่ถูก seed ให้

6. User Flow

ใช้ admin หรือ super_admin

6.1 User List

ทดสอบ:

  • เปิด /dashboard/users
  • search
  • filter status
  • sort
  • pagination

ผลที่คาดหวัง:

  • ตารางโหลดข้อมูลได้
  • filter และ sort ทำงานถูกต้อง

6.2 Create User

ทดสอบ:

  • กดเพิ่ม user
  • กรอก full name, email, phone, employee code
  • เลือก department จาก dropdown
  • เลือก position จาก dropdown
  • ระบุ hired date
  • สำหรับ super_admin ให้เลือก organizer ได้
  • สำหรับ admin organizer ต้อง default จาก active organizer

ผลที่คาดหวัง:

  • สร้าง user สำเร็จ
  • user ใหม่มี membership ใน organizer ที่เลือก

6.3 Edit User

ทดสอบ:

  • แก้ไข department, position, role, status

ผลที่คาดหวัง:

  • ข้อมูลอัปเดตสำเร็จ

7. Sidebar Visibility

7.1 Super Admin

ผลที่คาดหวัง:

  • เห็น Dashboard, Organizers, Users, Courses, Training Records, Training Matrix, Reports

7.2 Admin

ผลที่คาดหวัง:

  • เห็น Dashboard, Users, Courses, Training Records, Training Matrix, Reports
  • ไม่เห็น Organizers

7.3 User

ผลที่คาดหวัง:

  • เห็นเฉพาะ Dashboard, Training Records, Reports

8. Course Flow

ใช้ admin

8.1 Course List And Filters

ทดสอบ:

  • เปิด /dashboard/courses
  • search
  • filter category
  • filter status

ผลที่คาดหวัง:

  • ตารางแสดงผลถูกต้อง

8.2 Create And Edit Course

ทดสอบ:

  • สร้าง course ใหม่
  • แก้ไขข้อมูล course

ผลที่คาดหวัง:

  • create/update สำเร็จ

9. Training Record Flow

9.1 Admin Creates Training Record

ใช้ admin

ทดสอบ:

  • เปิด /dashboard/training-records
  • สร้าง record ใหม่
  • เลือก user
  • เลือก course
  • กรอก date, type, hours, organizer, note

ผลที่คาดหวัง:

  • สร้าง record สำเร็จ
  • status เริ่มที่ pending

9.2 User Creates Own Training Record

ใช้ user

ทดสอบ:

  • เปิด /dashboard/training-records
  • สร้าง record ใหม่

ผลที่คาดหวัง:

  • dropdown user ต้องมองเห็นได้เฉพาะตัวเอง
  • สร้าง record ของคนอื่นไม่ได้

9.3 List And Edit

ทดสอบ:

  • list records
  • filter by status
  • filter by type
  • เปิดหน้า detail/edit

ผลที่คาดหวัง:

  • admin เห็นทุก record ใน organizer
  • user เห็นเฉพาะ record ของตัวเอง

10. Certificate Flow

10.1 Upload Certificate

ทดสอบ:

  • เปิดหน้า edit training record
  • อัปโหลด pdf, jpg, jpeg, png

ผลที่คาดหวัง:

  • upload สำเร็จ
  • metadata ถูกบันทึก

10.2 View And Delete

ทดสอบ:

  • เปิดดูไฟล์ย้อนหลัง
  • ลบ certificate

ผลที่คาดหวัง:

  • เปิดไฟล์ได้
  • ลบแล้วรายการหาย

11. Approval Workflow

11.1 Admin Review

ใช้ admin

ทดสอบ:

  • เปิด /dashboard/training-records?status=pending
  • Approve
  • Reject
  • Request Changes
  • ใส่ reviewer note

ผลที่คาดหวัง:

  • เปลี่ยน status ได้
  • reviewer note ถูกบันทึก

11.2 User Restrictions

ใช้ user

ทดสอบ:

  • พยายาม review record
  • พยายามแก้ approved record

ผลที่คาดหวัง:

  • review ไม่ได้
  • approved record แก้ไม่ได้ตาม policy

12. Training Matrix

ใช้ admin

12.1 Create Rules

ทดสอบ:

  • เปิด /dashboard/training-matrix
  • เพิ่ม rule แบบ department -> course
  • เพิ่ม rule แบบ position -> course
  • กำหนด renewal period

ผลที่คาดหวัง:

  • สร้าง rules สำเร็จ

12.2 Compliance

ทดสอบ:

  • user ที่มี approved records ครบ
  • user ที่ยังขาด course
  • user ที่มี course หมดอายุ

ผลที่คาดหวัง:

  • compliance คำนวณถูกต้อง
  • missing courses แสดงถูกต้อง

13. Dashboard

13.1 Admin Dashboard

ใช้ admin

ผลที่คาดหวัง:

  • เห็นภาพรวมระดับ organizer
  • summary cards, charts, recent activity ใช้ข้อมูลจริง

13.2 User Dashboard

ใช้ user

ผลที่คาดหวัง:

  • เห็นเฉพาะข้อมูลของตัวเอง
  • ไม่เห็น organizer-wide management views

14. Reports

14.1 Admin Reports

ใช้ admin

ทดสอบ:

  • เปิด /dashboard/reports
  • filter ตาม user
  • filter ตาม department
  • filter ตาม expiring days

ผลที่คาดหวัง:

  • ตารางรายงานอัปเดตตาม filter
  • export CSV ได้

14.2 User Reports

ใช้ user

ทดสอบ:

  • เปิด /dashboard/reports
  • ทดลองแก้ query string เอง

ผลที่คาดหวัง:

  • เห็นเฉพาะข้อมูลของตัวเอง
  • server บังคับ self-scope แม้ปรับ URL เอง
  • export CSV ได้เฉพาะข้อมูลของตัวเอง

15. RBAC Regression

15.1 Cross-Organizer Isolation

ทดสอบ:

  • login ด้วย user ของ organizer A
  • พยายามเปิดข้อมูลของ organizer B

ผลที่คาดหวัง:

  • มองไม่เห็นข้อมูลข้าม organizer

15.2 Legacy Employee Routes

ทดสอบ:

  • เปิด /dashboard/employees
  • เปิด /dashboard/employees/new

ผลที่คาดหวัง:

  • ระบบพาไปหน้า /dashboard/users

16. Final Regression Checklist

  • sign-in / sign-out ทำงาน
  • sign-up ถูกปิด
  • sidebar แยกตาม role ถูกต้อง
  • organizer flow ใช้งานได้
  • users ใช้งานได้
  • courses ใช้งานได้
  • training-records ใช้งานได้
  • certificate upload ใช้งานได้
  • approval workflow ใช้งานได้
  • training matrix ใช้งานได้
  • dashboard ใช้งานได้
  • reports และ CSV export ใช้งานได้
  • npm run build ผ่าน