Files
desa-darmasaba/MIND/SUMMARY/statistik-kesehatan-ringkasan-summary.md
nico fc6846f7a1 feat(kesehatan): admin page ringkasan-kesehatan + sidebar entry - bump ke 0.1.51
- New page src/app/admin/(dashboard)/kesehatan/ringkasan-kesehatan/page.tsx
  konsumsi ringkasanKesehatanState (load + submit) dengan 7 NumberInput
  (3 count + 4 pct).
- Tambah Kesehatan_8 "Ringkasan Kesehatan" di 3 instance sidebar
  (list_PageAdmin.tsx).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 15:20:39 +08:00

3.1 KiB
Raw Blame History

Summary: Statistik Persentase Kesehatan di RingkasanKesehatanDesa

Konteks

Dashboard admin punya 4 progress bar (Imunisasi Lengkap, Pemeriksaan Rutin, Gizi Baik, Target Stunting) yang sebelumnya belum ada backend-nya. Schema RingkasanKesehatanDesa hanya menyimpan 3 field count (ibuHamilAkh, balitaTerdaftar, alertStunting).

Yang Dikerjakan

Step A — Schema + API (v0.1.49)

  1. Schema — tambah 4 field Int @default(0) di RingkasanKesehatanDesa: imunisasiLengkapPct, pemeriksaanRutinPct, giziBaikPct, targetStuntingPct.
  2. Migration — buat manual SQL di prisma/migrations/20260504000000_add_statistik_pct_ringkasan_kesehatan/migration.sql (sandbox non-interaktif, jadi migrate dev di-bypass dengan SQL langsung).
  3. API
    • kesehatan/ringkasan-kesehatan/updt.ts — handler create + update terima 4 field baru.
    • kesehatan/ringkasan-kesehatan/index.ts — Elysia body validation t.Number({ minimum: 0, maximum: 100 }).
    • findUnique.ts tidak perlu diubah — findFirst tanpa select otomatis bawa field baru.
  4. Build clean, push ke 2 remote (bipprojectbali + nicoarya20), merge ke stg.

Step B — State Admin (v0.1.50)

  • File baru _state/kesehatan/ringkasan-kesehatan/ringkasanKesehatan.ts (Valtio proxy):
    • findUnique.load() — GET /api/kesehatan/ringkasankesehatan/find, isi data + sync ke update.form.
    • update.submit() — zod validate (count ≥ 0, Pct 0-100) → PUT /api/kesehatan/ringkasankesehatan/update → refresh.
    • update.reset() — reset form ke default.

Decision Log

  • Gabung ke RingkasanKesehatanDesa (bukan model baru StatistikKesehatan) alasan: domain sama (ringkasan kesehatan desa), pattern existing single-row config cocok, single fetch untuk dashboard, migration ringan additive.
  • Tipe Int (0100) — UI render integer %, tidak butuh desimal.
  • Suffix Pct — eksplisit semantik persentase (count vs persentase di model yang sama).
  • Field lama tidak disentuh — additive only, sesuai AI-CONTRACT §10.

Pending Manual

  • Jalankan bunx prisma migrate deploy di terminal lokal → apply kolom baru ke DB.
  • Trigger GitHub Workflow (publish + re-pull) bila mau deploy STG.

Affected Files

prisma/schema.prisma
prisma/migrations/20260504000000_add_statistik_pct_ringkasan_kesehatan/migration.sql  [NEW]
src/app/api/[[...slugs]]/_lib/kesehatan/ringkasan-kesehatan/updt.ts
src/app/api/[[...slugs]]/_lib/kesehatan/ringkasan-kesehatan/index.ts
src/app/admin/(dashboard)/_state/kesehatan/ringkasan-kesehatan/ringkasanKesehatan.ts  [NEW]
src/app/admin/(dashboard)/kesehatan/ringkasan-kesehatan/page.tsx  [NEW]
src/app/admin/_com/list_PageAdmin.tsx  (3 sidebar instances → tambah Kesehatan_8)
package.json (0.1.48 → 0.1.51)
MIND/PLAN/task-statistik-kesehatan-ringkasan.md  [NEW]

Commits

  • ba2b90be feat(kesehatan): tambah 4 field statistik pct ke RingkasanKesehatanDesa - bump ke 0.1.49
  • 68a2a639 feat(kesehatan): tambah state file ringkasanKesehatan + bump ke 0.1.50
  • (next) feat(kesehatan): admin page ringkasan-kesehatan + sidebar entry - bump ke 0.1.51