Math.random() bukan CSPRNG sehingga OTP dapat diprediksi. Diganti dengan
crypto.randomInt(1000, 10000) dari Node.js built-in crypto module.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Update grafik-kepuasan.json: tambah banjarId ke setiap item
- Update seed_grafik_kepuasan.ts: upsert banjarId dari JSON
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>
- Tambah model Banjar + relasi ke Posyandu (migration + seeder)
- Update API posyandu (create/update/find) untuk support banjarId
- Tambah endpoint banjar di kesehatan API
- Redesign halaman publik posyandu dengan tabs: ringkasan, data posyandu, balita, ibu hamil
- Update halaman admin posyandu list/create/edit/detail untuk banjar
- Fix image ketukar pada seed tips keamanan
- Hapus seeder core yang sudah tidak dipakai
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tambah fitur Kalender Event Budaya di admin CMS (list, detail, edit, hapus)
- Tambah state Valtio (create, findMany, findUnique, edit, delete, findUpcoming)
- Tambah endpoint API /find-upcoming untuk event mendatang
- Tambah halaman public /darmasaba/desa/event-budaya dengan pagination 5 data/halaman
- Switch public page dari findUpcoming ke findMany agar pagination berjalan
- Tambah menu "Kalender Event Budaya" di navbar (id: 2.9)
- Perluas seeder event budaya: 8 → 34 events mencakup 2025-2026
- Fix: deduplikasi kategoriOptions di kegiatan-desa public page (Mantine Select error)
- Hapus STRUKTUR.md yang sudah tidak relevan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix sintaks _count.select: gabungkan siswa & pengajar dalam satu object select
- Tambah jumlahPengajar per jenjang via reduce _count.pengajar
- Update type PerJenjang di stats.ts & ringkasan-pendidikan.ts
- Tambah tasks ke tasks-sample.csv
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Ganti static dataBeasiswa dengan data live dari ringkasanBeasiswaState.findStats
- Tambah formatDana() untuk konversi angka ke Rb/Jt/M/T
- Tambah tasks ke tasks-sample.csv
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tambah model CctvKeamanan + enum StatusCctv ke prisma schema
- Tambah status Baru ke enum StatusLaporan
- Migration: add_cctv_keamanan_model
- API CRUD + stats endpoint di /api/keamanan/cctv/...
- Admin state (valtio proxy) dengan create/findMany/edit/delete/stats
- Admin pages: list, create, detail (peta Leaflet), edit (peta picker)
- Seeder 8 data CCTV lokasi Darmasaba
- Tambah submenu CCTV di sidebar nav keamanan
- Bump version 0.1.57 → 0.1.58
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tambah tab "Konfigurasi Beasiswa" di layoutTabs beasiswa-desa
- Buat halaman beasiswa-config/page.tsx dengan stats card (penerima,
dana, tahun ajaran) + form edit tahunAjaran & danaTersalurkan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Elysia tidak bisa serialize BigInt ke JSON — ubah return type danaTersalurkan
dari bigint ke string dengan .toString() di beasiswaRingkasanStats.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- API GET /api/pendidikan/ringkasan/stats: siswa per jenjang, jumlah lembaga & pengajar
- API GET /api/pendidikan/beasiswa/ringkasan/stats: jumlah penerima, dana, tahun ajaran
- Schema + migration: model EventBudaya (nama, tanggal, lokasi, deskripsi)
- API CRUD /api/desa/eventbudaya: create, find-many, findUnique, updt, del
- State admin: eventBudaya.ts (valtio proxy, create/findMany/edit/delete)
- Admin CMS: /admin/desa/event-budaya (list, create, edit)
- Navbar: tambah entry Desa_9 Event Budaya di semua role
- Seeder: 8 event budaya Bali untuk Desa Darmasaba
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>