# prd-admin.md — Dashboard Admin Aplikasi Monitoring & Asisten Budidaya Cabai Rawit

> Dokumen ini merupakan turunan dari `prd.md` (bagian utama aplikasi petani), khusus membahas **Dashboard Admin**. Referensi awal ada pada section 27 dan 44 PRD utama.

---

## 1. Overview

Dashboard Admin adalah aplikasi **web terpisah** dari aplikasi mobile petani, digunakan oleh tim internal untuk memantau dan memoderasi aktivitas pengguna dan komunitas.

Dashboard Admin **bukan** merupakan bagian dari bottom navigation aplikasi petani, dan **tidak dapat diakses oleh petani**.

Versi pertama Dashboard Admin berfokus pada empat area:

1. Dashboard Overview (Beranda Admin)
2. Manajemen Akun Pengguna
3. Moderasi Komunitas
4. Manajemen Konten Referensi

---

## 2. Tujuan Desain

Dashboard Admin harus memungkinkan tim internal untuk:

* Memantau pertumbuhan dan aktivitas pengguna secara umum.
* Melihat daftar dan detail akun petani.
* Menonaktifkan/memblokir akun yang melanggar.
* Memantau seluruh posting dan komentar komunitas.
* Menghapus konten komunitas yang melanggar.
* Melihat jejak (log) atas tindakan moderasi yang dilakukan.
* Mengelola konten Buku Panduan Petani.
* Mengelola daftar sumber jurnal ilmiah yang dijadikan basis pengetahuan AI.

Dashboard Admin **tidak** dirancang untuk:

* Mengakses data HPP/finansial pribadi petani.
* Mengakses isi riwayat konsultasi AI milik petani secara personal.
* Mengatur role/hak akses admin lain (asumsi versi pertama: satu jenis akun admin dengan akses penuh).

---

## 3. Struktur Navigasi

```text
┌──────────────────────────────────────────────────────────┐
│                                                            │
│                     CONTENT AREA                          │
│                                                            │
├──────────────┬──────────────┬─────────────────┬───────────┤
│  Dashboard   │  Pengguna    │   Komunitas     │ Referensi │
└──────────────┴──────────────┴─────────────────┴───────────┘
```

---

## 4. Arsitektur Halaman

```text
ADMIN DASHBOARD
│
├── Dashboard Overview
│   ├── Total Pengguna
│   ├── Pengguna Aktif (harian/mingguan/bulanan)
│   ├── Total Lahan
│   ├── Total Posting Komunitas
│   └── Grafik Pertumbuhan Pengguna
│
├── Manajemen Akun Pengguna
│   ├── Daftar Pengguna
│   ├── Pencarian & Filter
│   ├── Detail Pengguna
│   └── Aksi (Suspend/Blokir/Aktifkan Kembali)
│
├── Moderasi Komunitas
│   ├── Daftar Posting
│   ├── Daftar Komentar
│   ├── Statistik Interaksi (Like/Komentar)
│   ├── Aksi Hapus Konten
│   └── Log Moderasi
│
└── Manajemen Konten Referensi
    ├── Buku Panduan Petani
    └── Sumber Jurnal Ilmiah
```

---

## 5. Dashboard Overview

### 5.1 Tujuan

Memberikan gambaran cepat kondisi aplikasi secara keseluruhan bagi tim internal.

### 5.2 Komponen

**Kartu Ringkasan**

```text
┌─────────────────┐  ┌─────────────────┐
│ Total Pengguna  │  │ Pengguna Aktif  │
│     1.240        │  │      312        │
└─────────────────┘  └─────────────────┘

┌─────────────────┐  ┌─────────────────┐
│ Total Lahan     │  │ Total Posting   │
│     1.890        │  │      540        │
└─────────────────┘  └─────────────────┘
```

**Filter Pengguna Aktif**

```text
○ Harian
○ Mingguan
○ Bulanan
```

**Grafik Pertumbuhan Pengguna**

