234 lines
5.5 KiB
Markdown
234 lines
5.5 KiB
Markdown
You are a Senior Full Stack Engineer.
|
|
|
|
Project:
|
|
Training Management System (TMS)
|
|
|
|
Current task:
|
|
Transform the Employees/Users page into an employee training overview page.
|
|
|
|
Requirement:
|
|
The "พนักงาน" menu should be used to view employee information, training history summary, and training hour progress, not only user account management.
|
|
|
|
Important constraints:
|
|
|
|
- Do NOT delete existing users route unless necessary.
|
|
- Do NOT remove user management permissions.
|
|
- Do NOT change database schema unless absolutely necessary.
|
|
- Reuse existing users/employees page.
|
|
- Reuse existing training records queries.
|
|
- Reuse existing Training Policy and employee-specific K/S/A target logic if available.
|
|
- Keep Thai UI.
|
|
- Keep responsive/mobile behavior.
|
|
- Minimal-impact changes only.
|
|
|
|
Part 1: Page Purpose
|
|
|
|
Update the Employees/Users page to show employee training overview.
|
|
|
|
Page title:
|
|
|
|
- พนักงาน
|
|
|
|
Description:
|
|
|
|
- ดูข้อมูลพนักงาน ประวัติการอบรม และจำนวนชั่วโมงการอบรม
|
|
|
|
Part 2: Table Columns
|
|
|
|
Replace or adjust current table columns to:
|
|
|
|
1. รหัสพนักงาน
|
|
2. ชื่อพนักงาน
|
|
3. แผนก
|
|
4. ตำแหน่ง
|
|
5. ชั่วโมงอนุมัติ
|
|
6. ชั่วโมงรอตรวจสอบ
|
|
7. ชั่วโมงไม่อนุมัติ
|
|
8. เป้าหมายชั่วโมง
|
|
9. ความคืบหน้า
|
|
10. สถานะ
|
|
|
|
Status logic:
|
|
|
|
- ผ่านเกณฑ์
|
|
- ยังไม่ผ่านเกณฑ์
|
|
|
|
Progress logic:
|
|
approvedHours / targetHours \* 100
|
|
|
|
If target is missing:
|
|
|
|
- use Training Policy default
|
|
|
|
If both employee target and policy missing:
|
|
|
|
- show "-"
|
|
|
|
Part 3: Search
|
|
|
|
Search should support:
|
|
|
|
- employeeCode
|
|
- employeeName
|
|
- email
|
|
- department
|
|
- position
|
|
|
|
Search placeholder:
|
|
|
|
- ค้นหาด้วยรหัสพนักงาน ชื่อ แผนก หรือตำแหน่ง...
|
|
|
|
Part 4: Filters
|
|
|
|
Add filters if existing pattern supports:
|
|
|
|
- แผนก
|
|
- สถานะผ่านเกณฑ์
|
|
- ปี
|
|
|
|
Part 5: Employee Detail
|
|
|
|
When HRD clicks an employee row or action button:
|
|
|
|
Route:
|
|
|
|
- /dashboard/users/[id]
|
|
or existing detail route
|
|
|
|
Show employee detail page with:
|
|
|
|
1. Employee profile summary
|
|
|
|
- รหัสพนักงาน
|
|
- ชื่อพนักงาน
|
|
- อีเมล
|
|
- แผนก
|
|
- ตำแหน่ง
|
|
- สถานะ
|
|
|
|
2. Training summary
|
|
|
|
- ชั่วโมงอนุมัติ
|
|
- ชั่วโมงรอตรวจสอบ
|
|
- ชั่วโมงไม่อนุมัติ
|
|
- เป้าหมายรวม
|
|
- ความคืบหน้า
|
|
|
|
3. K/S/A summary
|
|
|
|
- K approved / K target
|
|
- S approved / S target
|
|
- A approved / A target
|
|
|
|
4. Training history table
|
|
|
|
- วันที่อบรม
|
|
- ชื่อหลักสูตร
|
|
- ประเภทการอบรม
|
|
- ชั่วโมง
|
|
- สถานะ
|
|
- ไฟล์เกียรติบัตร
|
|
|
|
Part 6: Actions
|
|
|
|
Keep existing buttons:
|
|
|
|
- เพิ่มพนักงาน
|
|
- นำเข้าพนักงาน
|
|
|
|
But page should feel like HRD employee training overview.
|
|
|
|
Part 7: Permissions
|
|
|
|
HRD/Admin:
|
|
|
|
- can view all employees
|
|
- can view employee training summary
|
|
- can access employee detail
|
|
|
|
Employee:
|
|
|
|
- should not access all employee list
|
|
- employee uses own dashboard/training records instead
|
|
|
|
Part 8: Performance
|
|
|
|
Use database aggregation:
|
|
|
|
- SUM approved hours
|
|
- SUM pending hours
|
|
- SUM rejected hours
|
|
- GROUP BY employee
|
|
|
|
Avoid loading all training records and reducing in memory.
|
|
|
|
Part 9: Responsive
|
|
|
|
Desktop:
|
|
|
|
- Table can show all columns.
|
|
|
|
Mobile/tablet:
|
|
|
|
- Table must stay inside horizontal scroll container.
|
|
- No page-level overflow.
|
|
- Keep employee code/name/progress visible.
|
|
|
|
Part 10: Files likely involved
|
|
|
|
- src/app/dashboard/users/page.tsx
|
|
- src/app/dashboard/users/[id]/page.tsx if exists
|
|
- src/features/users/server/user-data.ts
|
|
- src/features/users/components/users-table.tsx
|
|
- src/features/users/components/users-columns.tsx
|
|
- src/features/users/api/types.ts
|
|
- src/features/training-records/server/training-record-data.ts
|
|
- src/features/overview/server/overview-data.ts if reusable target logic exists
|
|
- src/features/reports/server/report-data.ts if reusable aggregation exists
|
|
|
|
Part 11: Output Review File
|
|
|
|
Create:
|
|
docs/management-change-employee-training-overview-review.md
|
|
|
|
Include:
|
|
|
|
1. Summary
|
|
2. Files Changed
|
|
3. Page Purpose Changes
|
|
4. Table Columns Changed
|
|
5. Search/Filter Changes
|
|
6. Employee Detail Changes
|
|
7. Training Hours Calculation
|
|
8. Target/Progress Logic
|
|
9. Permission Rules
|
|
10. Responsive Notes
|
|
11. Manual Test Checklist
|
|
12. Known Limitations
|
|
|
|
Manual Test Checklist:
|
|
|
|
- HRD opens พนักงาน page.
|
|
- Page shows employee training overview.
|
|
- Employee code displays.
|
|
- Approved hours display correctly.
|
|
- Pending hours display correctly.
|
|
- Rejected hours display correctly.
|
|
- Target hours display correctly.
|
|
- Progress percentage displays correctly.
|
|
- Pass/fail status displays correctly.
|
|
- Search by employee code works.
|
|
- Search by name works.
|
|
- Search by department works.
|
|
- Import employee button still works.
|
|
- Add user button still works if required.
|
|
- Employee detail page shows training history.
|
|
- Employee user cannot access all employee list.
|
|
- Table does not break responsive layout.
|
|
- Mobile layout works.
|
|
|
|
Return:
|
|
|
|
- Complete code changes with file paths.
|
|
- Content of docs/management-change-employee-training-overview-review.md.
|