2.5 KiB
2.5 KiB
Iteration Log: Device Labeling Details Modal & Relational IP History
- Iterasi:
n(Implementing device detail popup, IP history resolver, and database indexing) - Tanggal: 2026-07-28 14:45
Yang Diminta
- Terapkan hasil brainstorming tentang pop-up pendetailan MAC address di mana semua IP address yang pernah terikat oleh MAC address tersebut ditampilkan beserta status aktivitas dan pemakaian datanya.
Langkah yang Diambil
- Backend - Database Indexing (
Schemas.js):- Menambahkan index
truepada propertisrc_macdiFlowSchema. - Menambahkan compound index
{ site_uuid: 1, src_mac: 1, timestamp: -1 }padaFlowSchemaagar agregasi pencarian data flow berdasarkan MAC Address di MongoDB berjalan sangat cepat dan efisien.
- Menambahkan index
- Backend - Details API Endpoint (
deviceLabeling.js):- Menambahkan route
GET /api/dashboard/devices/mac-detailsyang menerima parametermac. - Menggunakan pipeline agregasi untuk menyaring semua IP Address unik (
src_ip) di koleksiFlowyang digunakan oleh MAC tersebut. - Mengambil data pemakaian bandwidth (Upload/Download), hitungan flow total, serta tanggal pertama/terakhir aktif (First/Last Seen) untuk masing-masing IP.
- Mengambil profil identitas perangkat pendukung dari koleksi
DeviceStatberdasarkan MAC Address.
- Menambahkan route
- Frontend - Details Popup Modal (
DeviceMacDetailsModal.tsx):- Merancang modal detail khusus untuk menampilkan profile hardware perangkat dan tabel riwayat IP Address terikat.
- Menyajikan tabel berisikan kolom: IP Address, First Seen, Last Seen (dengan stempel zona waktu WIB), pemakaian bandwidth (Upload / Download diformat menggunakan fungsi pembantu
fmtBytes), dan total flow yang tercatat.
- Frontend - Table Integration & Click Handler (
page.tsx,columns.tsx,EditOwnerModal.tsx):- Mengubah kolom MAC Address di tabel direktori perangkat agar berupa tombol clickable. Ketika diklik, akan memicu pemanggilan API details dan membuka
DeviceMacDetailsModal. - Melakukan refaktor/pemisahan pada
src/app/(dashboard)/device-labeling/page.tsxyang sebelumnya berukuran 324 baris. Memisahkannya menjadicolumns.tsxdanEditOwnerModal.tsxguna memenuhi kepatuhan ketat batas maksimal 256 baris file repositori. Hasilnya, filepage.tsxmenyusut menjadi hanya 142 baris.
- Mengubah kolom MAC Address di tabel direktori perangkat agar berupa tombol clickable. Ketika diklik, akan memicu pemanggilan API details dan membuka
Hasil & Status Codebase saat Ini
- Next.js production build terbukti kompilasi sukses tanpa kesalahan TypeScript.
- Halaman
/device-labelingkini memiliki integrasi pop-up detail yang sangat informatif dan memecahkan relasi rumit MAC-to-IP secara real-time.