```text
Jumlah Pengguna Baru per Bulan

  ▂▃▅▆█▇▅▆▇█
  Jan ... Agu
```

---

## 6. Manajemen Akun Pengguna

### 6.1 Tujuan

Memungkinkan admin memantau dan mengelola status akun petani.

### 6.2 Daftar Pengguna

```text
┌──────────────────────────────────────────────────┐
│ Nama    │ Email          │ No. HP   │ Lahan │ Status │
├──────────────────────────────────────────────────┤
│ Aidil   │ aidil@mail.com │ 08xxxxx  │  2    │ Aktif  │
│ Rina    │ rina@mail.com  │ 08xxxxx  │  1    │ Aktif  │
│ Budi    │ budi@mail.com  │ 08xxxxx  │  3    │ Blokir │
└──────────────────────────────────────────────────┘
```

### 6.3 Pencarian & Filter

```text
[ Cari nama / email / no. HP ]

Filter Status:
○ Semua
○ Aktif
○ Nonaktif
○ Diblokir
```

### 6.4 Detail Pengguna

Ketika admin membuka satu pengguna:

```text
        [ Foto ]

        Aidil
        aidil@mail.com
        08xxxxxxxxxx

Jumlah Lahan: 2
Tanggal Daftar: 12 Januari 2026
Status: Aktif

[ Suspend Akun ]   [ Blokir Akun ]
```

Data yang ditampilkan mengacu pada **User Entity** di `prd.md` section 46:

```text
id
name
email
phone
address
profile_photo
created_at
updated_at
```

> Catatan: Detail HPP, jadwal, dan riwayat AI milik pengguna **tidak ditampilkan** di dashboard admin, karena bersifat data pribadi pengguna dan tidak masuk cakupan aturan admin di `prd.md` section 44.

### 6.5 Aksi Admin

```text
Aktif → Suspend → Nonaktif sementara
Aktif → Blokir  → Nonaktif permanen
Blokir/Nonaktif → Aktifkan Kembali
```

Setiap aksi harus meminta konfirmasi terlebih dahulu (selaras dengan prinsip UX section 51 poin 8 di PRD utama).

```text
Yakin ingin memblokir akun "Aidil"?

[ Batal ]   [ Ya, Blokir ]
```

---

## 7. Moderasi Komunitas

### 7.1 Tujuan

Memungkinkan admin memantau dan menghapus konten komunitas yang melanggar, sesuai `prd.md` section 27.

### 7.2 Daftar Posting

```text
┌────────────────────────────────────────────┐
│ 👤 Aidil                        28 Agu 2026 │
│ Daun cabai saya mulai berubah warna...      │
│ [Foto tanaman]                              │
│ ♡ 12   💬 5                                  │
│                          [ Lihat ]  [ Hapus ]│
└────────────────────────────────────────────┘
```

### 7.3 Daftar Komentar

```text
┌────────────────────────────────────────────┐
│ 👤 Rina pada posting "Daun cabai..."        │
│ "Coba cek bagian bawah daun"                │
│ 28 Agu 2026                                 │
│                                    [ Hapus ]│
└────────────────────────────────────────────┘
```

### 7.4 Statistik Interaksi

Ditampilkan per posting:

```text
Total Like: 12
Total Komentar: 5
```

### 7.5 Aksi Hapus Konten

Setiap penghapusan posting/komentar memerlukan konfirmasi:

```text
Yakin ingin menghapus posting ini?
Tindakan ini tidak dapat dibatalkan.

[ Batal ]   [ Ya, Hapus ]
```

### 7.6 Log Moderasi

Setiap tindakan hapus dicatat sebagai jejak audit:

```text
28 Agustus 2026, 14:30
Admin: admin01
Aksi: Hapus Posting
Target: Post #1023 milik "Aidil"
```

Log ini bersifat **wajib dicatat otomatis**, bukan fitur pengaturan terpisah — sehingga tetap tersedia meskipun tidak ada manajemen role admin di versi pertama.

---

