# UAT Test Cases

| Test ID  | Module                | Feature                        | Role                 | Priority | Preconditions                          | Test Steps                                                                             | Expected Result                                            | Actual Result | Status  |
| -------- | --------------------- | ------------------------------ | -------------------- | -------- | -------------------------------------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------- | ------- |
| AUTH-001 | Authentication        | Sign In                        | Super Admin          | High     | มีบัญชี super admin                    | 1. เปิด `/auth/sign-in` 2. กรอก credentials 3. กดเข้าสู่ระบบ                           | เข้าสู่ระบบสำเร็จและเห็นเมนูระดับ super admin              |               | Not Run |
| AUTH-002 | Authentication        | Sign In                        | HRD Admin            | High     | มีบัญชี HRD Admin                      | 1. เปิดหน้า sign in 2. login                                                           | เข้าสู่ dashboard ได้สำเร็จ                                |               | Not Run |
| AUTH-003 | Authentication        | Sign In                        | Employee             | High     | มีบัญชี employee                       | 1. เปิดหน้า sign in 2. login                                                           | เข้าสู่ dashboard ได้สำเร็จ                                |               | Not Run |
| AUTH-004 | Authentication        | Protected Route                | Guest                | High     | logout แล้ว                            | 1. เปิด `/dashboard/overview`                                                          | ถูก redirect ไป sign-in หรือถูกปฏิเสธการเข้าถึง            |               | Not Run |
| NAV-001  | Navigation            | Sidebar Visibility             | Super Admin          | High     | login เป็น super admin                 | 1. เปิด sidebar                                                                        | เห็นเมนู permissions, organizers, audit logs               |               | Not Run |
| NAV-002  | Navigation            | Sidebar Visibility             | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด sidebar                                                                        | เห็นเฉพาะเมนู HRD ที่อยู่ใน nav config                     |               | Not Run |
| NAV-003  | Navigation            | Sidebar Visibility             | Employee             | High     | login เป็น employee                    | 1. เปิด sidebar                                                                        | ไม่เห็นเมนูจัดการระบบ เช่น users, permissions, organizers  |               | Not Run |
| ORG-001  | Organizers            | List                           | Super Admin          | High     | login เป็น super admin                 | 1. เปิด `/dashboard/organizers`                                                        | เห็นรายการ organizers                                      |               | Not Run |
| ORG-002  | Organizers            | Create                         | Super Admin          | High     | login เป็น super admin                 | 1. เปิดหน้าจัดการ organizer 2. กรอกข้อมูล 3. บันทึก                                    | สร้าง organizer สำเร็จ                                     |               | Not Run |
| ORG-003  | Organizers            | Unauthorized Access            | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด `/dashboard/organizers`                                                        | ไม่สามารถเข้าถึงได้                                        |               | Not Run |
| USER-001 | Users                 | List and Search                | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด `/dashboard/users` 2. ค้นหาชื่อหรือ email                                      | ตารางแสดงผลตรงกับ keyword                                  |               | Not Run |
| USER-002 | Users                 | Filter and Pagination          | HRD Admin            | Medium   | มี user หลายรายการ                     | 1. filter status 2. เปลี่ยนหน้า                                                        | filter และ pagination ทำงานถูกต้อง                         |               | Not Run |
| USER-003 | Users                 | Create User                    | HRD Admin            | High     | มี department/position                 | 1. กดเพิ่ม user 2. กรอกข้อมูล 3. บันทึก                                                | สร้าง user และ membership ใน organization ปัจจุบันสำเร็จ   |               | Not Run |
| USER-004 | Users                 | Edit User                      | HRD Admin            | High     | มี user เป้าหมาย                       | 1. เปิดแก้ไข user 2. ปรับข้อมูล 3. บันทึก                                              | ข้อมูลถูกอัปเดตสำเร็จ                                      |               | Not Run |
| USER-005 | Users                 | Scope Restriction              | Employee             | High     | login เป็น employee                    | 1. เปิด `/dashboard/users`                                                             | เข้าถึงไม่ได้                                              |               | Not Run |
| EMP-001  | Employee Directory    | List                           | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด `/dashboard/employee-directory`                                                | เห็นรายการพนักงานทั้งหมดใน organization                    |               | Not Run |
| EMP-002  | Employee Directory    | Detail                         | HRD Admin            | Medium   | มีพนักงานในระบบ                        | 1. เปิดรายละเอียดพนักงาน                                                               | เห็นข้อมูลประวัติพนักงานและ training-related data          |               | Not Run |
| EMP-003  | Employee Directory    | Individual Target Update       | HRD Admin            | Medium   | มี employee target route               | 1. เปิด target ของพนักงาน 2. ปรับค่า 3. บันทึก                                         | target ถูกบันทึกสำเร็จ                                     |               | Not Run |
| CRS-001  | Courses               | List / Search                  | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด `/dashboard/courses` 2. ค้นหา                                                  | แสดงรายการตามเงื่อนไข                                      |               | Not Run |
| CRS-002  | Courses               | Create                         | HRD Admin            | High     | -                                      | 1. กดเพิ่ม course 2. กรอกข้อมูล 3. บันทึก                                              | สร้าง course สำเร็จ                                        |               | Not Run |
| CRS-003  | Courses               | Edit                           | HRD Admin            | High     | มี course เดิม                         | 1. เปิดแก้ไข 2. ปรับค่า 3. บันทึก                                                      | อัปเดต course สำเร็จ                                       |               | Not Run |
| POL-001  | Training Policy       | Create / Update                | HRD Admin            | Medium   | login เป็น HRD Admin                   | 1. เปิด `/dashboard/training-policy` 2. กรอก target 3. บันทึก                          | policy ถูกบันทึกสำเร็จ                                     |               | Not Run |
| TMX-001  | Training Matrix       | Create Rule by Department      | HRD Admin            | High     | มี department และ course               | 1. เปิด `/dashboard/training-matrix` 2. สร้าง rule                                     | rule ถูกสร้างสำเร็จ                                        |               | Not Run |
| TMX-002  | Training Matrix       | Create Rule by Position        | HRD Admin            | High     | มี position และ course                 | 1. สร้าง rule แบบ position -> course                                                   | rule ถูกสร้างสำเร็จ                                        |               | Not Run |
| TMX-003  | Training Matrix       | Compliance View                | HRD Admin            | Medium   | มีข้อมูล approved record               | 1. เปิด compliance view                                                                | compliance แสดงผลตามข้อมูลจริง                             |               | Not Run |
| TR-001   | Training Records      | Create for Employee            | HRD Admin            | High     | มี employee และ course                 | 1. เปิด `/dashboard/training-records` 2. กดสร้าง 3. เลือกพนักงานและหลักสูตร 4. บันทึก  | record ถูกสร้างสำเร็จ                                      |               | Not Run |
| TR-002   | Training Records      | Create Self Record             | Employee             | High     | login เป็น employee                    | 1. เปิด training records 2. สร้างรายการใหม่                                            | สร้างได้โดยผูกกับข้อมูลของตนเองเท่านั้น                    |               | Not Run |
| TR-003   | Training Records      | Save Draft                     | Employee             | High     | กรอกฟอร์มขั้นต่ำแล้ว                   | 1. กดบันทึกฉบับร่าง                                                                    | status เป็น `draft`                                        |               | Not Run |
| TR-004   | Training Records      | Submit                         | Employee             | High     | มี draft หรือฟอร์มครบ                  | 1. กด submit                                                                           | status เป็น `pending`                                      |               | Not Run |
| TR-005   | Training Records      | Edit Draft                     | Employee             | High     | มี record สถานะ `draft`                | 1. เปิดแก้ไข draft 2. ปรับข้อมูล 3. บันทึก                                             | แก้ไขได้สำเร็จ                                             |               | Not Run |
| TR-006   | Training Records      | Attachment Upload              | Employee             | High     | มี record ที่แก้ไขได้                  | 1. แนบไฟล์ที่รองรับ 2. บันทึก                                                          | upload สำเร็จและเห็น attachment ในรายการ                   |               | Not Run |
| TR-007   | Training Records      | List Filter                    | HRD Admin            | Medium   | มีหลาย record                          | 1. filter status / type / year / company / department                                  | ตารางแสดงผลถูกต้อง                                         |               | Not Run |
| TR-008   | Training Records      | Self Scope                     | Employee             | High     | มี record ของหลายคน                    | 1. login เป็น employee 2. เปิด list                                                    | เห็นเฉพาะรายการของตัวเอง                                   |               | Not Run |
| TR-009   | Pending Review        | Approve                        | HRD Admin            | High     | มี record สถานะ `pending`              | 1. เปิด pending review 2. กรอก approved minutes/category 3. อนุมัติ                    | status เป็น `approved` และ reviewer note ถูกบันทึก         |               | Not Run |
| TR-010   | Pending Review        | Needs Revision                 | HRD Admin            | High     | มี record สถานะ `pending`              | 1. เปิด pending review 2. ใส่เหตุผล 3. ตีกลับ                                          | status เป็น `needs_revision`                               |               | Not Run |
| TR-011   | Pending Review        | Unauthorized Review            | Employee             | High     | login เป็น employee                    | 1. พยายามเปิด review page หรือ review API                                              | ถูกปฏิเสธการเข้าถึง                                        |               | Not Run |
| TR-012   | Training Records      | Approved Record Locked         | Employee             | High     | มี approved record ของตัวเอง           | 1. เปิดหน้ารายการ approved 2. พยายามแก้ไข                                              | ไม่สามารถแก้ไขได้ตาม policy                                |               | Not Run |
| ANN-001  | Announcements         | Create                         | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด `/dashboard/announcements` 2. สร้าง announcement                               | บันทึก announcement สำเร็จ                                 |               | Not Run |
| ANN-002  | Announcements         | Update / Pin                   | HRD Admin            | Medium   | มี announcement เดิม                   | 1. เปิดแก้ไข 2. ปรับข้อความหรือ pin 3. บันทึก                                          | ข้อมูลถูกอัปเดตสำเร็จ                                      |               | Not Run |
| ANN-003  | Announcements         | Visibility by Published Window | Employee             | High     | มีประกาศ published และหมดอายุบางรายการ | 1. login เป็น employee 2. เปิด announcements                                           | เห็นเฉพาะ published ที่ active ตามช่วงเวลา                 |               | Not Run |
| ANN-004  | Announcements         | Attachment Download            | Employee             | Medium   | มี announcement ที่แนบไฟล์             | 1. เปิด announcement 2. ดาวน์โหลด attachment                                           | เปิดหรือดาวน์โหลดไฟล์ได้                                   |               | Not Run |
| OLS-001  | Online Lessons        | Create                         | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิดหน้าจัดการ lesson 2. กรอกข้อมูล 3. บันทึก                                       | สร้าง lesson สำเร็จ                                        |               | Not Run |
| OLS-002  | Online Lessons        | Update with Video / Attachment | HRD Admin            | High     | มี lesson เดิม                         | 1. แก้ไข 2. เปลี่ยน video url หรืออัปโหลดไฟล์ 3. บันทึก                                | lesson ถูกอัปเดตสำเร็จ                                     |               | Not Run |
| OLS-003  | Online Lessons        | Published Visibility           | Employee             | High     | มี lesson published และ draft          | 1. login เป็น employee 2. เปิดหน้า lessons                                             | เห็นเฉพาะ `is_published = true`                            |               | Not Run |
| OLS-004  | Online Lessons        | Search / Category Filter       | All                  | Medium   | มี lesson หลาย category                | 1. ใช้ search 2. filter category                                                       | ผลลัพธ์ตรงเงื่อนไข                                         |               | Not Run |
| RPT-001  | Reports               | Organization Report Access     | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด `/dashboard/reports` 2. เปลี่ยน year/company/department                        | เห็น report หลายชุดระดับ organization                      |               | Not Run |
| RPT-002  | Reports               | Self Report Access             | Employee             | High     | login เป็น employee                    | 1. เปิด reports                                                                        | เห็นเฉพาะ employee transcript ของตัวเอง                    |               | Not Run |
| RPT-003  | Reports               | Excel Export                   | HRD Admin            | High     | มี report data                         | 1. กด export Excel                                                                     | ดาวน์โหลด `.xlsx` สำเร็จ                                   |               | Not Run |
| RPT-004  | Reports               | PDF Export                     | HRD Admin            | High     | มี report data                         | 1. กด export PDF                                                                       | ดาวน์โหลด `.pdf` สำเร็จ                                    |               | Not Run |
| RPT-005  | Reports               | Self Scope via Query String    | Employee             | High     | login เป็น employee                    | 1. แก้ URL filter เอง 2. refresh                                                       | server ยังบังคับให้เห็นเฉพาะข้อมูลตนเอง                    |               | Not Run |
| NTF-001  | Notifications         | List / Filter                  | All                  | Medium   | มี notifications ในระบบ                | 1. เปิด `/dashboard/notifications` 2. filter status/type                               | แสดงรายการตามตัวกรอง                                       |               | Not Run |
| NTF-002  | Notifications         | Mark One as Read               | All                  | Medium   | มี unread notification                 | 1. กด mark as read รายการเดียว                                                         | สถานะรายการเปลี่ยนเป็น read                                |               | Not Run |
| NTF-003  | Notifications         | Mark All as Read               | All                  | Medium   | มี unread notification หลายรายการ      | 1. กดอ่านทั้งหมด                                                                       | unread count ลดลงเป็น 0 หรือเท่าที่เหลือจริง               |               | Not Run |
| IMP-001  | Import Employees      | Download Template              | HRD Admin            | Medium   | login เป็น HRD Admin                   | 1. เปิด import page 2. ดาวน์โหลด template                                              | ได้ไฟล์ template สำหรับ import                             |               | Not Run |
| IMP-002  | Import Employees      | Import Success                 | HRD Admin            | High     | มีไฟล์ `.xlsx` ถูกต้อง                 | 1. เลือกไฟล์ 2. import                                                                 | ระบบคืน summary ของ created/updated/linked/training record |               | Not Run |
| IMP-003  | Import Employees      | Error Summary Download         | HRD Admin            | Medium   | มีไฟล์ที่ทำให้บางแถวผิด                | 1. import 2. ดาวน์โหลด error summary                                                   | ได้ไฟล์ CSV ของรายการ error                                |               | Not Run |
| MREV-001 | Master Review         | Review Pending Items           | HRD Admin            | Medium   | มี pending master review               | 1. เปิดหน้าตรวจสอบข้อมูลหลัก                                                           | เห็นรายการ company/department/position ที่ pending         |               | Not Run |
| MREV-002 | Master Review         | Approve / Reject               | HRD Admin            | High     | มี pending item                        | 1. กด approve หรือ reject                                                              | สถานะถูกประมวลผลและมี notification ที่เกี่ยวข้อง           |               | Not Run |
| PERM-001 | Permission Templates  | Create Template                | Super Admin          | High     | login เป็น super admin                 | 1. เปิด `/dashboard/permissions/templates` 2. สร้าง template ใหม่                      | สร้าง template สำเร็จ                                      |               | Not Run |
| PERM-002 | Permission Templates  | Edit Template                  | Super Admin          | High     | มี template เดิม                       | 1. เปิด edit 2. ปรับ permissions 3. บันทึก                                             | template ถูกอัปเดตสำเร็จ                                   |               | Not Run |
| PERM-003 | Permission Templates  | Clone Template                 | Super Admin          | Medium   | มี template เดิม                       | 1. เลือก clone                                                                         | ได้ template ใหม่จากต้นฉบับ                                |               | Not Run |
| PERM-004 | Permission Templates  | Activate / Deactivate          | Super Admin          | Medium   | มี template ที่ active/inactive        | 1. toggle สถานะ                                                                        | สถานะเปลี่ยนถูกต้อง                                        |               | Not Run |
| PERM-005 | Permission Templates  | Soft Delete                    | Super Admin          | Medium   | มี non-system template                 | 1. ลบ template                                                                         | template ถูก soft delete / ปิดการใช้งานตาม flow            |               | Not Run |
| PERM-006 | User Permissions      | Assign Template to User        | Super Admin          | High     | มี user และ template                   | 1. เปิด `/dashboard/permissions/users` 2. manage permissions 3. เลือก template 4. save | assignment ถูกบันทึกสำเร็จ                                 |               | Not Run |
| PERM-007 | User Permissions      | Override Allow / Deny          | Super Admin          | High     | มี user permission detail              | 1. assign allow/deny overrides 2. save                                                 | effective permissions เปลี่ยนตามที่เลือก                   |               | Not Run |
| PERM-008 | Permission Matrix     | View Catalog                   | Super Admin          | Medium   | login เป็น super admin                 | 1. เปิด `/dashboard/permissions/matrix`                                                | เห็น permission catalog และกลุ่มสิทธิ์                     |               | Not Run |
| PERM-009 | Permission Audit Logs | View Audit                     | Super Admin          | Medium   | มีการแก้ permission มาก่อน             | 1. เปิด `/dashboard/permissions/audit-logs`                                            | เห็นประวัติการเปลี่ยน permission                           |               | Not Run |
| AUD-001  | Audit Logs            | View System Audit Logs         | Super Admin          | Medium   | มี audit logs ในระบบ                   | 1. เปิด `/dashboard/audit-logs`                                                        | เห็นรายการ audit log                                       |               | Not Run |
| AUD-002  | Audit Logs            | Unauthorized Access            | HRD Admin            | High     | login เป็น HRD Admin                   | 1. เปิด `/dashboard/audit-logs`                                                        | เข้าถึงไม่ได้                                              |               | Not Run |
| VAL-001  | Validation            | Required Field                 | All                  | High     | เปิดฟอร์มสร้างรายการ                   | 1. submit โดยไม่กรอก field บังคับ                                                      | แสดง validation message ที่เข้าใจได้                       |               | Not Run |
| VAL-002  | Upload                | Invalid File Type              | All                  | High     | อยู่ในฟอร์ม upload                     | 1. แนบไฟล์ประเภทไม่รองรับ                                                              | ระบบปฏิเสธไฟล์และแจ้งข้อความผิดพลาด                        |               | Not Run |
| VAL-003  | Upload                | Oversize File                  | All                  | High     | มีไฟล์ขนาดเกินข้อกำหนด                 | 1. แนบไฟล์ขนาดใหญ่เกิน limit                                                           | ระบบปฏิเสธไฟล์และแจ้งข้อความผิดพลาด                        |               | Not Run |
| SEC-001  | Organization Scope    | Cross-Organization Access      | All                  | High     | มีข้อมูลข้าม organization              | 1. พยายามเปิดข้อมูลของ org อื่นผ่าน URL/API                                            | ไม่สามารถเข้าถึงได้                                        |               | Not Run |
| SEC-002  | Permission Management | Non-Super-Admin Access         | HRD Admin / Employee | High     | login เป็น non-super-admin             | 1. เปิดหน้ากลุ่ม permissions                                                           | เข้าถึงไม่ได้                                              |               | Not Run |
