Siap! Berikut prompt lengkap (siap tempel) untuk membuat website + dashboard interaktif tentang perkembangan harga karet Lampung tahun 2022, lengkap dengan jenis, bulanan, tren, metrik, tooltip, drill-through, dan auto-insights.
Prompt Varian A — Kode Web (Next.js + ECharts)
Copy-paste seluruh isi blok ini ke AI code assistant pilihan Anda (ChatGPT/Copilot/Cursor) agar menghasilkan web app siap jalan.
"""
Peran:
Anda adalah Full‑Stack Engineer + Data Visualization Specialist. Buatkan website dan dashboard interaktif yang production-grade.
Tujuan:
Membangun website dan dashboard harga karet di Lampung tahun 2022 dengan:
- Dimensi: bulan (Jan–Des 2022), jenis karet, kabupaten (opsional), grade, KKK (%).
- Metrik: harga (IDR/kg), volume (ton), transaksi, MoM %, 3M moving average, indeks harga (Jan=100), volatilitas (stdev, CoV), harga disetarakan KKK 60% (KKK-adjusted).
- Fitur: filter, tooltip kaya informasi, drill-through (klik ke halaman detail), ekspor CSV/PNG, URL state, mode gelap, aksesibilitas.
Stack dan standar:
- Next.js 14 (App Router) + TypeScript + TailwindCSS + TanStack Table + ECharts (atau Vega-Lite).
- Format angka: IDR, pemisah ribuan, desimal 2.
- Lokal: Indonesia (ID, GMT+7), tanggal “MMM 2022”.
- Warna aman untuk buta warna, kontras AA.
- State tersimpan di URL (query params) agar bisa dibagikan.
Struktur halaman:
- / — Beranda: ringkas tujuan, ringkasan 2022 (KPI cards), tautan ke Dashboard.
- /dashboard — Dashboard utama dengan filter global dan visual:
1) KPI cards:
- Rata-rata harga 2022 (volume-weighted)
- Harga tertinggi & terendah + bulan & jenisnya
- Perubahan MoM bulan terakhir (% dan ikon ↑/↓)
- Volatilitas (stdev dan coefficient of variation)
- Indeks harga 2022 (Jan=100) dan nilai akhir
2) Time series garis/area:
- Rata-rata harga per jenis per bulan
- Toggle 3M MA & baseline index (Jan=100)
- Tooltip kaya informasi (lihat detail tooltip)
3) Bar chart bulanan (stacked / grouped):
- Harga rata-rata per jenis
4) Heatmap (opsional):
- Kabupaten vs bulan (rata-rata harga)
5) Scatter:
- Harga vs KKK% (warna = jenis, ukuran = volume) + line fit
6) Boxplot:
- Distribusi harga per jenis (mendeteksi outlier)
7) Tabel rinci:
- Bulan, jenis, kabupaten, harga, volume, KKK, transaksi, MoM, 3M MA
- /detail — Halaman drill-through:
- Dibuka saat klik titik/batang/sel di dashboard
- Query params: month=YYYY-MM, jenis=..., kabupaten=...
- Tampilkan ringkasan filter, tren lokal, tabel transaksi (dengan pagination), KPI lokal, komparasi vs 3 bulan sebelum & rata-rata 2022
- /about-data — Sumber data, definisi metrik, catatan kualitas, asumsi.
Data & skema:
- Aplikasi harus bisa memuat data dari:
- File CSV/JSON lokal: /public/data/harga_karet_lampung_2022.(csv|json)
- Endpoint API (opsional): /api/data
- Skema standar:
{
"date": "YYYY-MM-DD",
"month": "YYYY-MM",
"kabupaten": "Lampung Tengah | Lampung Utara | ...",
"jenis": "Bokar | Slab | RSS | Lateks",
"grade": "A|B|C|SIR20|RSS3 (opsional)",
"kkk_percent": 58.3,
"harga_idr_per_kg": 13250.5,
"volume_ton": 48.2,
"transaksi": 123,
"sumber": "Dinas Perkebunan Lampung",
"updated_at": "YYYY-MM-DD"
}
- Jika file nyata tidak tersedia, buat dan gunakan dummy data yang realistis untuk Jan–Des 2022 (12 bulan), 3–4 jenis karet, beberapa kabupaten. Simulasikan:
- Tren wajar (sedikit naik/turun), fluktuasi normal, variasi antar jenis, korelasi positif harga dengan KKK.
- Pastikan total volume > 0 dan harga dalam kisaran wajar (mis. 8.000–25.000 IDR/kg).
- Sertakan seeding dummy JSON di /public/data/ beserta util untuk mengganti ke data nyata nanti.
Perhitungan metrik:
- Weighted average price (per bulan/jenis/kabupaten): sum(harga*volume)/sum(volume)
- MoM%: (avg_t - avg_t-1)/avg_t-1
- 3M MA: rata-rata 3 bulan bergerak
- Index Jan=100: avg_t / avg_Jan * 100
- Volatilitas: stdev bulanan 2022 dan CoV = stdev/mean
- Harga disetarakan KKK 60%: harga_adj_60 = harga * (60 / kkk_percent)
- Outlier flag: z-score > 2 (opsional)
Filter global:
- Tahun (default 2022; kunci untuk filter)
- Bulan (multi-select), Jenis, Kabupaten, Grade, KKK range slider, Harga range
- Tombol Reset dan tombol Copy URL (untuk bagikan state)
Tooltip (harus informatif dan konsisten):
- Judul: Bulan + Jenis (+ Kabupaten jika relevant)
- Angka:
- Harga rata-rata (IDR/kg) + MoM% + ikon trend
- Volume (ton), median KKK%, 3M MA, Index Jan=100
- Porsi volume (%) dari total bulan
- Aksi: link “Lihat detail” yang membuka /detail dengan query params aktif
Drill-through:
- Klik garis/batang/sel heatmap/boxplot -> navigasi ke /detail?month=...&jenis=...&kabupaten=...
- Di halaman detail, tampilkan:
- KPI lokal (avg harga, MoM, volume, KKK)
- Tren 6 bulan di sekitar bulan terpilih
- Tabel transaksi (sortable, filter cepat, ekspor CSV)
- Insight ringkas otomasi (lihat bagian Insight)
Insight otomatis (narasi):
- Buat generator insight yang menulis paragraf dalam Bahasa Indonesia, mencakup:
- Bulan tertinggi/terendah, jenis paling mahal/murah
- MoM dan turning points
- Volatilitas dan outlier yang terdeteksi
- Perbedaan antar kabupaten
- Dampak KKK terhadap harga (korelasi, elastisitas sederhana)
- Rekomendasi monitoring (mis. antisipasi bulan volatil)
- Format output: bullet points + 1–2 paragraf naratif
Aksesibilitas & UX:
- Keyboard navigable, aria-labels, focus states
- Mode terang/gelap
- Skeleton/loading states, error boundary
- Empty states ramah (jika filter kosong)
Kinerja & kualitas:
- Lazy/dynamic import chart
- Data transform di worker (opsional)
- Unit test util perhitungan metrik
- Playwright test sederhana untuk routing dan filter
Branding & gaya:
- Tema Lampung (aksen hijau/kuning), tipografi yang ramah
- Idaman komponen: Card, FilterBar, ChartContainer, InsightPanel
Deliverables:
- Repo Next.js lengkap
- Petunjuk run (README): npm i; npm run dev
- File data dummy dan instruksi mengganti ke data nyata
- Komponen InsightGenerator yang bisa dipanggil dengan state filter aktif
- Ekspor gambar (PNG) per chart dan ekspor CSV di tabel
Catatan penting:
- Jangan mengklaim sumber data nyata jika tidak digunakan. Tampilkan badge “Demo data” ketika memakai dummy.
- Pastikan semua format angka menggunakan Rupiah (IDR) dengan pemisah ribuan.
- Sertakan contoh ENV opsional bila ada endpoint API.
Mulai dari scaffold project, lalu implementasi halaman dan komponen sesuai deskripsi. Sertakan contoh dummy JSON berikut untuk smoke test:
[
{ "month":"2022-01","kabupaten":"Lampung Tengah","jenis":"Bokar","grade":"B","kkk_percent":58.0,"harga_idr_per_kg":13250,"volume_ton":40.5,"transaksi":120,"sumber":"Demo","updated_at":"2023-01-01" },
{ "month":"2022-01","kabupaten":"Lampung Timur","jenis":"RSS","grade":"RSS3","kkk_percent":62.0,"harga_idr_per_kg":16000,"volume_ton":18.2,"transaksi":66,"sumber":"Demo","updated_at":"2023-01-01" },
{ "month":"2022-02","kabupaten":"Lampung Tengah","jenis":"Bokar","grade":"B","kkk_percent":57.0,"harga_idr_per_kg":12900,"volume_ton":45.1,"transaksi":131,"sumber":"Demo","updated_at":"2023-01-01" },
{ "month":"2022-02","kabupaten":"Lampung Utara","jenis":"Slab","grade":"C","kkk_percent":55.0,"harga_idr_per_kg":11800,"volume_ton":22.6,"transaksi":72,"sumber":"Demo","updated_at":"2023-01-01" }
]
"""
Prompt Varian B — Power BI/Tableau/Looker (tanpa kode)
Gunakan prompt ini pada asisten BI (Copilot Power BI/Tableau Analyst/Looker):
"""
Buat dashboard interaktif “Harga Karet Lampung 2022” dengan fitur:
- Data: kolom month (YYYY-MM), kabupaten, jenis, grade, kkk_percent, harga_idr_per_kg, volume_ton, transaksi.
- Relasi dan agregasi: gunakan weighted average untuk harga (berdasar volume_ton).
- Visual:
1) KPI cards: Avg harga 2022 (weighted), harga tertinggi/terendah + bulan/jenis, MoM terakhir, volatilitas (stdev & CoV), index Jan=100.
2) Line chart: harga rata-rata per jenis per bulan, dengan 3M moving average dan index Jan=100 (gunakan switch).
3) Bar chart: harga rata-rata per jenis per bulan (grouped).
4) Heatmap: kabupaten vs bulan (warna = avg harga).
5) Scatter: harga vs KKK% (warna jenis, ukuran volume) dengan trendline.
6) Boxplot: distribusi harga per jenis.
7) Table rinci dengan kolom: month, jenis, kabupaten, harga_avg_w, volume, KKK_avg, MoM%, 3M_MA, Index.
- Filter global: bulan (multi), jenis, kabupaten, grade, rentang KKK, rentang harga. Tambahkan tombol Reset.
- Tooltip: tampilkan harga avg, MoM%, volume, median KKK, 3M MA, Index, share volume; sertakan tombol/aksi drill-through.
- Drill-through: klik data point -> Halaman “Detail Bulan-Jenis” berisi tren lokal 6 bulan, KPI lokal, tabel transaksi, dan narasi insight otomatis.
- Perhitungan:
- Harga weighted: sum(harga*volume)/sum(volume)
- MoM%: (avg_t - avg_t-1)/avg_t-1
- 3M_MA: moving average 3 periode
- Index Jan=100: avg_t/avg_Jan*100
- Volatilitas 2022: stdev dan CoV per jenis
- Format angka: IDR dengan pemisah ribuan; tanggal lokal Indonesia.
- Tema warna ramah buta warna; mode gelap bila tersedia.
- Tambahkan halaman “About Data” berisi definisi metrik, asumsi, dan badge “Demo data” bila bukan data resmi.
- Buat bookmark/URL state agar filter bisa dibagikan.
- Tambahkan tombol ekspor CSV di tabel dan ekspor gambar visual bila tersedia.
- Bangun visual sehingga responsif di canvas mobile.
Terakhir, hasilkan panel teks “Insight Otomatis” (Bahasa Indonesia) yang menjelaskan puncak/low, MoM penting, perbandingan antar kabupaten, dampak KKK terhadap harga, dan outlier yang perlu ditinjau.
"""
Prompt Varian C — Generator Insight Otomatis (pakai di ChatGPT/Notebook)
"""
Anda adalah Analis Data. Gunakan dataset harga karet Lampung 2022 dengan kolom:
month, jenis, kabupaten, kkk_percent, harga_idr_per_kg, volume_ton, transaksi.
Lakukan:
1) Hitung metrik per bulan/jenis/kabupaten: avg harga (weighted by volume), median KKK, MoM%, 3M MA, Index Jan=100, stdev, CoV, outlier (|z|>2).
2) Tulis insight dalam Bahasa Indonesia:
- 5–8 bullet utama (puncak/terendah, turning points, jenis termahal/termurah, kabupaten dengan premi/discount, korelasi KKK-harga, volatilitas, outlier).
- 1 paragraf rekomendasi monitoring/aksi.
3) Sertakan angka spesifik (IDR, %, bulan) dan beri tanda ▲/▼ untuk tren.
4) Jika data tidak mencukupi untuk klaim tertentu, katakan secara eksplisit.
Output:
- Bagian “Ringkasan Eksekutif”
- Bagian “Sorotan Bulanan”
- Bagian “Risiko & Rekomendasi”
"""
Mau pakai stack apa? Saya bisa sesuaikan prompt-nya lebih spesifik. Pilihan cepat:
- Next.js + ECharts (web app siap jalan)
- Power BI/Tableau (no-code/low-code)
- Streamlit + Altair (cepat prototipe)
- Superset/Metabase (self-host BI)
Jika Anda sudah punya contoh file data (CSV/JSON), share 3–5 baris pertama (tanpa data sensitif) supaya saya tweak prompt-nya 100% pas dengan kolom Anda.
```json
{
"description": "Kumpulan prompt siap pakai untuk analisis dan visualisasi Harga Karet Lampung 2022.",
"language": "id",
"variants": {
"web_nextjs_echarts": {
"label": "Prompt Varian A — Kode Web (Next.js + ECharts)",
"intended_tool": "AI code assistant (mis. ChatGPT/Copilot/Cursor)",
"prompt": [
"Peran:",
"Anda adalah Full‑Stack Engineer dan Data Visualization Specialist. Bangun website dan dashboard interaktif yang siap produksi (production-grade) untuk analisis harga karet.",
"",
"Tujuan:",
"Bangun website dan dashboard 'Harga Karet Lampung 2022' dengan karakteristik berikut:",
"- Dimensi utama: bulan (Jan–Des 2022), jenis karet, kabupaten (opsional), grade, KKK (%).",
"- Metrik: harga (IDR/kg), volume (ton), jumlah transaksi, perubahan bulanan MoM (%), rata-rata bergerak 3 bulan (3M moving average), indeks harga (Jan=100), volatilitas (standar deviasi dan CoV), dan harga disetarakan KKK 60% (KKK-adjusted).",
"- Fitur: filter global, tooltip kaya informasi, drill-through ke halaman detail, ekspor CSV/PNG, penyimpanan state di URL, mode gelap, dan aksesibilitas yang baik.",
"",
"Stack dan standar:",
"- Next.js 14 (App Router) + TypeScript + TailwindCSS + TanStack Table + ECharts (atau Vega-Lite). Gunakan struktur dan praktik yang sesuai untuk aplikasi siap produksi.",
"- Format angka: Rupiah (IDR) dengan pemisah ribuan dan 2 angka desimal.",
"- Lokal: Indonesia (id-ID, zona waktu GMT+7). Tampilkan label bulan dalam format singkat, misalnya 'Jan 2022'.",
"- Palet warna: aman untuk buta warna dan memenuhi kontras minimal WCAG AA.",
"- Semua state filter utama harus dapat direpresentasikan dan dibaca dari URL (query params) sehingga tampilan bisa dibagikan.",
"",
"Struktur halaman:",
"- '/' — Beranda:",
" - Menjelaskan tujuan situs secara singkat.",
" - Ringkasan 2022 dalam bentuk kartu KPI utama.",
" - Tautan jelas menuju halaman dashboard.",
"- '/dashboard' — Dashboard utama dengan filter global dan visualisasi:",
" 1) Kartu KPI:",
" - Rata-rata harga 2022 (volume-weighted).",
" - Harga tertinggi dan terendah 2022 beserta bulan dan jenisnya.",
" - Perubahan MoM bulan terakhir (dalam % dan ikon panah naik/turun).",
" - Volatilitas: standar deviasi dan coefficient of variation (CoV) harga 2022.",
" - Indeks harga (Jan=100) dan nilai indeks pada bulan terakhir.",
" 2) Time series garis/area:",
" - Rata-rata harga per jenis per bulan.",
" - Opsi toggle untuk menampilkan 3M moving average dan baseline index (Jan=100).",
" - Tooltip kaya informasi sesuai spesifikasi tooltip di bawah.",
" 3) Bar chart bulanan (stacked atau grouped):",
" - Harga rata-rata per jenis per bulan (gunakan weighted average).",
" 4) Heatmap (opsional tetapi diutamakan jika data kabupaten tersedia):",
" - Sumbu: kabupaten vs bulan, warna merepresentasikan harga rata-rata.",
" 5) Scatter plot:",
" - Sumbu X: KKK (%), sumbu Y: harga.",
" - Warna titik berdasarkan jenis, ukuran berdasarkan volume.",
" - Sertakan garis tren (fit line sederhana).",
" 6) Boxplot:",
" - Distribusi harga per jenis (untuk mendeteksi outlier).",
" 7) Tabel rinci:",
" - Kolom: bulan, jenis, kabupaten, grade, harga rata-rata (weighted), volume, KKK rata-rata/median, jumlah transaksi, MoM, 3M MA, indeks Jan=100, flag outlier (bila ada).",
" - Fitur: sort, filter kolom, pagination, ekspor CSV.",
"",
"- '/detail' — Halaman drill-through:",
" - Dibuka ketika pengguna mengklik titik, batang, sel heatmap, atau boxplot pada dashboard.",
" - Menerima query params: month=YYYY-MM, jenis=..., kabupaten=... (opsional), grade=... (opsional).",
" - Menampilkan:",
" - Ringkasan filter aktif.",
" - KPI lokal (avg harga, volume, KKK, MoM lokal, indeks lokal).",
" - Tren 6 bulan di sekitar bulan terpilih (3 bulan sebelum, bulan terpilih, 2 bulan sesudah bila tersedia).",
" - Tabel transaksi rinci (dengan pagination, sort, filter cepat, dan ekspor CSV).",
" - Komparasi singkat vs rata-rata 3 bulan sebelumnya dan rata-rata 2022.",
" - Panel insight otomatis (lihat bagian Insight otomatis).",
"",
"- '/about-data' — Halaman tentang data:",
" - Menjelaskan sumber data, definisi setiap metrik, metodologi perhitungan, catatan kualitas data, dan asumsi.",
" - Tampilkan badge 'Demo data' secara jelas apabila menggunakan data dummy.",
"",
"Data dan skema:",
"- Aplikasi harus mampu memuat data dari:",
" - File CSV/JSON lokal: '/public/data/harga_karet_lampung_2022.csv' atau '/public/data/harga_karet_lampung_2022.json'.",
" - Endpoint API opsional: '/api/data' yang mengembalikan data dalam skema yang sama.",
"- Skema standar (satu baris = agregat per kombinasi bulan–jenis–kabupaten–grade):",
" {",
" 'date': 'YYYY-MM-DD' (opsional, boleh null; gunakan hari pertama bulan jika diisi),",
" 'month': 'YYYY-MM' (wajib),",
" 'kabupaten': 'Lampung Tengah | Lampung Utara | ...',",
" 'jenis': 'Bokar | Slab | RSS | Lateks',",
" 'grade': 'A | B | C | SIR20 | RSS3' (opsional),",
" 'kkk_percent': 58.3,",
" 'harga_idr_per_kg': 13250.5,",
" 'volume_ton': 48.2,",
" 'transaksi': 123,",
" 'sumber': 'Dinas Perkebunan Lampung' atau 'Demo',",
" 'updated_at': 'YYYY-MM-DD'",
" }",
"- Jika file nyata belum tersedia, buat dan gunakan dummy data yang realistis untuk Jan–Des 2022 (12 bulan), 3–4 jenis karet, dan beberapa kabupaten. Simulasikan:",
" - Tren harga yang wajar (sedikit naik/turun antar bulan).",
" - Fluktuasi normal antar jenis dan kabupaten.",
" - Korelasi positif antara KKK dan harga.",
" - Harga dalam kisaran wajar, misalnya 8.000–25.000 IDR/kg.",
" - Total volume selalu > 0 untuk setiap agregat yang digunakan.",
"- Sertakan:",
" - File dummy JSON di '/public/data/harga_karet_lampung_2022.json'.",
" - Utilitas atau konfigurasi sederhana untuk mengganti ke data nyata kemudian (misalnya lewat ENV yang mengatur sumber data).",
"",
"Perhitungan metrik:",
"- Weighted average price (per kombinasi bulan/jenis/kabupaten/grade yang relevan):",
" avg_harga = sum(harga_idr_per_kg * volume_ton) / sum(volume_ton).",
"- MoM%:",
" MoM%_t = (avg_t - avg_(t-1)) / avg_(t-1).",
" Jika data bulan sebelumnya tidak tersedia, tampilkan sebagai 'N/A'.",
"- 3M moving average:",
" 3M_MA_t = rata-rata dari avg_(t), avg_(t-1), avg_(t-2) (hanya jika ketiganya ada).",
"- Index Jan=100:",
" index_t = (avg_t / avg_Jan) * 100.",
"- Volatilitas:",
" - stdev = standar deviasi harga bulanan sepanjang 2022.",
" - CoV = stdev / mean.",
"- Harga disetarakan KKK 60%:",
" harga_adj_60 = harga_idr_per_kg * (60 / kkk_percent).",
"- Outlier flag (opsional tetapi diutamakan):",
" - Hitung z-score harga per jenis.",
" - Tandai sebagai outlier jika |z| > 2.",
"",
"Filter global:",
"- Tahun (default 2022; desain agar mudah diperluas ke tahun lain).",
"- Bulan (multi-select).",
"- Jenis karet (multi-select).",
"- Kabupaten (multi-select).",
"- Grade (multi-select).",
"- KKK range slider.",
"- Range harga.",
"- Tombol Reset filter.",
"- Tombol Copy URL untuk menyalin URL dengan state filter saat ini.",
"",
"Tooltip (harus informatif dan konsisten di semua chart):",
"- Judul tooltip:",
" - Bulan + jenis, dan tambah kabupaten jika konteks visualnya per kabupaten.",
"- Isi angka:",
" - Harga rata-rata (IDR/kg, weighted) dan MoM% dengan ikon tren (▲ atau ▼ bila relevan).",
" - Volume (ton).",
" - KKK median atau rata-rata (jelaskan mana yang digunakan).",
" - 3M moving average.",
" - Index Jan=100.",
" - Porsi volume (%) terhadap total volume bulan tersebut (atau terhadap subset filter saat ini).",
"- Aksi:",
" - Link atau tombol 'Lihat detail' yang membuka halaman '/detail' dengan query params sesuai titik data yang diklik.",
"",
"Drill-through:",
"- Interaksi:",
" - Klik garis/area pada time series, batang bar chart, sel heatmap, titik scatter, atau elemen boxplot akan:",
" - Meng-highlight titik tersebut.",
" - Memberi opsi untuk navigasi ke '/detail?month=...&jenis=...&kabupaten=...&grade=...'.",
"- Halaman detail harus:",
" - Menggunakan filter dari query params sebagai default filter lokal.",
" - Menampilkan KPI lokal (avg harga, volume, KKK, MoM, indeks lokal).",
" - Menampilkan tren 6 bulan di sekitar periode terpilih.",
" - Menyediakan tabel transaksi rinci dengan:",
" - Pagination, sort, filter kolom cepat.",
" - Tombol ekspor CSV.",
" - Menampilkan insight otomatis (lihat bagian Insight otomatis di bawah).",
"",
"Insight otomatis (narasi):",
"- Buat komponen 'InsightGenerator' yang:",
" - Menerima data agregat yang sudah difilter (misalnya per tahun atau per kombinasi bulan/jenis/kabupaten).",
" - Menghitung dan merangkum:",
" - Bulan dengan harga tertinggi dan terendah.",
" - Jenis karet paling mahal dan paling murah (secara rata-rata tahunan).",
" - Perubahan MoM dan titik balik tren (turning points).",
" - Volatilitas dan outlier yang terdeteksi.",
" - Perbedaan harga antar kabupaten (premi/discount terhadap rata-rata provinsi).",
" - Hubungan antara KKK dan harga (korelasi sederhana, elastisitas kasar bila memungkinkan).",
" - Rekomendasi monitoring (misalnya bulan-bulan dengan volatilitas tinggi yang perlu diawasi).",
" - Output:",
" - 5–8 bullet point insight utama.",
" - 1–2 paragraf naratif pendek dalam Bahasa Indonesia, ringkas dan mudah dipahami.",
"",
"Aksesibilitas dan UX:",
"- Semua elemen interaktif harus bisa dinavigasi dengan keyboard (tab order logis, focus state jelas).",
"- Gunakan aria-label dan atribut ARIA yang relevan untuk chart container dan kontrol filter.",
"- Sediakan mode terang dan gelap, dengan toggle yang mudah ditemukan.",
"- Tampilkan skeleton/loading state saat data sedang dimuat.",
"- Sediakan error boundary dengan pesan error yang informatif namun aman.",
"- Untuk empty state (misalnya filter terlalu sempit dan tidak ada data), tampilkan pesan ramah dan opsi untuk reset filter.",
"",
"Kinerja dan kualitas:",
"- Gunakan dynamic import/lazy load untuk komponen chart (ECharts/Vega-Lite) agar initial load cepat.",
"- Pertimbangkan memindahkan transformasi data berat ke Web Worker (opsional).",
"- Tulis unit test untuk utilitas perhitungan metrik (MoM, 3M MA, indeks, volatilitas, harga_adj_60, outlier).",
"- Tulis minimal satu skenario Playwright (atau framework serupa) untuk:",
" - Navigasi antar halaman ('/', '/dashboard', '/detail', '/about-data').",
" - Mengubah filter dan memastikan URL state ikut berubah.",
"",
"Branding dan gaya:",
"- Tema visual mengambil inspirasi Lampung:",
" - Aksen warna hijau dan kuning.",
" - Tipografi yang bersih dan mudah dibaca.",
"- Buat komponen UI reusable, minimal:",
" - Card.",
" - FilterBar.",
" - ChartContainer (dengan judul, deskripsi, tombol ekspor).",
" - InsightPanel.",
"",
"Deliverables (yang harus dihasilkan oleh kode):",
"- Struktur project Next.js lengkap, siap dijalankan.",
"- README dengan instruksi singkat:",
" - Cara menjalankan: 'npm install' kemudian 'npm run dev'.",
" - Cara mengganti data dummy dengan data nyata.",
"- File data dummy di '/public/data/harga_karet_lampung_2022.json'.",
"- Endpoint API opsional '/api/data' yang membaca dari file dummy (bila diimplementasikan).",
"- Komponen 'InsightGenerator' yang bisa dipanggil dengan state filter aktif.",
"- Fitur ekspor:",
" - Ekspor gambar (PNG) untuk setiap chart utama.",
" - Ekspor CSV untuk tabel utama dan tabel di halaman detail.",
"- Contoh konfigurasi ENV (misalnya '.env.example') bila ada endpoint API eksternal yang ingin didukung.",
"",
"Catatan penting:",
"- Jangan mengklaim menggunakan sumber data resmi jika yang dipakai adalah dummy. Tampilkan badge atau label 'Demo data' dengan jelas ketika data bukan data resmi.",
"- Pastikan seluruh format angka Rupiah konsisten (IDR dengan pemisah ribuan, 2 desimal bila perlu).",
"- Komentar kode seperlunya untuk memudahkan penggantian data di masa depan.",
"",
"Contoh dummy JSON minimal untuk smoke test (letakkan di '/public/data/harga_karet_lampung_2022.json'):",
"[",
" { 'month': '2022-01', 'kabupaten': 'Lampung Tengah', 'jenis': 'Bokar', 'grade': 'B', 'kkk_percent': 58.0, 'harga_idr_per_kg': 13250, 'volume_ton': 40.5, 'transaksi': 120, 'sumber': 'Demo', 'updated_at': '2023-01-01' },",
" { 'month': '2022-01', 'kabupaten': 'Lampung Timur', 'jenis': 'RSS', 'grade': 'RSS3', 'kkk_percent': 62.0, 'harga_idr_per_kg': 16000, 'volume_ton': 18.2, 'transaksi': 66, 'sumber': 'Demo', 'updated_at': '2023-01-01' },",
" { 'month': '2022-02', 'kabupaten': 'Lampung Tengah', 'jenis': 'Bokar', 'grade': 'B', 'kkk_percent': 57.0, 'harga_idr_per_kg': 12900, 'volume_ton': 45.1, 'transaksi': 131, 'sumber': 'Demo', 'updated_at': '2023-01-01' },",
" { 'month': '2022-02', 'kabupaten': 'Lampung Utara', 'jenis': 'Slab', 'grade': 'C', 'kkk_percent': 55.0, 'harga_idr_per_kg': 11800, 'volume_ton': 22.6, 'transaksi': 72, 'sumber': 'Demo', 'updated_at': '2023-01-01' }",
"]",
"",
"Instruksi:",
"- Mulai dari scaffold project Next.js (App Router, TypeScript, Tailwind).",
"- Implementasikan seluruh halaman dan komponen utama sesuai spesifikasi di atas.",
"- Pastikan kode yang dihasilkan bisa dijalankan tanpa modifikasi besar (copy-paste ke project baru lalu jalankan perintah di README)."
]
},
"bi_tools": {
"label": "Prompt Varian B — Power BI/Tableau/Looker (tanpa kode)",
"intended_tool": "Asisten BI (Power BI Copilot / Tableau / Looker / dsb.)",
"prompt": [
"Buat dashboard interaktif 'Harga Karet Lampung 2022' di tool BI yang Anda gunakan (misalnya Power BI, Tableau, atau Looker) dengan spesifikasi berikut.",
"",
"Data dan agregasi:",
"- Kolom minimal: month (format YYYY-MM), kabupaten, jenis, grade, kkk_percent, harga_idr_per_kg, volume_ton, transaksi.",
"- Gunakan weighted average untuk harga berbasis volume_ton:",
" avg_harga = sum(harga_idr_per_kg * volume_ton) / sum(volume_ton).",
"",
"Visualisasi yang harus ada:",
"1) KPI cards:",
" - Rata-rata harga 2022 (weighted).",
" - Harga tertinggi dan terendah 2022 beserta bulan dan jenisnya.",
" - Perubahan MoM untuk bulan terakhir (dalam %).",
" - Volatilitas harga 2022: standar deviasi dan CoV.",
" - Indeks harga dengan Januari = 100 (nilai indeks pada bulan-bulan berikutnya).",
"2) Line chart:",
" - Sumbu X: month.",
" - Sumbu Y: harga rata-rata (weighted).",
" - Warna berdasarkan jenis.",
" - Tambahkan 3M moving average dan indeks Jan=100, dengan kontrol (switch atau parameter) untuk memilih tampilan.",
"3) Bar chart:",
" - Harga rata-rata per jenis per bulan, model grouped bar.",
"4) Heatmap:",
" - Sumbu: kabupaten vs month.",
" - Warna: rata-rata harga (weighted).",
"5) Scatter plot:",
" - Sumbu X: kkk_percent.",
" - Sumbu Y: harga rata-rata.",
" - Warna: jenis.",
" - Ukuran titik: volume_ton.",
" - Tambahkan trendline/regression line.",
"6) Boxplot:",
" - Distribusi harga per jenis (gunakan harga rata-rata atau data transaksi bila tersedia).",
"7) Tabel rinci:",
" - Kolom: month, jenis, kabupaten, harga_avg_weighted, volume_ton, KKK_avg atau median, MoM%, 3M_MA, Index_Jan100.",
" - Tambahkan kemampuan sort dan filter dasar.",
"",
"Filter global:",
"- Bulan (multi-select).",
"- Jenis.",
"- Kabupaten.",
"- Grade.",
"- Rentang KKK (slider atau numeric range).",
"- Rentang harga.",
"- Tombol Reset untuk mengembalikan filter ke default.",
"",
"Tooltip:",
"- Untuk semua visual, tampilkan dalam tooltip:",
" - Harga rata-rata (IDR/kg, weighted).",
" - MoM% dengan indikator naik/turun (▲/▼ bila mendukung).",
" - Volume (ton).",
" - KKK median atau rata-rata.",
" - 3M moving average.",
" - Index Jan=100.",
" - Share volume (%) terhadap total pada periode/filter aktif.",
"- Jika tool mendukung, tambahkan aksi drill-through atau navigasi dari tooltip.",
"",
"Drill-through:",
"- Konfigurasi halaman drill-through bernama 'Detail Bulan-Jenis' (atau nama serupa) yang:",
" - Dapat diakses dengan klik kanan/aksi drill-through pada titik data di line chart, bar chart, heatmap, atau tabel.",
" - Menggunakan konteks month, jenis, dan kabupaten (jika relevan) sebagai filter.",
" - Menampilkan:",
" - Tren lokal 6 bulan di sekitar month yang dipilih.",
" - KPI lokal (harga rata-rata, volume, KKK, MoM, indeks lokal).",
" - Tabel transaksi atau agregat rinci untuk kombinasi tersebut.",
" - Panel teks 'Insight Otomatis' (lihat di bawah).",
"",
"Perhitungan metrik:",
"- Harga weighted:",
" avg_harga = sum(harga_idr_per_kg * volume_ton) / sum(volume_ton).",
"- MoM%:",
" MoM%_t = (avg_t - avg_(t-1)) / avg_(t-1).",
"- 3M_MA:",
" rata-rata 3 periode terakhir (rolling).",
"- Index Jan=100:",
" index_t = (avg_t / avg_Jan) * 100.",
"- Volatilitas 2022:",
" - stdev: standar deviasi harga bulanan per jenis.",
" - CoV: stdev / mean.",
"",
"Format dan tema:",
"- Format angka:",
" - Gunakan satuan IDR (Rupiah) dengan pemisah ribuan.",
" - Tampilkan dua angka desimal bila relevan.",
"- Tanggal dan label bulan gunakan lokal Indonesia.",
"- Pilih palet warna yang ramah buta warna; aktifkan mode gelap bila tool mendukung.",
"- Susun layout agar responsif dan nyaman dilihat pada canvas mobile.",
"",
"Halaman 'About Data':",
"- Tambahkan halaman atau tab yang menjelaskan:",
" - Definisi metrik yang digunakan.",
" - Sumber data dan asumsi pengolahan.",
" - Keterbatasan data (jika ada).",
" - Badge atau teks 'Demo data' yang jelas bila data bukan data resmi.",
"",
"Ekspor dan state:",
"- Jika tool mendukung:",
" - Aktifkan ekspor CSV untuk tabel rinci.",
" - Aktifkan ekspor gambar/PNG untuk visual utama.",
" - Gunakan bookmark, parameter, atau fitur share link/URL state agar filter saat ini bisa dibagikan ke pengguna lain.",
"",
"Panel 'Insight Otomatis':",
"- Buat satu visual teks (text box / narrative / smart narrative) berjudul 'Insight Otomatis' yang berisi:",
" - Penjelasan singkat tentang:",
" - Bulan dengan harga tertinggi dan terendah.",
" - Perubahan MoM yang paling besar (positif/negatif).",
" - Perbandingan rata-rata harga antar kabupaten (siapa yang cenderung lebih mahal/murah).",
" - Dampak KKK terhadap harga (misalnya kecenderungan harga lebih tinggi pada KKK di atas ambang tertentu).",
" - Outlier atau anomali data yang perlu ditinjau.",
" - Tulis narasi dalam Bahasa Indonesia, ringkas dan berbasis angka (sebutkan bulan, jenis, kisaran harga, dan % perubahan bila memungkinkan)."
]
},
"insight_generator": {
"label": "Prompt Varian C — Generator Insight Otomatis (ChatGPT/Notebook)",
"intended_tool": "ChatGPT / notebook analisis data",
"prompt": [
"Anda adalah Analis Data. Gunakan dataset harga karet Lampung 2022 dengan kolom minimal:",
"- month",
"- jenis",
"- kabupaten",
"- kkk_percent",
"- harga_idr_per_kg",
"- volume_ton",
"- transaksi",
"",
"Langkah analisis:",
"1) Hitung metrik per kombinasi bulan–jenis–kabupaten (atau agregasi yang tersedia di data):",
" - Harga rata-rata tertimbang (weighted) berdasarkan volume:",
" avg_harga = sum(harga_idr_per_kg * volume_ton) / sum(volume_ton).",
" - KKK median (atau rata-rata jika median tidak mudah dihitung).",
" - MoM% untuk harga:",
" MoM%_t = (avg_t - avg_(t-1)) / avg_(t-1).",
" - 3M moving average (3M MA) untuk harga.",
" - Index Jan=100:",
" index_t = (avg_t / avg_Jan) * 100.",
" - Standar deviasi dan CoV harga per jenis dan kabupaten sepanjang 2022.",
" - Flag outlier berdasarkan z-score harga (|z| > 2).",
"",
"2) Berdasarkan hasil perhitungan, tulis insight dalam Bahasa Indonesia dengan struktur berikut:",
" - Bagian 'Ringkasan Eksekutif':",
" - 5–8 bullet utama yang mencakup:",
" - Bulan dengan harga tertinggi dan terendah, beserta jenis dan kabupaten utama (jika terlihat jelas).",
" - Turning points penting (perubahan tren naik menjadi turun atau sebaliknya).",
" - Jenis karet yang cenderung paling mahal dan paling murah sepanjang tahun.",
" - Kabupaten yang konsisten memiliki harga di atas (premi) atau di bawah (diskon) rata-rata provinsi.",
" - Hubungan KKK dan harga (korelasi positif/negatif, kisaran KKK yang memberi harga terbaik).",
" - Tingkat volatilitas (jenis/kabupaten yang paling fluktuatif).",
" - Outlier atau anomali yang mencolok.",
" - Bagian 'Sorotan Bulanan':",
" - Uraikan secara kronologis (Jan–Des) pola utama:",
" - Lonjakan atau penurunan tajam (MoM) dengan simbol ▲ atau ▼.",
" - Bulan-bulan dengan pergeseran komposisi jenis atau kabupaten dominan, jika terlihat.",
" - Bagian 'Risiko & Rekomendasi':",
" - 1 paragraf (boleh 2 bila perlu) berisi:",
" - Risiko utama yang teridentifikasi (mis. bulan sangat volatil, kabupaten dengan fluktuasi ekstrem, ketergantungan pada jenis tertentu).",
" - Rekomendasi monitoring dan aksi, misalnya:",
" - Bulan atau jenis yang perlu diawasi ketat.",
" - Perlunya verifikasi data pada outlier tertentu.",
" - Saran pemantauan KKK minimum untuk menjaga harga di kisaran tertentu.",
"",
"3) Aturan penulisan:",
" - Gunakan Bahasa Indonesia yang jelas dan ringkas.",
" - Sertakan angka spesifik (nilai harga IDR, persentase, nama bulan) di dalam kalimat bila memungkinkan.",
" - Gunakan simbol ▲/▼ untuk menandai tren naik/turun yang signifikan (misalnya MoM > +5% atau < -5%, atau gunakan ambang yang wajar jika data menunjukkan skala berbeda).",
" - Jika data tidak mencukupi untuk membuat suatu kesimpulan (misalnya hanya 1–2 bulan atau volume sangat kecil), sebutkan secara eksplisit keterbatasan tersebut dan hindari klaim berlebihan.",
"",
"Output akhir:",
"- Tulis hasil dalam tiga blok jelas dengan heading:",
" - 'Ringkasan Eksekutif'",
" - 'Sorotan Bulanan'",
" - 'Risiko & Rekomendasi'",
"- Dalam 'Ringkasan Eksekutif', gunakan bullet point (list) untuk 5–8 poin utama.",
"- Di 'Sorotan Bulanan' dan 'Risiko & Rekomendasi', gunakan paragraf naratif.",
"",
"Instruksi tambahan:",
"- Jika data contoh belum diberikan, jelaskan bahwa analisis bersifat hipotetis dan sebutkan asumsi yang digunakan.",
"- Jika data lengkap tersedia, dasarkan seluruh pernyataan pada hasil perhitungan nyata."
]
}
}
}
```