## 8. Manajemen Konten Referensi

### 8.1 Tujuan

Mengelola sumber pengetahuan yang digunakan AI Assistant maupun petani sebagai referensi, sesuai `prd.md` section 30 (Buku Panduan) dan section 37–39 (Sumber Pengetahuan AI).

### 8.2 Buku Panduan Petani

Admin dapat mengelola konten yang tampil pada menu **Buku Panduan Petani** di aplikasi petani (`prd.md` section 30).

```text
┌────────────────────────────────────────┐
│ Judul: Cara Mengatasi Kutu Daun         │
│ Kategori: Hama                          │
│ Terakhir diubah: 20 Agu 2026            │
│                     [ Edit ]  [ Hapus ] │
└────────────────────────────────────────┘

[ + Tambah Konten Baru ]
```

Form tambah/edit konten:

```text
Judul
[ Cara Mengatasi Kutu Daun ]

Kategori
[ Hama ▾ ]

Isi Konten
[ ................................. ]

[ Simpan ]
```

### 8.3 Sumber Jurnal Ilmiah

Admin mengelola daftar jurnal ilmiah pertanian yang menjadi **sumber utama** basis pengetahuan AI (`prd.md` section 37.1).

```text
┌────────────────────────────────────────┐
│ Judul Jurnal: Pengendalian Hama Terpadu │
│               pada Cabai Rawit          │
│ Sumber: Jurnal Agronomi Indonesia       │
│ Tahun: 2023                             │
│ Topik: Hama                             │
│                     [ Edit ]  [ Hapus ] │
└────────────────────────────────────────┘

[ + Tambah Sumber Jurnal ]
```

Form tambah/edit sumber jurnal:

```text
Judul Jurnal
[ ................................. ]

Sumber/Penerbit
[ ................................. ]

Tahun Terbit
[ 2023 ]

Topik
[ Hama ▾ ]  (Hama / Penyakit / Pemupukan / Perawatan / Metode Tanam)

Tautan/Referensi
[ ................................. ]

[ Simpan ]
```

---

## 9. Entitas Tambahan untuk Admin

### 9.1 Admin Entity

```text
id
username
email
password_hash
created_at
updated_at
```

> Versi pertama: hanya satu jenis akun admin, tanpa role/permission berjenjang.

### 9.2 User Status (tambahan pada User Entity di prd.md)

```text
status   -- 'active' | 'suspended' | 'blocked'
```

### 9.3 Moderation Log Entity

```text
id
admin_id
action_type   -- 'delete_post' | 'delete_comment' | 'suspend_user' | 'block_user' | 'reactivate_user'
target_type   -- 'post' | 'comment' | 'user'
target_id
created_at
```

### 9.4 Guide Content Entity (Buku Panduan)

```text
id
title
category
content
created_by
created_at
updated_at
```

### 9.5 Journal Source Entity (Sumber Jurnal Ilmiah)

```text
id
title
publisher
year
topic
reference_link
created_by
created_at
updated_at
```

---

## 10. Aturan Penting Dashboard Admin

| Fitur                              | Aturan                                          |
| ----------------------------------- | ------------------------------------------------ |
| Akses Dashboard                     | Hanya admin, tidak dapat diakses petani          |
| Data HPP petani                     | Tidak dapat diakses admin                        |
| Riwayat AI petani                   | Tidak dapat diakses admin                        |
| Manajemen akun                      | Suspend, blokir, aktifkan kembali                |
| Hapus posting/komentar              | Wajib konfirmasi sebelum hapus                   |
| Log moderasi                        | Wajib tercatat otomatis, tidak dapat dihapus     |
| Buku Panduan Petani                 | Dapat dikelola (CRUD) oleh admin                 |
| Sumber Jurnal Ilmiah                | Dapat dikelola (CRUD) oleh admin                 |
| Role/permission admin berjenjang    | Tidak didukung di versi pertama                  |
| Statistik AI/HPP agregat            | Tidak termasuk versi pertama                     |
| Push notification untuk admin       | Tidak didukung                                   |

