commit
This commit is contained in:
119
docs/sprint-6-phase-4-dashboard-review.md
Normal file
119
docs/sprint-6-phase-4-dashboard-review.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# Sprint 6 Phase 4 Dashboard Review
|
||||
|
||||
## 1. Summary
|
||||
|
||||
ปรับปรุง Dashboard ทั้งฝั่ง Employee และ HRD บนโมดูล `overview` เดิม โดยเพิ่ม KPI cards, filter, chart sections, K/S/A progress, recent activity และย้ายการคำนวณหลักไปใช้ database aggregation เพื่อลดการโหลดข้อมูลดิบเข้าหน่วยความจำ
|
||||
|
||||
## 2. Files Changed
|
||||
|
||||
- `src/app/dashboard/overview/layout.tsx`
|
||||
- `src/app/dashboard/overview/page.tsx`
|
||||
- `src/app/dashboard/overview/@area_stats/page.tsx`
|
||||
- `src/app/dashboard/overview/@bar_stats/page.tsx`
|
||||
- `src/app/dashboard/overview/@pie_stats/page.tsx`
|
||||
- `src/app/dashboard/overview/@sales/page.tsx`
|
||||
- `src/features/overview/server/overview-data.ts`
|
||||
- `src/features/overview/components/overview-filter-panel.tsx`
|
||||
- `src/features/overview/components/ksa-progress.tsx`
|
||||
- `src/features/overview/components/top-courses-chart.tsx`
|
||||
- `src/features/overview/components/area-graph.tsx`
|
||||
- `src/features/overview/components/bar-graph.tsx`
|
||||
- `src/features/overview/components/pie-graph.tsx`
|
||||
|
||||
## 3. Database Queries Added
|
||||
|
||||
- Aggregate KPI query by approval status
|
||||
- Aggregate K/S/A approved hours by category
|
||||
- Monthly approved-hours and approved-record trend by month
|
||||
- Department ranking by approved hours
|
||||
- Top courses by approved hours
|
||||
- Active employee scope query with company/department filters
|
||||
- Passed / not-passed target calculation from per-user yearly approved hours
|
||||
- Pending review count query
|
||||
- Distinct filter option queries for year, company, department
|
||||
- Recent activity query with `limit 5`
|
||||
|
||||
## 4. KPI Cards Added
|
||||
|
||||
### Employee
|
||||
|
||||
- Approved Hours
|
||||
- Pending Hours
|
||||
- Rejected Hours
|
||||
- Completion Percentage
|
||||
|
||||
### HRD
|
||||
|
||||
- Total Employees
|
||||
- Employees Passed Target
|
||||
- Employees Not Passed Target
|
||||
- Pending Review Count
|
||||
|
||||
## 5. Charts Added
|
||||
|
||||
### Employee
|
||||
|
||||
- K/S/A Progress section
|
||||
- Recent Activity section
|
||||
|
||||
### HRD
|
||||
|
||||
- K/S/A Distribution
|
||||
- Monthly Training Trend
|
||||
- Department Ranking
|
||||
- Top Courses
|
||||
|
||||
## 6. Filters Added
|
||||
|
||||
### Employee
|
||||
|
||||
- Year
|
||||
|
||||
### HRD
|
||||
|
||||
- Year
|
||||
- Company
|
||||
- Department
|
||||
|
||||
## 7. Responsive Notes
|
||||
|
||||
- Filter panel ใช้ grid ที่ยุบลงได้บน mobile/tablet
|
||||
- KPI cards แสดง 1 คอลัมน์บนจอแคบ และขยายเป็น 2/4 คอลัมน์ตาม breakpoint
|
||||
- Employee dashboard ใช้ 2 sections หลักที่ไม่บีบข้อความจนอ่านยากบน 360px - 412px
|
||||
- HRD charts ถูกจัดใน grid เดิมของ overview และยังคงรองรับ 768px, 1024px, 1440px
|
||||
|
||||
## 8. Performance Notes
|
||||
|
||||
- ใช้ SQL aggregation สำหรับ KPI และ charts แทนการโหลด training records ทั้งหมดมา reduce ใน memory
|
||||
- Recent activity จำกัดที่ 5 รายการ
|
||||
- Ranking charts จำกัดที่ top 5
|
||||
- Filter options ดึงจาก query ที่ group/distinct ตาม organization
|
||||
- ใช้ `cache()` เพื่อให้ layout และ parallel routes ใช้ dataset ชุดเดียวกันใน request เดียว
|
||||
|
||||
## 9. Manual Test Checklist
|
||||
|
||||
- Employee เปิด `/dashboard/overview` แล้วเห็น KPI 4 ใบ
|
||||
- Employee เปลี่ยนปีแล้ว KPI, K/S/A progress และ recent activity เปลี่ยนตาม
|
||||
- HRD เปิด `/dashboard/overview` แล้วเห็น KPI 4 ใบและ chart 4 ส่วน
|
||||
- HRD กรองตามปี / บริษัท / แผนก แล้ว KPI และ chart เปลี่ยนตาม
|
||||
- HRD ดู Pending Review Count ได้ถูกต้อง
|
||||
- Recent Activity แสดงสถานะรายการอบรมถูกต้อง
|
||||
- Dashboard ใช้งานได้บน 360px, 390px, 412px, 768px, 1024px, 1440px
|
||||
|
||||
## 10. Known Limitations
|
||||
|
||||
- การกรอง HRD ตาม company/department ยังอิงข้อมูลบน `users` ปัจจุบัน ไม่ใช่ historical snapshot ตอน submit record
|
||||
- Top Courses และ Department Ranking ใช้ approved hours เป็นตัวจัดอันดับหลัก
|
||||
- หากปีที่เลือกไม่มี training policy ระบบจะ fallback ไป policy ล่าสุด หรือ 0 ชั่วโมงเมื่อไม่มี policy เลย
|
||||
|
||||
## 11. Go-Live Readiness Score
|
||||
|
||||
**8.5 / 10**
|
||||
|
||||
เหตุผล:
|
||||
|
||||
- ฟังก์ชันหลักครบตาม requirement
|
||||
- ไม่มี schema change และไม่ต้อง migrate
|
||||
- typecheck ผ่าน
|
||||
- lint ผ่าน โดยเหลือเฉพาะ warning เดิมของโปรเจกต์ที่ไม่เกี่ยวกับ phase นี้
|
||||
- ยังควรมี manual QA ฝั่ง responsive และตรวจค่าจริงกับ dataset production-like ก่อน go-live
|
||||
Reference in New Issue
Block a user