SRM Command Center Portal Dokumentasi / Documentation Portal

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_service pada 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).

Akses Publik

Landing Page Tamu

  • Jalur URL: /
  • Komponen: resources/js/Pages/Welcome.jsx (atau Pages/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.

Akses Publik

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).

Terproteksi

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.

Terproteksi

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.

Terproteksi

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.