# Spesifikasi BE: dashboard analitik (organisasi & perbandingan)

Halaman **Analitik** di FE (`pages/analytics.vue`) saat ini memakai data **nyata** yang sudah ada di API:

| Endpoint | Fungsi |
|----------|--------|
| `GET /api/v1/analytics/summary` | `reportsTotal`, `notificationsUnread` untuk **user pemilik token** |
| `GET /api/v1/analytics/trends` | `reportsByDay`: array `{ date, count }` — laporan per **tanggal**, 30 hari terakhir, scoped ke user |

Grafik (garis, batang agregat periode, heatmap) dihitung di **browser** dari `reportsByDay` — bukan data dummy.

---

## Yang belum ada di API (untuk fitur seperti desain lama)

Desain awal FE menampilkan, antara lain:

- KPI **completion rate** / **blocker resolution** persentase tiruan  
- **Perbandingan divisi** (IT, HR, FIN, …)  
- **Peringkat karyawan** paling banyak laporan  
- **“Realtime”** push metrik (bukan polling)

Itu membutuhkan **agregasi lintas pengguna** (per divisi / tim / seluruh organisasi) dan aturan domain yang disepakati.

### Usulan endpoint (fase berikutnya)

1. **`GET /api/v1/analytics/org/summary`** (minimal **superadmin**, atau role yang disepakati)  
   - KPI agregat: total laporan, tingkat penyelesaian, dsb. sesuai skema DB.

2. **`GET /api/v1/analytics/org/by-division`**  
   - Array `{ divisionId atau kode, label, reportCount, score? }` untuk grafik batang per divisi.

3. **`GET /api/v1/analytics/org/top-reporters?limit=10&period=30d`**  
   - Daftar `{ userId, name, reportCount }` untuk widget “most active”.

4. **Prasyarat data**  
   - Relasi user ↔ divisi / tim harus konsisten di DB agar agregasi benar.

**Status:** ketiga endpoint di atas **sudah diimplementasikan di BE** (superadmin; divisi dari `reports.division`). Detail respons: [`../BE/docs/BE_SPEC_ANALYTICS_DASHBOARD.md`](../BE/docs/BE_SPEC_ANALYTICS_DASHBOARD.md).

---

## Catatan “realtime”

- FE memakai **polling** (±60 detik) di halaman analitik.  
- **SSE / WebSocket** untuk metrik organisasi bisa ditambahkan setelah kontrak payload jelas.

---

## File terkait (BE saat ini)

- `internal/api/rest.go` — `analyticsSummary`, `analyticsTrends`
- `internal/api/router.go` — `/analytics/summary`, `/analytics/trends`, **`/analytics/org/*`** (superadmin)
- `internal/api/analytics_org.go` — agregasi organisasi

**Path dokumen ini (repo FE):** `FE/docs/BE_SPEC_ANALYTICS_DASHBOARD.md`  
**Salinan / detail BE:** [`../BE/docs/BE_SPEC_ANALYTICS_DASHBOARD.md`](../BE/docs/BE_SPEC_ANALYTICS_DASHBOARD.md)
