1. Ringkasan Program & Fitur
Ikhtisar Fitur & Pemetaan Utama
Halaman ini mendokumentasikan pemetaan arsitektural secara rinci dari sistem SRM Command Center. Informasi di bawah ini mencakup struktur direktori kode frontend (React), backend core (Laravel), microservice kecerdasan buatan (Python FastAPI), serta struktur relasional database yang menyimpan data operasional PT Freeport Indonesia.
Semua bagian dokumentasi ini dirancang menggunakan dua bahasa (Indonesia & Inggris) untuk mempermudah pemahaman tim development, administrator, maupun peninjau dari pihak departemen Security Risk Management (SRM).
2. Arsitektur Frontend (React + Inertia.js)
Arsitektur Frontend
Antarmuka pengguna (user interface) dibangun menggunakan framework React yang diintegrasikan dengan Laravel melalui Inertia.js. Seluruh asset frontend terletak di bawah direktori resources/js/.
Letak Kode Frontend Utama
- Entri Aplikasi:
resources/js/app.jsx(Inisiasi bindings Inertia dan memuat CSS global). - Layout Template:
resources/js/Layouts/DashboardLayout.jsx(Pembungkus dashboard utama, navigasi sidebar, topbar, dan banner peringatan darurat). - Tampilan Halaman (Pages):
resources/js/Pages/(Komponen view React yang di-render oleh controller Laravel melalui router Inertia). - Komponen UI:
resources/js/Components/(Tombol, kartu visual, badge status, form pencarian modular, dan widget peta).
Pustaka Styling & Dependency
Desain visual menggunakan **Tailwind CSS** untuk mempercepat rendering dan fleksibilitas tata letak responsive.
// resources/css/app.css
@tailwind base;
@tailwind components;
@tailwind utilities;
// Mengimpor font Outfit & Inter sebagai font default
3. Arsitektur Backend (Laravel 11.x Core)
Backend Core Architecture
Pusat pemrosesan data, autentikasi sesi, enforcer peran RBAC, dan integrasi API dikendalikan penuh oleh **Laravel 11**. Struktur backend inti berada di bawah direktori app/.
• Controller Layer (Logika Permintaan)
Terletak di app/Http/Controllers/:
- Auth/LoginController.php (Sesi login)
- DashboardController.php (Metrik dashboard)
- EmergencyController.php (Kontak & Sinyal darurat)
- AorController.php (Data area & peta)
- DocumentController.php (Manajemen dokumen SOP)
• Models & ORM Layer (Skema Database)
Terletak di app/Models/:
- User.php & Role.php (Kredensial & Peran)
- Area.php & AorGroup.php (Pembagian wilayah)
- EmergencyContact.php (Kontak penting)
- FieldReport.php & NewsPost.php (Pelaporan & Berita)
- Document.php & ArchiveItem.php (Pustaka & Arsip)
Middleware Perlindungan Keamanan (RBAC)
Perlindungan hak akses berbasis peran (RBAC - 7 Peran) diatur di sisi server menggunakan middleware kustom RoleMiddleware.php dan dipetakan di file rute routes/web.php.
// routes/web.php
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::post('/emergency/alert', [EmergencyController::class, 'toggleAlert'])
->middleware('role:soc_admin,srm_manager');
});
4. Layanan Rekomendasi NLP (FastAPI)
AI NLP Recommendation Service
Pustaka dokumen SOP dilengkapi dengan kecerdasan buatan berupa pencarian pintar dan kemiripan dokumen. Layanan ini dibangun terpisah menggunakan microservice Python FastAPI yang berjalan secara lokal pada Port 8000.
Komponen & Cara Kerja Layanan
- Letak Direktori: Folder
/recommendation_servicepada root project. - main.py: Endpoint API FastAPI (
/recommend,/documents/similar,/reindex). - recommendation_engine.py: Logika TF-IDF Vectorizer dan perhitungan Cosine Similarity (Scikit-Learn).
- Pickle Serialization (.pkl): Model hasil training diekspor ke file Pickle agar dapat dimuat secara instan oleh FastAPI.
- Fallback Mekanisme: Jika FastAPI offline, Laravel mengalihkan pemrosesan pencarian dokumen ke pencarian SQL standard (
LIKE %query%).
5. Skema Struktur Database (MySQL)
Skema Relasional Database (19 Tabel)
Aplikasi SRM Command Center menggunakan database relasional MySQL 8 dengan total 19 tabel utama. Berikut adalah pemetaan detail fungsi dari kesembilan belas tabel tersebut:
| Kelompok Data | Nama Tabel | Deskripsi Fungsi Tabel |
|---|---|---|
| Autentikasi & RBAC (5 Tabel) |
users | Kredensial identitas personil SRM (email, password hash). |
| roles | Nama dari 7 peran default (Super Admin, SRM Manager, SOC Admin, dsb). | |
| permissions | Daftar tindakan administratif sistem (upload_docs, approve_reports). | |
| role_user | Pivot relasi Many-to-Many user ke role. | |
| permission_role | Pivot relasi Many-to-Many role ke permission. | |
| Wilayah & Kontak (3 Tabel) |
aor_groups | Divisi wilayah kerja utama (Highland Group vs Lowland Group). |
| areas | Detail spasial wilayah area tugas, dari AOR 1 s.d AOR 6. | |
| emergency_contacts | Daftar nomor kontak darurat prioritas yang disaring per area. | |
| Berita & Laporan (3 Tabel) |
news_posts | Berita internal, rilis pengumuman keamanan pos, dan berita terpublikasi. |
| field_reports | Laporan insiden lapangan beserta berkas lampiran foto. | |
| approval_logs | Riwayat persetujuan status peninjauan (approved/rejected) draf oleh SOC Admin. | |
| Pustaka & AI (7 Tabel) |
documents | Pustaka dokumen SOP dengan Tingkat Izin Akses (Clearance Level). |
| document_categories | Kategori klasifikasi dokumen panduan (Bencana, Sabotase, Medis). | |
| document_tags | Tag kata kunci risiko pencarian NLP (strike, landslide, theft). | |
| document_tag | Pivot relasi tag ke dokumen SOP. | |
| recommendation_logs | Log pencatatan query pencarian NLP yang dikirimkan pengguna. | |
| recommendation_feedback | Rating umpan balik kegunaan rekomendasi (helpful/unhelpful). | |
| archive_items | Arsip kejadian masa lalu dan galeri sejarah AOR. | |
| Sistem Audit (1 Tabel) |
activity_logs | Log audit detail merekam login, logout, dan perubahan data penting. |
6. Pemetaan Halaman & Akses Rute
Pemetaan Rute Utama & Halaman Aplikasi
Aplikasi SRM Command Center membagi antarmukanya ke dalam dua tipe akses utama: halaman publik tanpa autentikasi (Landing Page) dan halaman operasional internal terproteksi (Dashboard & Modules).
Landing Page Tamu
- Jalur URL:
/ - Komponen:
resources/js/Pages/Welcome.jsx(atauPages/Home/Index.jsx)
Halaman statis sambutan yang ditujukan untuk publik. Halaman ini menjelaskan sekilas tentang peran tim Security Risk Management PT Freeport Indonesia, info kontak darurat umum, serta menyediakan tombol langsung menuju form masuk sistem.
Halaman Autentikasi (Login Page)
- Jalur URL:
/login - Komponen:
resources/js/Pages/Auth/Login.jsx
Form masuk sistem dengan validasi email dan sandi keamanan. Setelah proses autentikasi selesai, sistem akan mengalihkan pengguna ke Dashboard Operasional sesuai dengan peran (role).
Dashboard Utama
- Jalur URL:
/dashboard - Komponen:
resources/js/Pages/Dashboard.jsx - Controller:
DashboardController.php
Hub informasi utama bagi personil SRM. Memuat widgets pemetaan pos aktif, cuaca sektoral, status penugasan pengamanan, antrean dokumen yang memerlukan approval, serta kontrol pemilih wilayah kerja Highland vs Lowland.
Pusat Darurat (Emergency Hub)
- Jalur URL:
/emergency - Komponen:
resources/js/Pages/Emergency/Index.jsx
Menampilkan direktori nomor telepon penting dan koordinasi darurat per divisi AOR. Bagi admin dengan peran SOC Admin, panel ini menyediakan alat deklarasi bahaya untuk menyiarkan banner peringatan darurat ke seluruh halaman aplikasi.
Manajemen Area Geografis (AOR Detail)
- Jalur URL:
/aor/{id} - Komponen:
resources/js/Pages/Aor/Show.jsx - Peta Widget:
resources/js/Components/AorMap.jsx
Halaman khusus untuk melihat peta wilayah tugas AOR, memantau daftar supervisor pos pengamanan aktif, serta melacak timeline kejadian/insiden yang dikirimkan khusus dari wilayah AOR tersebut.