---

## 11. Batasan Versi Pertama

Tidak termasuk dalam versi pertama Dashboard Admin:

* Manajemen role/hak akses admin berjenjang.
* Statistik penggunaan AI (jumlah chat, jenis masalah, dsb).
* Statistik HPP/lahan agregat.
* Fitur laporan (report) konten dari pengguna ke admin — moderasi dilakukan murni oleh admin secara manual.
* Akses admin terhadap data finansial (HPP) atau riwayat AI milik petani.
* Notifikasi otomatis ke admin atas konten baru.
* Pengelolaan data pengalaman petani tervalidasi melalui dashboard admin — proses validasi data wawancara (`prd.md` section 38) dilakukan di luar dashboard admin versi pertama.

---

## 12. Definition of Done — Dashboard Admin

### Dashboard Overview
- [ ] Menampilkan total pengguna.
- [ ] Menampilkan pengguna aktif (harian/mingguan/bulanan).
- [ ] Menampilkan total lahan.
- [ ] Menampilkan total posting komunitas.
- [ ] Menampilkan grafik pertumbuhan pengguna.

### Manajemen Akun Pengguna
- [ ] Daftar pengguna dapat dilihat.
- [ ] Pencarian & filter pengguna berfungsi.
- [ ] Detail pengguna dapat dibuka.
- [ ] Admin dapat suspend akun.
- [ ] Admin dapat blokir akun.
- [ ] Admin dapat mengaktifkan kembali akun.
- [ ] Setiap aksi meminta konfirmasi.

### Moderasi Komunitas
- [ ] Daftar posting dapat dilihat.
- [ ] Daftar komentar dapat dilihat.
- [ ] Admin dapat menghapus posting.
- [ ] Admin dapat menghapus komentar.
- [ ] Statistik like/komentar ditampilkan per posting.
- [ ] Setiap penghapusan meminta konfirmasi.
- [ ] Log moderasi tercatat otomatis dan tidak dapat dihapus.

### Manajemen Konten Referensi
- [ ] Admin dapat menambah/mengedit/menghapus konten Buku Panduan.
- [ ] Admin dapat menambah/mengedit/menghapus sumber jurnal ilmiah.

---

## 13. Ringkasan Arsitektur Dashboard Admin

```text
                    ┌──────────────────┐
                    │   ADMIN (WEB)    │
                    └────────┬─────────┘
                             │
                    ┌────────▼─────────┐
                    │  ADMIN DASHBOARD │
                    └────────┬─────────┘
                             │
        ┌────────────────────┼─────────────────────┬─────────────────┐
        │                    │                     │                 │
 ┌──────▼──────┐     ┌───────▼───────┐     ┌───────▼───────┐  ┌──────▼──────┐
 │  OVERVIEW   │     │   PENGGUNA    │     │   KOMUNITAS   │  │  REFERENSI  │
 └──────┬──────┘     └───────┬───────┘     └───────┬───────┘  └──────┬──────┘
        │                    │                     │                 │
        └────────────────────┴─────────┬───────────┴─────────────────┘
                                        │
                               ┌────────▼─────────┐
                               │     BACKEND      │
                               └────────┬─────────┘
                                        │
                    ┌─────────────────────┼─────────────────────┐
                    │                     │                     │
             ┌──────▼──────┐      ┌───────▼───────┐     ┌───────▼───────┐
             │  DATABASE   │      │ MODERATION LOG│     │ AI KNOWLEDGE  │
             └─────────────┘      └───────────────┘     │     BASE      │
                                                          └───────────────┘
```

**Inti desain:** Dashboard Admin berfokus pada **monitoring pengguna + moderasi komunitas + pengelolaan basis pengetahuan AI**, dengan akses terbatas yang tidak menyentuh data pribadi/finansial petani (HPP, riwayat AI personal), selaras dengan prinsip privasi yang sudah ditetapkan di `prd.md`.
