# BE (opsional) — Perkaya respons `GET /analytics/org/reports-by-reporter`

## Konteks produk

Di **Pemantauan tim**, superadmin mengklik angka **Laporan** untuk drill-down. Saat ini:

- **Satu laporan** dalam periode/divisi tersebut: FE langsung membuka halaman Daily Report baca-saja (`GET /reports/:id`) — pengguna melihat **tanggal kerja, tugas kanban (todo / doing / done), blokir, rencana besok** dari `reports.body`.
- **Lebih dari satu**: FE menampilkan **modal ringkas** (judul, tanggal laporan, status kirim) lalu baris diklik → halaman detail yang sama.

Ringkasan di modal **sengaja tipis** karena endpoint daftar tidak mengembalikan isi `body` (JSON kanban).

## Apakah ekspektasi “detail di modal” wajar?

**Ya**, untuk beberapa organisasi ingin melihat cuplikan tugas tanpa navigasi penuh. Itu membutuhkan data tambahan dari BE (atau N+1 `GET /reports/:id` dari FE — tidak disarankan untuk daftar panjang).

## Usulan perluasan API (opsional)

**Endpoint:** `GET /api/v1/analytics/org/reports-by-reporter` (tetap superadmin-only).

**Query baru (opsional):** mis. `include=summary`

Jika `include=summary` (atau nama lain yang disepakati), untuk tiap baris dalam `reports[]` tambahkan objek ringkas yang bisa dibentuk di SQL atau di Go setelah scan:

| Field | Tipe | Keterangan |
|-------|------|------------|
| `taskCounts` | `{ "todo": n, "doing": n, "done": n }` | Hitung dari JSON `body` di server, atau parse di Go setelah `SELECT body`. |
| `blockersPreview` | `string` | `LEFT(TRIM(blockers_from_json), 120)` — hati-hati privasi / ukuran. |
| `workStart` / `workEnd` | `string` | Opsional, dari payload JSON jika ada. |

Alternatif lebih ringan: **`bodySnippet`** string (mis. 200 karakter pertama teks yang diekstrak dari JSON) — risiko format berubah.

## Batasan & rekomendasi

- Tetap **batasi 200 baris** seperti sekarang.
- Hindari mengirim **`body` penuh** pada endpoint daftar kecuali ada flag eksplisit dan batas ukuran (payload besar).
- PATCH/izin baca detail tidak perlu diubah; tetap memakai `GET /reports/:id` untuk isi penuh.

## Referensi

- `BE/internal/api/analytics_org.go` — `analyticsOrgReportsByReporter`
- `FE/docs/BE_SPEC_TEAM_MONITORING_DIVISIONS.md` — kontrak endpoint org
- `FE/utils/report-kanban-payload.ts` — skema `workpulse.report.v1` (tasks, blockers, dll.)

---

*Dokumen opsional: FE sudah memenuhi alur utama lewat halaman `/report?view=`. Implementasikan bagian ini hanya jika produk meminta ringkasan tugas di modal tanpa navigasi.*
