- Tambah field banjarId (optional) ke GrafikKepuasan + migration - API CRUD banjar baru di /api/desa/banjar/* - Update API grafik_kepuasan: create, find-many (filter by banjar), findUnique, updt - semua include banjar - State: tambah banjarId ke form, banjarList proxy, filter by banjarId - UI list: kolom Banjar di tabel desktop, kartu mobile, Select filter by banjar - UI create/edit: Select banjar (opsional), load banjarList on mount - UI detail: tampilkan field Banjar - Admin banjar: halaman list, create, detail - Sidebar: menu Banjar di domain Desa Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Summary: Banjar Integration untuk Penderita Penyakit (GrafikKepuasan)
Tanggal: 2026-05-30
Branch: tasks/kesehatan/banjar-penderita-penyakit/20260530
Apa yang Dikerjakan
Menambahkan relasi Banjar ke modul Penderita Penyakit (model GrafikKepuasan) secara end-to-end: dari schema database, API, state management, hingga UI admin.
Perubahan per Layer
1. Database — prisma/schema.prisma + Migration
- Tambah field
banjarId String?(optional) ke modelGrafikKepuasan - Tambah relasi ke model
BanjardenganonDelete: SetNull - Migration:
20260530025023_add_banjar_to_grafik_kepuasan
2. API Banjar (baru) — src/app/api/[[...slugs]]/_lib/desa/banjar/
- CRUD lengkap:
create.ts,findMany.ts,findUnique.ts,updt.ts,del.ts,index.ts - Didaftarkan di
src/app/api/[[...slugs]]/_lib/desa/index.ts - Endpoint:
/api/desa/banjar/*
3. API GrafikKepuasan (update)
create.ts— terimabanjarIdopsional, includebanjardi responsefind-many.ts— filter bybanjarIdvia query param, includebanjarfindUnique.ts— includebanjardi responseupdt.ts— terima dan simpanbanjarId, includebanjarindex.ts— daftarkan route yang diperlukan
4. State — grafikKepuasan.ts
- Tambah
banjarIdkedefaultForm, schema Zod,create.form,update.form - Tambah
banjarListproxy: fetch dari/api/desa/banjar/findMany?limit=100 findMany.load()terima parameterbanjarIduntuk filter- Type
findMany.dataupdate ke includebanjar: { id, name }
5. State Banjar (baru) — src/app/admin/(dashboard)/_state/desa/banjar.ts
- Proxy Valtio untuk CRUD Banjar (create, findMany, findUnique, update, delete)
6. Admin UI Banjar (baru) — src/app/admin/(dashboard)/desa/banjar/
page.tsx— tabel list banjar + kartu mobile + paginationcreate/page.tsx— form tambah banjar[id]/page.tsx— detail + hapus + edit
7. Admin UI Penderita Penyakit (update)
page.tsx(list) — tambah kolom Banjar di tabel desktop, field Banjar di kartu mobile, filter Select by banjarcreate/page.tsx— tambahSelectbanjar (opsional), loadbanjarListon mount[id]/page.tsx(detail) — tambah baris Banjar[id]/edit/page.tsx— tambahbanjarIdkeformData, loadbanjarList, tambahSelectbanjar
8. Sidebar Admin — list_PageAdmin.tsx
- Tambah menu "Banjar" di bawah domain Desa
Keputusan Desain
banjarIddibuat opsional agar data lama tidak terpengaruh- Filter banjar di list page menggunakan Select + clear, tidak memerlukan halaman terpisah
banjarListdi-load sekali on mount, bukan di-refetch tiap render
Verifikasi
bun run build✅ sukses tanpa error TypeScript