Menu: Đánh giá → Tổng quan
URL:/wp-admin/admin.php?page=assessment-dashboard
File:cicc-assessment/admin/dashboard.php
Chart: Chart.js Radar (CDN)
1. KPI Cards
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 📋 │ │ 🔄 │ │ 📅 │ │ 📚 │
│ Tổng │ │ Đang │ │ Hôm nay │ │ Bộ tiêu │
│ phiên │ │ đánh giá │ │ │ │ chí │
│ 45 │ │ 3 │ │ 2 │ │ 5 │
│30 hoàn │ │ Cần h.t. │ │ phiên mới│ │ kích hoạt│
│ thành │ │ │ │ │ │ │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
| KPI | Công thức SQL |
|---|---|
| Tổng phiên | COUNT(*) FROM assessments |
| Đang đánh giá | COUNT(*) WHERE status='in_progress' |
| Hôm nay | COUNT(*) WHERE created_at >= today |
| Bộ tiêu chí | COUNT(*) FROM templates WHERE status=1 |
2. Radar Chart (Chart.js)
Sử dụng Chart.js Radar với 3 dataset:
| Dataset | Màu | Đường |
|---|---|---|
| 🟢 Tự đánh giá (Self) | #4caf50 | Fill opacity 0.15 |
| 🟡 Đánh giá chéo (Cross) | #ffb300 | Fill opacity 0.15 |
| 🔴 BLĐ + Chuyên gia (Expert) | #f44336 | Fill opacity 0.15 |
Cấu hình:
- Trục: S1 → S6
- Min: 0, Max: 100, step: 20
- Grid:
#333, Point labels:#f0c040(vàng) - Tooltip: hiển thị %
Dữ liệu SQL:
SELECT a.eval_type, g.group_code, g.group_name,
ROUND(AVG(r.score / r.max_score * 100), 1) AS avg_pct
FROM assessments a
JOIN assessment_results r ON a.id = r.assessment_id
JOIN assessment_items i ON r.item_id = i.id
JOIN assessment_groups g ON i.group_id = g.id
WHERE a.status = 'completed'
GROUP BY a.eval_type, g.id
ORDER BY g.sort_order, a.eval_type
Chú thích ngưỡng:
Ngưỡng: 🟢 Tự ĐG ≥ 90% | 🟡 Chéo ≥ 85% | 🔴 BLĐ+CG ≥ 80%
3. Recent Assessments (10 phiên gần nhất)
| Mã phiên | Bộ tiêu chí | Loại | Vị trí | Điểm | Kết quả | Trạng thái |
|---|---|---|---|---|---|---|
| AS-20260623-001 | 6S Checklist | 🔍 Tự DG | C1 | 38/40 (95%) | ✅ Đạt | ✅ completed |
Các hàm: cicc_assessment_calc_result(), cicc_assessment_eval_label(), cicc_assessment_status_label()
4. Cấu trúc PHP
function cicc_assessment_dashboard_page() {
// 1. Query KPI
// 2. Query radar data (JOIN 4 bảng)
// 3. Query recent 10 assessments
// 4. Render HTML + inline Chart.js JavaScript
}
Biến PHP quan trọng:
| Biến | Mô tả |
|---|---|
$radar_data | Raw SQL results (eval_type, group_code, avg_pct) |
$radar | Object: self/cross/expert → [S1%, S2%, ...] |
$thresholds | self=90, cross=85, expert=80 |
Screenshots
images/admin/ass-admin-dashboard-kpi.pngChú thích: 4 KPI cards Admin: Tổng phiên, Đang đánh giá, Hôm nay, Bộ tiêu chí
images/admin/ass-admin-radar-chartjs.pngChú thích: Radar Chart Chart.js với 3 dataset Self/Cross/Expert, grid tối, label vàng
images/admin/ass-admin-recent-sessions.pngChú thích: Bảng 10 phiên gần nhất: mã phiên, bộ tiêu chí, loại, điểm, kết quả, trạng thái