feat(keamanan): tambah modul CCTV — schema, API, admin UI, seeder

- 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>
This commit is contained in:
2026-05-06 16:40:31 +08:00
parent 60841039dd
commit 936dd14ca9
20 changed files with 1398 additions and 1 deletions

View File

@@ -0,0 +1,35 @@
import prisma from "@/lib/prisma";
import { loadJsonData } from "../../load-json";
const cctvData = loadJsonData("keamanan/cctv/cctv.json");
export async function seedCctv() {
console.log("🔄 Seeding CCTV Keamanan...");
for (const c of cctvData) {
await prisma.cctvKeamanan.upsert({
where: { id: c.id },
update: {
kode: c.kode,
nama: c.nama,
lokasi: c.lokasi,
latitude: c.latitude ?? null,
longitude: c.longitude ?? null,
status: c.status,
lastActive: new Date(c.lastActive),
},
create: {
id: c.id,
kode: c.kode,
nama: c.nama,
lokasi: c.lokasi,
latitude: c.latitude ?? null,
longitude: c.longitude ?? null,
status: c.status,
lastActive: new Date(c.lastActive),
},
});
}
console.log(`✅ CCTV Keamanan seeded: ${cctvData.length} data`);
}