# Analytics & Laporan


## Ringkasan

Halaman **Analytics** (`/analytics`) adalah pusat metrik OmniStream. Di sini supervisor dapat melihat tren pertumbuhan percakapan dan pesan harian, membandingkan performa antar-agent (First Response Time, Average Handle Time, Resolution Rate), mengukur distribusi kanal (WhatsApp vs Instagram vs Email), dan meninjau hasil survei Customer Satisfaction (CSAT) per periode.

Semua data dihitung secara agregat di backend oleh endpoint analytics dan di-cache selama siklus permintaan yang sama, sehingga satu halaman dapat menampilkan banyak KPI tanpa membanjiri database.

:::info
**Hak akses:** Seluruh halaman Analytics hanya dapat diakses oleh peran **supervisor** dan **admin**. Agent reguler yang membuka `/analytics` akan melihat layar *"Access Restricted"*.
:::

## Langkah-langkah

1. Klik menu **Analytics** di sidebar untuk membuka `/analytics`. Pertama kali dibuka, frontend akan melakukan 5 panggilan API paralel: overview, trends, agents, channels, dan CSAT.
2. Periksa empat **KPI Cards** di baris teratas:
   - **Conversations** — total + jumlah yang masih open
   - **Messages Today** — throughput pesan 24 jam terakhir
   - **Contacts** — total kontak unik
   - **Resolution Rate** — persentase percakapan yang sudah resolved
3. Gulir ke **Agents / Channels / Status Distribution** untuk mini-chart samping:
   - **Agents card** menampilkan daftar agent aktif dengan jumlah percakapan open-nya
   - **Channels card** menampilkan bar distribusi kontak per kanal (WhatsApp hijau, Instagram pink, Email biru)
   - **Status Distribution** adalah horizontal bar untuk rasio Open vs Resolved
4. Pilih periode di panel **Trends** (`7d`, `30d`, atau `90d`). Grafik bar vertikal akan di-re-fetch dari `GET /api/analytics/trends?period=<value>` dan menampilkan jumlah **New Conversations** serta **Messages** per hari.
5. Gulir ke tabel **Agent Performance**. Kolom yang tersedia:

   | Kolom | Arti |
   |---|---|
   | Agent | Nama + email |
   | Status | Online/Offline (real-time) |
   | Open | Jumlah percakapan open |
   | Resolved | Jumlah percakapan yang sudah resolved |
   | Total | Total yang ditangani |
   | Resolution % | Rasio resolved/total |
   | Avg FRT | Rata-rata First Response Time (detik, ditampilkan `Xm` atau `Xh Ym`) |
   | Avg AHT | Rata-rata Average Handle Time (durasi open → resolved) |

6. Di bagian paling bawah, tinjau **Customer Satisfaction (CSAT)** — rata-rata rating (1–5 bintang), total survei yang terkirim, jumlah yang dijawab, dan **Response Rate** (rated/total). Bar distribusi rating per bintang dan tabel CSAT per-agent juga tersedia di bawahnya.
7. Klik tombol **Refresh** di pojok kanan atas untuk me-muat ulang semua metrik sekaligus.

![Screenshot halaman analytics](/screenshots/analytics.png)

## Endpoint yang dipakai

| Data | Endpoint | Tag OpenAPI |
|---|---|---|
| KPI overview | `GET /api/analytics/overview` | **Analytics** |
| Grafik tren 7/30/90d | `GET /api/analytics/trends?period={7d\|30d\|90d}` | **Analytics** |
| Performa per-agent | `GET /api/analytics/agents` | **Analytics** |
| Distribusi kanal | `GET /api/analytics/channels` | **Analytics** |
| Ringkasan CSAT | `GET /api/analytics/csat?period={7d\|30d\|90d}` | **Analytics** / **CSAT** |

Definisi skema lengkap (tipe respons, parameter kueri, kode status) tersedia di [API Reference — Analytics](/api).

## Interpretasi metrik

- **First Response Time (FRT)** — selisih waktu antara pesan pertama masuk dan balasan pertama dari agent. Metrik kualitas layanan paling sensitif; FRT di atas 5 menit biasanya dianggap lambat. FRT dihitung secara event-driven saat agent mengirim balasan pertama ke percakapan yang belum pernah dibalas.
- **Average Handle Time (AHT)** — durasi dari percakapan open hingga di-resolved. AHT yang tinggi bisa menandakan percakapan kompleks *atau* agent yang lupa menutup percakapan — periksa dengan membuka inbox agent bersangkutan.
- **Resolution Rate** — rasio resolved/total. Ukuran kesehatan operasional secara umum.
- **CSAT Average Rating** — rata-rata 1–5. Target industri biasanya ≥ 4.0.
- **CSAT Response Rate** — persentase survei yang dijawab. Target ideal > 30%; di bawah 15% biasanya menandakan trigger survei tidak optimal atau kontak "survey fatigue".

## Laporan periode kustom

Untuk laporan di luar periode bawaan (7d/30d/90d), gunakan endpoint `GET /api/analytics/trends` langsung via [API Reference](/api) dengan parameter `period` yang sesuai.

## Rute terkait

- [Dashboard Supervisor](/panduan/supervisor/dashboard) — ringkasan operasional singkat
- [Kinerja Agent](/panduan/supervisor/kinerja-agent) — tabel performa + CSAT per-agent lengkap
- [Pemantauan SLA](/panduan/supervisor/pemantauan-sla) — monitoring breach SLA
