7.8 KiB
7.8 KiB
INSTRUKSI SYNC FITUR DASHBOARD (Dari Netify ke BackOne)
UNTUK AGENT AI DI REPOSITORI: DPI-Source API BackOne (dev.demoplace.my.id)
Dokumen ini berisi panduan langkah-demi-langkah dan instruksi implementasi untuk menyelaraskan seluruh fitur dashboard, desain mobile, keamanan, dan optimasi performa dari repositori DPI-Source API Netify ke repositori DPI-Source API BackOne.
🚨 ATURAN KRITIS (WAJIB DIPATUHI)
- JANGAN PERNAH MENGGANTI/MENGGANGGU SOURCE API PROXY BACKONE:
- Repositori BackOne menggunakan endpoint custom cloud BackOne (
api0.dev.backone.cloud). Seluruh berkas di bawah folderproxy/bertemabackone*(sepertibackoneClient.js,backoneClientCore.js,backoneClientStats.js,backoneTelemetry.js,backoneAgentFetcher.js) TIDAK BOLEH diganti/diubah menjadinetify*. - Variabel lingkungan di
.env(sepertiBACKONE_TOKEN,BACKONE_DPI_API_KEY,BACKONE_INFORMATICS_BASE_URL) harus tetap dipertahankan. Jangan mengubahnya keNETIFY_*.
- Repositori BackOne menggunakan endpoint custom cloud BackOne (
- JANGAN MENGGANGGU KONFIGURASI INFRASTRUKTUR & PORT:
- Port backend (
3011), port proxy (4010), target database MongoDB (backone_inspect_0), serta allowed origins (dev.demoplace.my.id) di file.envrepositori BackOne TIDAK BOLEH diubah ke konfigurasi produksi Netify.
- Port backend (
- KEPATUHAN BATAS BARIS FILE (RULE 3):
- Setiap file baru atau hasil modifikasi yang Anda buat/sentuh TIDAK BOLEH melebihi 256 baris kode. Jika melebihi batas tersebut, Anda harus memecahnya menjadi file modular yang lebih kecil.
Bagian 1: Daftar Fitur Baru yang Harus Diimplementasikan
1. Dashboard Mobile Modern (App-Native UX)
- Bottom Navigation (5-Tab): Tambahkan menu navigasi melayang di bawah layar mobile dengan tab
Overview,Devices,Flows,Threats, danMenu ☰. - MobileTopBar: Header minimalis di atas layar mobile menampilkan logo instansi, status site, dan bell notifikasi.
- Laci Filter Melayang (Modal Drawer): Pindahkan semua input filter (Universal Filters dan Threat Filters) ke panel modal laci bawah layar smartphone agar tidak memakan ruang konten utama.
- DataTable Mobile Cards: Konversi tampilan tabel data lebar menjadi kartu list vertikal yang rapi di layar mobile.
- Pure CSS/Tailwind Styling: Hapus file
ViewportScaler.tsxsepenuhnya. Semua responsivitas layout harus menggunakan Tailwind CSS murni.
2. Sesi, Otentikasi & Keamanan (Security)
- Lockout Login: Batasi kegagalan login salah password maksimal 3 kali sebelum akun dikunci selama 15 menit, lengkap dengan timer hitung mundur interaktif di login page.
- Unlock Akun Manual: Tambahkan tombol aksi
Unlock 🔓di tabel/user-accountsyang hanya bisa diakses oleh admin/superadmin untuk melepas status lockout secara instan. - Inactivity Timeout (Tab-Aware): Pasang timeout ketidakaktifan pengguna selama 1 jam menggunakan Page Visibility API (resets otomatis jika tab aktif, memberikan warning hanya di 2 menit terakhir).
- Session Cookie: Atur token JWT auth sebagai session cookie saja (tanpa parameter
maxAge) agar langsung terhapus saat tab browser ditutup.
3. Ekspor Laporan PDF (Custom Labeling)
- Integrasi Label Pemilik: Tampilkan label nama pemilik kustom perangkat (Owner / Custom Label) di setiap file PDF ekspor (PDF riwayat MAC Address, PDF detail perangkat, PDF daftar aset, dll).
- Cetak PDF Tambahan: Buat dokumen cetak PDF khusus untuk direktori aset perangkat dan modal riwayat detail MAC perangkat.
4. Mode Impersonasi ("View-As")
- View-As Banner: Tampilkan banner status melayang di bagian atas dashboard saat admin sedang mensimulasikan login sebagai pengguna lain.
- Audit & Isolasi: Amankan kueri backend View-As agar data yang diakses 100% terisolasi sesuai profil target user dan simpan log aktivitasnya ke collection
ViewAsLog.
5. Multi-Tier Role Perusahaan & Kuota
- 3 Tier Role Perusahaan: Implementasikan isolasi peran kueri database untuk
COMPANY_ADMIN,COMPANY_OPERATOR, danCOMPANY_VIEWER. - Kuota Akun: Batasi maksimal 5 akun pengguna per perusahaan lengkap dengan Quota Tracker visual.
Bagian 2: Panduan Sinkronisasi File-by-File
A. Salin/Buat File Baru dari Netify ke BackOne
Berikut adalah file baru di Netify yang harus Anda buat dan tempatkan di lokasi yang sama di folder BackOne:
- Komponen Mobile & Layout:
src/components/layout/MobileBottomBar.tsx(Navigasi bawah mobile)src/components/layout/MobileTopBar.tsx(Header top mobile)src/components/layout/SessionTimeoutModal.tsx(Pop-up timeout aktivitas)src/components/layout/ViewAsBanner.tsx(Banner mode impersonasi)src/components/ui/DataTableDesktopView.tsx(Pecahan tabel desktop untuk Rule 3)src/components/ui/DataTableMobileCards.tsx(Pecahan tabel kartu mobile)
- Ekspor Dokumen PDF:
src/components/admin/DeviceLabelingPdfDocument.tsx(Template cetak PDF direktori aset)src/components/admin/DeviceMacPdfDocument.tsx(Template cetak PDF detail MAC)
- Backend Kueri Labeling Modular (Rule 3):
backend/routes/dashboard/deviceLabeling/getLabeling.js(Mengambil list labeling)backend/routes/dashboard/deviceLabeling/getMacDetails.js(Mengambil detail MAC)backend/routes/dashboard/deviceLabeling/updateLabel.js(Memperbarui label)backend/scripts/seed_device_labels.js(Script generator random seeder)
- Pembantu Kueri Terpisah:
src/app/(dashboard)/flows/flowColumns.tsx(Ekstraksi kolom flow untuk Rule 3)src/lib/actions/agentsMongo.ts(Ekstraksi query database agen untuk Rule 3)
B. Modifikasi / Timpa (Overwrite) File yang Berbeda
Timpa isi kode file berikut di folder BackOne menggunakan kode dari Netify, tetapi pastikan untuk tidak mengubah parameter port/database dev BackOne di konfigurasi lingkungan:
- Gaya CSS & Tata Letak (Hard-Lock Dark Theme & Spacing):
src/app/globals.css,src/app/variables.css(Menghapus selector tema light, hard-lock dark mode)src/app/layout.tsx(Pemasangan Viewport meta murni dan routing modal)src/components/layout/DashboardLayout.tsx(Menghubungkan Bottom Navigation mobile dan Topbar)
- Filter & Pencarian (Drawer Filters):
src/components/ui/UniversalFilters.tsx(Mengubah filter inline menjadi Pop-up Drawer Modal)src/components/threats/ThreatFilters.tsx(Mengubah filter ancaman menjadi Pop-up Modal)
- Komponen Tabel & Halaman:
src/components/ui/DataTable.tsx(Menghubungkan view desktop & mobile cards modular)src/app/(dashboard)/user-accounts/page.tsx&columns.tsx(Menyertakan quota tracker dan tombol Unlock)src/app/(dashboard)/device-labeling/page.tsx(Perbaikan hidrasi React Hooks dan tombol ekspor PDF)src/components/admin/DeviceMacDetailsModal.tsx(Menampilkan asosiasi IP Address, formatting date-time, dan tombol PDF)
- Backend Router & Middleware (RBAC & Keamanan):
backend/routes/dashboard/deviceLabeling.js(Harus diganti menjadi versi modular 24 baris yang mengimpor handler dari subfolderdeviceLabeling/)backend/middleware/auth.js(Sinkronisasi validasi session timeout dan enkripsi role)backend/routes/auth/viewAs.js(Aktivasi pencatatan log impersonasi)src/lib/actions/agents.ts(Sinkronisasi pemanggilanagentsMongo.tsuntuk performa loading cepat)
Bagian 3: Instruksi QA & Uji Integritas Build
Setelah melakukan seluruh pemindahan dan penggabungan kode di atas:
- Jalankan Uji Kompilasi: Jalankan
npm run buildlokal di folder BackOne untuk memverifikasi tidak ada kesalahan tipe TypeScript (0 errors). - Uji Fungsional:
- Buka dashboard di browser, perkecil resolusi layar ke ukuran smartphone, pastikan Bottom Navigation Bar muncul dan form filter berubah menjadi tombol Drawer.
- Uji coba login salah password 3 kali dan pastikan countdown timer berjalan.
- Uji mode View-As dan pastikan banner merah impersonasi muncul di atas layar.