docs(mind): update plan + tambah summary statistik kesehatan ringkasan

Tandai Step A & B selesai, catat decision log dan pending manual
(bunx prisma migrate deploy + trigger GH workflow).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-04 14:35:42 +08:00
parent 68a2a6390b
commit 9ef5773cc2
2 changed files with 82 additions and 8 deletions

View File

@@ -15,15 +15,30 @@ Tambah ke model `RingkasanKesehatanDesa` (additive, tidak ubah field lama):
| `giziBaikPct` | Int | 0 | Persentase gizi baik (0-100) | | `giziBaikPct` | Int | 0 | Persentase gizi baik (0-100) |
| `targetStuntingPct` | Int | 0 | Persentase target stunting (0-100) | | `targetStuntingPct` | Int | 0 | Persentase target stunting (0-100) |
## Step ## Step A — Schema + API
- [ ] 1. Edit `prisma/schema.prisma` — tambah 4 field - [x] 1. Edit `prisma/schema.prisma` — tambah 4 field
- [ ] 2. Run migration: `bunx prisma migrate dev --name add-statistik-pct-ringkasan-kesehatan` - [x] 2. Buat migration manual `20260504000000_add_statistik_pct_ringkasan_kesehatan/migration.sql` (mode interaktif tidak tersedia di sandbox)
- [ ] 3. Update `kesehatan/ringkasan-kesehatan/findUnique.ts` — select field baru - [x] 3. `findUnique.ts` tidak perlu diubah — `findFirst` tanpa `select` otomatis bawa field baru
- [ ] 4. Update `kesehatan/ringkasan-kesehatan/updt.ts` — tambah validasi Elysia + update logic - [x] 4. `updt.ts` + `index.ts` — handler create/update + Elysia body validation (range 0-100)
- [ ] 5. `bun run build`pastikan 0 error - [x] 5. `bun run build`exit 0
- [ ] 6. Bump version `package.json` - [x] 6. Bump `0.1.48 → 0.1.49`
- [ ] 7. Commit + push branch baru - [x] 7. Commit `feat(kesehatan): tambah 4 field statistik pct...` + push branch `tasks/statistik-kesehatan-ringkasan/add-pct-fields/20260504` + merge ke `stg`
## Step B — State File Admin
- [x] 1. Bikin `_state/kesehatan/ringkasan-kesehatan/ringkasanKesehatan.ts` (Valtio + zod)
- [x] 2. `findUnique.load()` — GET + sync ke form
- [x] 3. `update.submit()` — zod validate (count ≥ 0, Pct 0-100) + PUT + refresh
- [x] 4. `update.reset()`
- [x] 5. `bun run build` — exit 0
- [x] 6. Bump `0.1.49 → 0.1.50`
- [x] 7. Commit + push ke `stg` (2 remote)
## Pending Manual
- [ ] User jalankan `bunx prisma migrate deploy` di terminal lokal — apply 4 kolom baru ke DB
- [ ] Trigger GitHub Workflow (publish + re-pull) bila mau deploy ke STG
## Prinsip ## Prinsip
- Additive only — field lama (`ibuHamilAkh`, `balitaTerdaftar`, `alertStunting`) tidak disentuh - Additive only — field lama (`ibuHamilAkh`, `balitaTerdaftar`, `alertStunting`) tidak disentuh

View File

@@ -0,0 +1,59 @@
# 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]
package.json (0.1.48 → 0.1.50)
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