Mx
Published on

Blueprint Pengembangan Software Industri - Mx-Core-rbm

Authors

Blueprint Pengembangan Software Industri: Mx-Core-rbm



🧩 1. Business Requirement Specification (BRS)


  • 📘 Judul Proyek

Modul Plugin mx-core-rbm untuk Strategi Risk-Based Maintenance Industri


📖 Latar Belakang Masalah

Sebelum menerapkan pendekatan Risk-Based Maintenance (RBM), strategi pemeliharaan aset di PT PON menggunakan metode yang seragam untuk semua aset, termasuk pemeliharaan berbasis waktu (TBM – Time-Based Maintenance) tanpa mempertimbangkan tingkat kritikalitas dan risiko kegagalan dari masing-masing aset.

Pendekatan tersebut menyebabkan:

  • Penggunaan resources yang tinggi (tenaga kerja, waktu, biaya)
  • Masih sering terjadi gangguan unplanned dan emergency
  • Efektivitas perawatan rendah karena pemeliharaan dilakukan sama rata, bukan berdasarkan dampak potensial kegagalan

Setelah diterapkan RBM:

  • Strategi pemeliharaan disusun berdasarkan tingkat risiko aktual dari tiap aset
  • Penggunaan resources menurun signifikan, lebih terfokus pada aset kritis
  • Tingkat unplanned shutdown menurun
  • Performa aset membaik, mendekati kondisi optimal awalnya (mendekati nameplate)

Dengan pendekatan ini, RBM berperan sebagai kerangka pengambilan keputusan strategis untuk pemeliharaan, yang tidak hanya memperhitungkan frekuensi, tetapi dampak dan konsekuensi kegagalan terhadap:

  • Keselamatan (Safety)
  • Lingkungan (Environment)
  • Kontinuitas produksi (Continuity)

Inilah yang mendorong kebutuhan sistem digital RBM seperti mx-core-rbm, agar strategi tersebut dapat diotomatisasi, distandardisasi, dan diintegrasikan ke sistem pemeliharaan yang lebih luas (CMMS, dashboard, dsb).


  • 🎯 Visi dan Tujuan Bisnis
  • Menyediakan sistem pengambilan keputusan strategis dalam perencanaan pemeliharaan berbasis data.
  • Meningkatkan keandalan dan efisiensi biaya dengan mengidentifikasi aset yang kritis dan menentukan jenis perawatan yang tepat.
  • Menstandarkan pendekatan RBM yang digunakan PT PON ke dalam bentuk sistem digital modular.
  • Memungkinkan integrasi lintas sistem seperti CMMS, IoT monitoring, dan dashboard manajerial.

  • 👥 Stakeholders dan Peran
StakeholderPeran & Kebutuhan
Reliability EngineerMelakukan ESC grading dan evaluasi risiko
Maintenance PlannerMembuat strategi pemeliharaan dan rencana TBM
Maintenance SchedulerMenjadwalkan dan mengeksekusi pemeliharaan
InspectorMelakukan evaluasi dan input histori perawatan
IT/CMMS AdminMenyiapkan integrasi dan sinkronisasi ke CMMS
Supervisor / ManagerMelihat laporan, KPI, dan insight untuk pengambilan keputusan

  • 📌 Kebutuhan Bisnis Tingkat Tinggi
  1. Sistem dapat melakukan penilaian risiko berdasarkan aspek ESC.
  2. Sistem dapat menghasilkan klasifikasi kritikalitas aset.
  3. Sistem dapat menyusun strategi pemeliharaan berdasarkan hasil evaluasi risiko.
  4. Sistem dapat menghasilkan jadwal TBM hybrid jika diperlukan.
  5. Sistem menyediakan dashboard dan visualisasi kondisi aset.
  6. Sistem dapat mengekspor data ke CMMS atau sistem lain.
  7. Sistem dapat mengimport data dari file xlsx sebagai data awal aset.

  • Kriteria Keberhasilan Proyek
  • Sistem mampu menangani seluruh aset yang didefinisikan dalam struktur mx-core.
  • Minimal 90% data aset tergradasi dengan model ESC dan memiliki criticality.
  • Tersedianya dashboard yang menampilkan klasifikasi risiko dan strategi perawatan.
  • Tersedia export CMMS yang dapat digunakan untuk integrasi operasional harian.
  • Feedback positif dari stakeholders dalam UAT.

  • ⚠️ Batasan dan Asumsi
  • Data aset tersedia dalam sistem mx-core melalui struktur Asset, AssetType, AssetDetail.
  • Engineer memiliki kompetensi dalam melakukan penilaian ESC.
  • Penentuan strategi pemeliharaan tetap membutuhkan validasi manusia.
  • Sistem tidak bertanggung jawab atas eksekusi fisik pemeliharaan (hanya perencanaan dan monitoring).
  • Plugin mx-core-rbm hanya mengelola domain RBM — bukan manajemen aset secara umum.

🧩 2. Software Requirement Specification (SRS)

📌 Tujuan Dokumen

Dokumen ini bertujuan untuk menjabarkan kebutuhan teknis dari modul mx-core-rbm, sebuah plugin pada sistem mx-core, yang digunakan untuk mendukung implementasi Risk-Based Maintenance (RBM) di lingkungan industri, khususnya sesuai praktik PT PON.

Dokumen ini akan menjadi acuan utama bagi tim pengembang, QA, dan integrator sistem selama proses pengembangan, pengujian, dan validasi modul.


📌 Ruang Lingkup

Modul mx-core-rbm merupakan plugin mandiri dalam arsitektur monorepo mx-core yang bertugas menangani:

  • Pengelolaan data evaluasi risiko berbasis ESC (Environment, Safety, Continuity)
  • Klasifikasi kritikalitas aset
  • Perencanaan strategi pemeliharaan (Preventive, Predictive, Corrective)
  • Penyusunan jadwal TBM hybrid
  • Monitoring histori evaluasi aset
  • Export data ke CMMS
  • Dashboard visualisasi kondisi aset

📌 Definisi & Akronim

Istilah / AkronimDefinisi
RBMRisk-Based Maintenance – Strategi pemeliharaan berdasarkan tingkat risiko
ESC GradingPenilaian aset berdasarkan tiga aspek: Environment, Safety, Continuity
CMMSComputerized Maintenance Management System – Sistem manajemen pemeliharaan
TBMTime-Based Maintenance – Pemeliharaan berdasarkan waktu atau jadwal
CriticalityTingkat pentingnya suatu aset terhadap keberlangsungan operasi
DIADaftar Induk Aset – struktur dan deskripsi aset di sistem
TierKategori aset berdasar hasil grading dan criticality (Tier1–Tier3)
Plugin mx-core-rbmModul mandiri dalam monorepo mx-core yang menangani domain RBM

🧭 Gambaran Umum Sistem

Modul mx-core-rbm dibangun di atas dua sub-domain utama:

  1. Asset Sub-Domain

    • Menyediakan data statis dan struktural dari aset
    • Berperan sebagai data source untuk RBM
    • Tidak memuat logika evaluasi
  2. RBM Sub-Domain

    • Berisi logika evaluasi risiko dan perencanaan strategi
    • Mencakup fitur grading ESC, criticality, perencanaan, evaluasi, dan export

Sistem ini terintegrasi secara internal dalam mx-core dan dapat melakukan export eksternal ke CMMS.


🧪 Functional Requirements (FR-n)

KodeNama FiturDeskripsi Singkat
FR-01ESC Grading FormEngineer dapat mengisi nilai ESC untuk setiap aset berdasarkan tagNumber.
FR-02Asset Criticality AssignmentSistem menentukan criticality (Kritis / Normal) berdasarkan hasil ESC.
FR-03Maintenance Strategy PlanningSistem menyarankan strategi pemeliharaan (P, P+C, P+P+C) untuk aset berdasarkan criticality.
FR-04TBM Schedule GenerationSistem menghasilkan jadwal pemeliharaan berdasarkan tier hasil evaluasi RBM.
FR-05Evaluation Record LoggingInspector dapat mencatat hasil evaluasi fisik aset dan menyimpannya dalam histori evaluasi.
FR-06Dashboard Risk ViewSistem menampilkan visualisasi tier, ESC grading, dan histori evaluasi aset.
FR-07Export Data ke CMMSSistem dapat mengekspor data RBM ke CMMS dalam format terstruktur (JSON/CSV).
FR-08DIA Management InterfaceSistem menyediakan antarmuka pengelolaan Daftar Induk Aset (DIA) sebagai fondasi RBM.
FR-09Role-based Access Control (RBAC)Sistem membatasi akses fitur berdasarkan peran pengguna (Engineer, Planner, Inspector, Admin).
FR-10Export‑Import File (CSV/XLS) – Multi WorksheetSistem dapat mengimpor dan mengekspor data aset/RBM melalui file CSV/XLS yang mendukung banyak worksheet dengan struktur kolom bervariasi, melakukan normalisasi dan validasi data berdasarkan kategori aset, menampilkan preview dan error log sebelum commit, serta menyimpan seluruh data ke database relasional (SQL) dalam struktur flat dengan tagNumber sebagai identitas unik.

⚙️ Non-Functional Requirements

NFR-IDKategoriSpesifikasi
NFR-01AvailabilitySistem harus tersedia minimal 99.5% selama jam operasional
NFR-02SecuritySistem hanya bisa diakses user terautentikasi, data tersimpan terenkripsi
NFR-03PerformanceWaktu respon form < 1 detik, export < 3 detik untuk 1000 record
NFR-04ScalabilitySistem mampu menangani 10.000+ aset dan histori tanpa degradasi performa
NFR-05UsabilityUI dirancang responsif dan sesuai peran user di lapangan
NFR-06AuditabilitySetiap grading/evaluasi dicatat lengkap dengan user, waktu, dan histori

🧩 Use-Case List & Detail

📋 Daftar Use-Case

UC-IDNama Use-CaseAktor UtamaFR Terkait
UC-01Melakukan ESC GradingReliability EngineerFR-01
UC-02Menentukan Criticality AsetSistem (otomatis/manual)FR-02
UC-03Menyusun Strategi PemeliharaanMaintenance PlannerFR-03
UC-04Menghasilkan Jadwal TBMSistem / SchedulerFR-04
UC-05Mencatat Evaluation RecordInspectorFR-05
UC-06Melihat Dashboard Risiko & TierSupervisor / ManagerFR-06
UC-07Menjalankan Export CMMSIT / CMMS AdminFR-07
UC-08Mengelola DIA (Aset)Maintenance PlannerFR-08
UC-09Akses berbasis Peran (RBAC)Semua PenggunaFR-09
UC-10Import dan Export Data XLSX/CSVPlanner, CMMS Admin, InspectorFR-10

⚠️ Use-case diagram dapat disiapkan secara visual menggunakan tools seperti draw.io, Lucidchart, atau PlantUML (jika dibutuhkan nanti).


🔹 UC-01: Melakukan ESC Grading

  • Nama: ESC Grading Form Input

  • Aktor: Reliability Engineer

  • Deskripsi: Engineer melakukan evaluasi risiko terhadap aset berdasarkan tiga aspek: Environment, Safety, dan Continuity.

  • Trigger: Engineer membuka form grading untuk suatu aset yang sudah terdaftar.

  • Alur Utama:

    1. Engineer memilih aset dari daftar (berdasarkan tagNumber)
    2. Sistem menampilkan form grading ESC
    3. Engineer mengisi nilai untuk setiap aspek (Low / Medium / High)
    4. Engineer menyimpan grading
  • Alur Alternatif:

    • Data tidak lengkap → sistem menolak penyimpanan
    • Aset belum tersedia → redirect ke halaman DIA
  • Kondisi Sukses: Grading ESC tersimpan dalam model ESCGrading, dan dapat dipakai untuk proses criticality

  • Catatan Khusus: Timestamp dan nama grader disimpan sebagai audit trail


🔹 UC-02: Menentukan Criticality Aset

  • Nama: Asset Criticality Determination

  • Aktor: Sistem (otomatis) atau Reliability Engineer (manual override)

  • Deskripsi: Menentukan apakah aset bersifat Kritis atau Normal berdasarkan ESC Grading

  • Trigger: ESC Grading disubmit atau diubah

  • Alur Utama:

    1. Sistem membaca nilai ESC
    2. Menjalankan rule-set penilaian (misalnya ≥ 2 aspek "High" = Kritis)
    3. Menyimpan hasil ke AssetCriticality
  • Alur Alternatif:

    • Engineer bisa override hasil melalui halaman review
  • Kondisi Sukses: Aset memiliki entry AssetCriticality yang valid

  • Catatan Khusus: Overriding harus dicatat oleh user dan alasan


🔹 UC-03: Menyusun Strategi Pemeliharaan

  • Nama: Maintenance Plan Builder

  • Aktor: Maintenance Planner

  • Deskripsi: Menentukan strategi pemeliharaan yang sesuai (Preventive, Predictive, Corrective) berdasarkan criticality dan kondisi teknis

  • Trigger: Criticality aset telah ditentukan

  • Alur Utama:

    1. Planner membuka halaman Maintenance Plan
    2. Sistem menyarankan strategi default (berdasarkan Tier)
    3. Planner dapat memilih/menyesuaikan strategi (P / P+C / P+P+C)
    4. Strategi disimpan ke MaintenancePlan
  • Alur Alternatif:

    • Planner override → harus memberikan alasan
  • Kondisi Sukses: Strategi tercatat dan siap diproses ke TBM scheduler

  • Catatan Khusus: Sistem harus mencatat perubahan strategi di histori audit


🔹 UC-04: Menghasilkan Jadwal TBM

  • Nama: TBM Schedule Generator

  • Aktor: Maintenance Scheduler / Sistem

  • Deskripsi: Menghasilkan jadwal pemeliharaan berbasis strategi yang ditentukan

  • Trigger: Maintenance plan disimpan

  • Alur Utama:

    1. Sistem membaca strategi dari MaintenancePlan
    2. Sistem menghasilkan TBMSchedule berdasarkan interval (misalnya: Predictive = 6 Bulanan)
    3. Jadwal ditampilkan di halaman scheduler
  • Alur Alternatif:

    • Aset Tier-3 → tidak dijadwalkan otomatis
  • Kondisi Sukses: Jadwal TBM tercatat dan bisa diubah/eksekusi oleh scheduler

  • Catatan Khusus: Jadwal harus memperhitungkan last_executed dan next_due


🔹 UC-05: Mencatat Evaluation Record

  • Nama: Asset Evaluation Recording

  • Aktor: Inspector / Reliability Engineer

  • Deskripsi: Mencatat hasil inspeksi atau evaluasi aktual kondisi aset sebagai histori evaluasi periodik atau insidental.

  • Trigger: Inspector melakukan inspeksi fisik atau evaluasi kondisi aset.

  • Alur Utama:

    1. Inspector memilih aset berdasarkan tagNumber

    2. Sistem menampilkan form Evaluation Record

    3. Inspector mengisi:

      • Tanggal evaluasi
      • Hasil evaluasi (OK / Warning / Failure)
      • Catatan tambahan (opsional)
    4. Inspector menyimpan data

    5. Sistem mencatat data ke tabel EvaluationRecord

  • Alur Alternatif:

    • Aset belum memiliki ESC Grading → sistem memberi peringatan
    • Inspector membatalkan input → tidak ada data tersimpan
  • Kondisi Sukses: Evaluation Record tersimpan dan dapat dilihat pada histori evaluasi aset

  • Catatan Khusus:

    • Data Evaluation Record tidak mengubah criticality secara otomatis
    • Digunakan sebagai referensi untuk re-evaluasi RBM

🔹 UC-06: Melihat Dashboard Risiko & Tier

  • Nama: RBM Dashboard Visualization

  • Aktor: Supervisor, Manager, Reliability Engineer

  • Deskripsi: Menyajikan visualisasi kondisi risiko aset secara agregat dan individual untuk mendukung pengambilan keputusan.

  • Trigger: User membuka halaman dashboard RBM.

  • Alur Utama:

    1. User mengakses menu Dashboard

    2. Sistem memuat data:

      • ESC grading
      • Criticality
      • Tier aset
      • Strategi pemeliharaan
      • Ringkasan Evaluation Record
    3. Sistem menampilkan grafik dan tabel (pie, bar, trend)

  • Alur Alternatif:

    • Data belum tersedia → sistem menampilkan notifikasi "data belum lengkap"
  • Kondisi Sukses: User dapat memahami distribusi risiko dan prioritas aset

  • Catatan Khusus: Dashboard bersifat read-only, tidak untuk input atau editing data


🔹 UC-07: Menjalankan Export CMMS

  • Nama: CMMS Data Export

  • Aktor: IT / CMMS Admin

  • Deskripsi: Mengekspor data RBM untuk digunakan pada sistem CMMS eksternal.

  • Trigger: Admin memilih menu Export CMMS.

  • Alur Utama:

    1. Admin memilih jenis data yang akan diekspor:

      • Asset
      • Criticality
      • Maintenance Plan
      • TBM Schedule
    2. Admin memilih format (JSON / CSV)

    3. Sistem memproses dan menghasilkan file export

    4. Admin mengunduh file hasil export

  • Alur Alternatif:

    • Data kosong → sistem menampilkan peringatan
    • Format tidak didukung → sistem menolak permintaan
  • Kondisi Sukses: File export berhasil diunduh dan siap digunakan CMMS

  • Catatan Khusus:

    • Mapping field mengikuti standar mx-core
    • Tidak ada koneksi langsung (push) ke CMMS pada fase ini

🔹 UC-08: Mengelola DIA (Daftar Induk Aset)

  • Nama: Asset Master Data Management

  • Aktor: Maintenance Planner

  • Deskripsi: Mengelola daftar aset sebagai fondasi RBM.

  • Trigger: Planner membuka menu DIA / Assets.

  • Alur Utama:

    1. Planner melihat daftar aset

    2. Planner dapat:

      • Menambah aset baru
      • Mengedit metadata aset
      • Mengaitkan Asset Type & Category
    3. Sistem menyimpan perubahan ke domain Asset

  • Alur Alternatif:

    • Data tidak valid → sistem menolak penyimpanan
    • Aset sudah digunakan RBM → beberapa field terkunci
  • Kondisi Sukses: Data aset tersedia dan siap dievaluasi oleh RBM

  • Catatan Khusus: Modul RBM tidak mengubah struktur asset inti, hanya mengonsumsinya


🔹 UC-09: Akses Berbasis Peran (RBAC)

  • Nama: Role-Based Access Control

  • Aktor: Semua pengguna

  • Deskripsi: Mengatur hak akses fitur berdasarkan peran pengguna.

  • Trigger: User login dan mengakses modul RBM.

  • Alur Utama:

    1. Sistem membaca role user

    2. Sistem menentukan akses ke:

      • Menu
      • Form input
      • Aksi (create/update/export)
    3. Sistem menampilkan UI sesuai peran

  • Alur Alternatif:

    • User mencoba akses fitur terlarang → sistem menolak
  • Kondisi Sukses: User hanya dapat mengakses fitur sesuai perannya

  • Catatan Khusus: RBAC mengikuti kebijakan otorisasi mx-core


🔹 UC-10: Import dan Export Data CSV/XLS (Multi-Sheet, Dynamic Schema)

  • Nama: Import dan Export Data CSV/XLS

  • Aktor:

    • Planner
    • CMMS Admin
    • Inspector

  • 🧾 Deskripsi:

Sistem menyediakan fitur untuk mengimpor dan mengekspor data RBM dalam format CSV dan XLS/XLSX, mencakup data konfigurasi aset, hasil grading, evaluasi kondisi, dan rencana pemeliharaan. File dapat terdiri dari banyak worksheet, dan setiap worksheet mewakili kategori aset berbeda dengan struktur kolom yang bervariasi.

Sistem akan melakukan pembacaan, validasi, preview, dan penyimpanan data dari worksheet ke dalam database relasional (SQL-type), menggunakan struktur flat table dan tagNumber sebagai ID unik.


  • ⚡ Trigger:

User memilih menu Import atau Export pada halaman terkait (misalnya: Grading, Evaluation, Plan), atau dari halaman khusus Import-Export.


  • 🔄 Alur Utama:

Untuk Export:

  1. User membuka halaman Import/Export

  2. User memilih jenis data yang akan diekspor (e.g. Grading, Evaluation, Maintenance Plan)

  3. User memilih format file (CSV atau XLS)

  4. Sistem memproses dan mengemas data ke dalam:

    • Beberapa worksheet (jika XLSX)
    • Beberapa file (jika CSV per kategori)
  5. Sistem menghasilkan file download dan memberi notifikasi

Untuk Import:

  1. User membuka halaman Import/Export

  2. User mengunggah file (CSV atau XLSX)

  3. Sistem membaca seluruh worksheet dan:

    • Mencocokkan struktur header berdasarkan asset_type
    • Memetakan kolom menjadi General dan Detail
    • Menampilkan preview data terstruktur per worksheet
  4. Sistem melakukan validasi:

    • Format kolom sesuai template
    • tagNumber valid dan unik
    • Kolom general wajib ada
  5. User memilih opsi simpan:

    • Per worksheet, atau
    • Semua sekaligus
  6. Sistem menyimpan data ke DB dalam struktur flat berdasarkan asset type


  • 🔁 Alur Alternatif:
  • File tidak sesuai format → sistem tampilkan error validasi
  • Terdapat worksheet kosong → sistem skip dan beri notifikasi
  • Worksheet tidak dikenali → sistem minta mapping manual ke AssetType
  • Terdapat tagNumber duplikat → sistem beri opsi: override, skip, atau merge
  • File terlalu besar → sistem proses secara async, dengan progress bar

  • ✅ Kondisi Sukses:
  • File berhasil diimpor atau diekspor tanpa error
  • Data tersimpan ke database per kategori aset (struktur flat)
  • Notifikasi sukses diberikan per worksheet atau global
  • Error log tersedia jika sebagian gagal

  • 📝 Catatan Khusus:
  • Sistem menyediakan template file per kategori aset untuk memudahkan user

  • XLSX didukung multi-sheet, CSV didukung batch per kategori

  • Setiap worksheet minimal harus punya kolom:

    • tagNumber (wajib, unik)
    • Kolom General (unit, lokasi, status, dll)
  • Kolom Detail dapat bervariasi berdasarkan asset_type_schema

  • Penyimpanan dilakukan ke tabel:

    • asset untuk kolom general
    • asset_detail_<kategori> untuk kolom detail

❓ Apa Itu MoSCoW?

MoSCoW adalah metode untuk mengelompokkan prioritas kebutuhan dalam pengembangan sistem, agar tim tahu mana fitur yang wajib ada sejak awal, mana yang bisa ditunda, dan mana yang bersifat opsional.

MoSCoW adalah akronim dari:

SingkatanMaknaDeskripsi
MMust HaveFitur wajib, tanpa ini sistem tidak bisa berjalan
SShould HaveSangat penting, tapi sistem masih bisa berjalan tanpanya sementara
CCould HaveFitur tambahan yang memberikan nilai tambah tapi bukan prioritas utama
WWon't Have (for now)Tidak akan dikembangkan dalam versi ini, tapi mungkin di masa depan

📋 Prioritas Pengembangan (MoSCoW) – mx-core-rbm

FR-IDFiturKategoriAlasan
FR-01ESC Grading FormMustDasar dari seluruh proses RBM; tidak ada grading → tidak ada evaluasi
FR-02Asset Criticality AssignmentMustPenentu utama prioritas strategi pemeliharaan
FR-03Maintenance Strategy PlanningMustMenyusun rencana pemeliharaan berbasis risiko
FR-04TBM Schedule GenerationShouldHanya diperlukan jika strategi mengarah ke TBM
FR-05Evaluation Record LoggingShouldUntuk histori dan audit trail; penting untuk keberlanjutan sistem
FR-06Dashboard Risk ViewCouldMemberikan insight visual, tapi bukan blocker proses utama
FR-07Export Data ke CMMSShouldPenting untuk integrasi operasional, tapi bisa manual sementara
FR-08DIA Management InterfaceMustTanpa struktur aset, grading tidak bisa dilakukan
FR-09Role-based Access Control (RBAC)MustKeamanan sistem; hanya user yang berhak bisa mengakses fiturnya

✅ Catatan:

  • Fitur-fitur Must Have adalah scope minimum untuk versi MVP / rilis awal
  • Fitur Should Have akan dikejar setelah Must selesai
  • Fitur Could Have akan dikerjakan jika resource mencukupi
  • Saat ini tidak ada fitur yang dikategorikan sebagai Won’t Have

📊 Traceability Matrix (Opsional)

Traceability Matrix digunakan untuk memetakan keterkaitan antar artefak SDLC — misalnya dari kebutuhan bisnis (BRS), ke fitur (FR), lalu ke use-case (UC), dan seterusnya ke test-case.

ID BRSKebutuhan Bisnis Tingkat TinggiFR TerkaitUse Case TerkaitTest Case Terkait
BRS-01Sistem dapat melakukan ESC gradingFR-01UC-01TC-01, TC-02
BRS-02Sistem dapat menghasilkan criticalityFR-02UC-02TC-03
BRS-03Sistem menyusun strategi perawatanFR-03UC-03TC-04
BRS-04Sistem menjadwalkan TBM hybridFR-04UC-04
BRS-05Sistem menyimpan histori evaluasiFR-05UC-05TC-05
BRS-06Dashboard menampilkan kondisi asetFR-06UC-06TC-08
BRS-07Export data RBM ke CMMSFR-07UC-07TC-06
BRS-08User dapat mengelola struktur aset (DIA)FR-08UC-08
BRS-09Sistem membatasi akses sesuai peranFR-09UC-09TC-07
BRS-10Sistem dapat mengimpor dan mengekspor data RBM via file (CSV/XLS)FR-10UC-10TC-09, TC-10, TC-11

🔁 Traceability Matrix ini akan lebih kaya saat test-case sudah tersedia di tahap Testing (misalnya TC-01 menguji UC-01 yang berasal dari FR-01 dan BRS-01)


🧩 3. System Design – Bagian 1: High-Level Design (HLD)

📌 Tujuan: Menjabarkan struktur sistem secara modular, menggambarkan bagaimana komponen utama saling terhubung dan berinteraksi.


🔷 3.1.1 Diagram Arsitektur Sistem

Berikut adalah arsitektur konseptual tingkat tinggi dari plugin mx-core-rbm:

             +------------------------+
             |     User Interface     |
             | (Next.js + Tailwind UI)|
             +-----------+------------+
                         |
     +-------------------------+--------------------------+
     |                   RBM Application Layer           |
     |  (Routing, Pages, Controllers, Role Guarding)     |
     +-------------------------+--------------------------+
                         |
     +-------------------------+--------------------------+
     |     Business Logic / Services Layer                |
     |  - ESC Grading Engine                              |
     |  - Criticality Calculator                          |
     |  - Maintenance Strategy Mapper                     |
     |  - TBM Scheduler                                   |
     |  - Evaluation Recorder                             |
     +-------------------------+--------------------------+
                         |
     +------------------------+---------------------------+
     |     Data Access Layer (Models / Prisma)            |
     |  - Asset Domain Models                             |
     |  - RBM Domain Models                               |
     +------------------------+---------------------------+
                         |
             +----------------------------+
             |        PostgreSQL DB       |
             | (Schema: asset + rbm)      |
             +----------------------------+

             +----------------------------+
             |     External Interfaces    |
             |     (Export CMMS, IoT*)    |
             +----------------------------+

🔷 3.1.2 Modul / Subsystem Overview

Plugin mx-core-rbm dibagi menjadi dua sub-domain logis, namun tetap dalam satu modul:

  1. Asset Sub-Domain

Modul ini menyediakan data dasar aset, bersifat statis, struktural, dan tidak mengandung logika bisnis RBM.

  • Asset
  • AssetType
  • AssetCategory
  • AssetTypeSchema
  • AssetDetail
  1. RBM Sub-Domain

Modul yang menyimpan logika bisnis evaluasi, strategi, dan histori. Dinamis dan bergantung pada data dari Asset Sub-Domain.

  • ESCGrading
  • AssetCriticality
  • MaintenancePlan
  • TBMSchedule
  • EvaluationRecord
  • AssetTier (derived)

🔷 3.1.3 Komunikasi Antar Modul

Dari ModulKe ModulBentuk Interaksi
UI (Next.js Pages)Services LayerHandler / Controller
ServicesModels (ORM)Prisma ORM / Direct Call
RBM ServicesAsset ModelsRead-only reference
Export ServiceFile GeneratorJSON / CSV

Catatan: Komunikasi antar sub-domain tetap dilakukan melalui API internal atau shared services, tanpa memecah menjadi microservices.


🔷 3.1.4 External Interfaces

Nama Sistem EksternalJenis IntegrasiProtokol / FormatTujuan
CMMS (SAP, Maximo, dsb)Export ManualJSON / CSVImpor strategi / jadwal
IoT (future-ready)MQTT / REST(Opsional)Menyediakan kondisi aset real
Dashboard umum (mx-core)Internal sharingInternal plugin APIVisualisasi global KPI

Integrasi dilakukan secara modular & terisolasi agar plugin tetap mandiri dalam mx-core.


🔷 3.1.5 Security & Auth Flow

AspekMekanisme
AuthenticationMenggunakan mekanisme auth dari mx-core (NextAuth / JWT / SSO)
AuthorizationRole-based Access Control (RBAC) per halaman & aksi
Audit TrailSetiap aksi grading / evaluasi disimpan dengan user & timestamp
Data ProtectionTidak ada data sensitif; hanya evaluasi teknis aset
Access LoggingOpsional logging untuk critical actions (misalnya override strategi)

🔷 3.1.6 Integrasi Internal & Eksternal

🔄 Internal Integration

  • Plugin membaca data dari Asset Sub-Domain via shared Prisma models
  • Tersedia API internal untuk halaman dashboard dan CMMS export
  • Tidak terjadi duplikasi data antar plugin mx-core

🔗 External Integration

  • Modul Export menghasilkan file JSON / CSV yang bisa diimpor oleh CMMS eksternal
  • Data terstruktur berdasarkan tagNumber, criticality, dan schedule
  • Terbuka untuk penambahan adapter REST / MQTT (jika dibutuhkan IoT link ke RBM)

🧩 3.2 Low-Level Design (LLD) – mx-core-rbm

🎯 LLD menyusun spesifikasi teknis yang lebih detail untuk setiap komponen sistem. Semua ini langsung berkaitan dengan FR dan Use Case yang sebelumnya sudah kita tetapkan.


🔹 1. Data Model

📌 a. Entity-Relationship Diagram (ERD)

ERD ini sudah dituliskan secara lengkap di dokumen konsep sebelumnya, dan kini diposisikan sebagai dasar database design untuk LLD:

      Asset (tag_number PK)
           ├───► ESCGrading (FK)
           ├───► AssetCriticality (FK)
           ├───► AssetTier (FK)
           ├───► TBMSchedule (FK)
           ├───► MaintenancePlan (FK)
           └───► EvaluationRecord (FK)

Catatan: Semua entitas di domain RBM memiliki tag_number sebagai foreign key untuk referensi ke data aset.


📘 b. Data Dictionary

Contoh data dictionary untuk entitas utama:

Table: esc_grading

FieldTipe DataConstraintDeskripsi
tag_numberVARCHARPK, FK → assetID unik aset
environmentENUMNOT NULLDampak lingkungan (Low / Medium / High)
safetyENUMNOT NULLDampak keselamatan
continuous_runningENUMNOT NULLDampak kontinuitas operasi
graded_byVARCHARNOT NULLUser input
graded_atTIMESTAMPNOT NULLWaktu input grading

Table: maintenance_plan

FieldTipe DataConstraintDeskripsi
tag_numberVARCHARPK, FK → assetID aset
strategyENUMNOT NULLStrategi: P, P+C, P+P+C
updated_byVARCHARNOT NULLUser terakhir yang mengupdate
updated_atTIMESTAMPNOT NULLTimestamp pembaruan

(Data Dictionary lengkap bisa diturunkan lebih lanjut ke semua entitas model mx-core-rbm jika dibutuhkan.)


🔹 2. Algoritma / Flowchart

⚙️ a. ESC Grading to Criticality Rule (Inference Logic)

Deskripsi:

  • Criticality otomatis ditentukan berdasarkan skor ESC.

Logika Sederhana (Ruleset):

function determineCriticality(esc: {
  environment: string;
  safety: string;
  continuous_running: string;
}) {
  const weights = {
    Low: 1,
    Medium: 2,
    High: 3,
  };

  const totalScore =
    weights[esc.environment] +
    weights[esc.safety] +
    weights[esc.continuous_running];

  return totalScore >= 7 ? 'Kritis' : 'Normal';
}

🎯 Bisa di-refactor sebagai service calculateCriticality() di folder services/criticality.ts


⚙️ b. Maintenance Plan Decision Logic

function mapToStrategy(criticality: string): 'P' | 'P+C' | 'P+P+C' {
  switch (criticality) {
    case 'Kritis':
      return 'P+P+C';
    case 'Normal':
    default:
      return 'P+C';
  }
}

🔹 3. Schema API (REST)

Plugin ini berbasis monorepo dan modular internal, tetapi tetap memungkinkan exposure API internal (Next.js App Router).

📌 a. Endpoint: POST /api/grading

  • Deskripsi: Menyimpan grading ESC untuk sebuah aset

✅ Payload (JSON)

{
  "tagNumber": "PU-101",
  "environment": "High",
  "safety": "Medium",
  "continuous_running": "High",
  "gradedBy": "eng.rizki"
}

✅ Response

{
  "success": true,
  "message": "Grading berhasil disimpan",
  "criticality": "Kritis"
}

📌 b. Endpoint: GET /api/plan/:tagNumber

  • Deskripsi: Mendapatkan strategi pemeliharaan untuk aset

✅ Response

{
  "tagNumber": "PU-101",
  "strategy": "P+P+C",
  "tier": "Tier1",
  "lastUpdated": "2025-12-12T09:30:00Z"
}

Catatan:

  • Semua endpoint ditangani dengan middleware auth (JWT / session dari mx-core)
  • Format JSON mengikuti konvensi snake_case atau camelCase konsisten (direkomendasikan camelCase)

🔹 4. Database Design

📌 a. Normalisasi

  • Sudah diterapkan hingga 3NF:

    • Tidak ada data redundan
    • Kategori dan tipe aset dipisah dari data grading
    • Setiap evaluasi punya histori sendiri

📌 b. Indexing

TableFieldTipe Index
esc_gradingtag_numberPrimary Index
maintenance_plantag_numberUnique Index
evaluation_recordtag_numberIndex (composite with evaluated_at)
asset_type_schema_fieldschema_idForeign Index

📌 c. Partitioning (Opsional)

  • EvaluationRecord dapat dipartisi berdasarkan evaluated_at bulanan atau tahunan jika jumlah data tinggi.
  • Tidak diterapkan di awal, namun disiapkan desain skemanya.

🔹 5. Config & Parameter List

ParameterTipeDefaultDeskripsi
RBM_CRITICALITY_THRESHOLDinteger7Batas skor ESC untuk aset dikategorikan "Kritis"
TBM_INTERVAL_DEFAULTenum6MonthsInterval default jika tidak ditentukan manual
EXPORT_FORMATenumJSONFormat file ekspor default
RBAC_ROLESarray[‘Engineer’, ‘Planner’, ‘Admin’]Daftar role user sistem
ESC_WEIGHTSobject{Low:1, Medium:2, High:3}Bobot default untuk ESC Grading

Konfigurasi ini bisa diletakkan di file .env atau config/rbm-config.ts agar mudah dimodifikasi dan di-maintain.


🧩 4. Implementation (Coding)

Mengubah dokumen teknis (LLD) menjadi implementasi kode sumber dalam bentuk plugin modular mx-core-rbm yang bisa dibuild, dijalankan, dan diuji.


🔹 I. Setup Repositori (Git)

📁 Struktur Repositori (mx-core)

Berikut adalah struktur direktori dari monorepo mx-core, dengan mx-core-rbm sebagai salah satu plugin-nya:

mx-core/
├── apps/
│   ├── web/               # frontend utama
│   └── api/               # backend utama
├── plugins/
│   └── mx-core-rbm/       # 🔍 plugin RBM (fokus kita)
│       ├── src/
│       │   ├── app/
│       │   ├── models/
│       │   ├── services/
│       │   ├── hooks/
│       │   ├── utils/
│       │   └── ...
│       ├── public/
│       ├── plugin.json
│       ├── next.config.js
│       ├── tsconfig.json
│       └── ...
├── package.json
└── turbo.json

🔧 Setup Git Branching

Praktik GitDeskripsi
Branch utamamain → stable release
Branch pengembangandevelop → integrasi antar fitur
Branch fiturfeature/rbm-<nama-fitur>
Branch bugfixbugfix/rbm-<bug-desc>
Tag versiv1.0.0-rbm → menandai release plugin RBM

Contoh perintah:

git checkout -b feature/rbm-esc-grading

📦 Setup Tools & Dependency

Plugin mx-core-rbm menggunakan stack:

  • Next.js (App Router)
  • Tailwind CSS
  • TypeScript
  • Prisma (ORM)
  • Zod (validasi input)
  • React Hook Form untuk form grading/input

Perintah setup awal:

cd plugins/mx-core-rbm
npm install
npx prisma generate
npm run dev

🔹 Coding by Module / Sprint

📅 Sprint Planning (modular breakdown)

SprintModulFR TerkaitUC TerkaitFolder/Path
1DIA ManagementFR-08UC-08app/assets, models/asset
2ESC Grading FormFR-01UC-01app/grading, services/grading.ts
3Auto Criticality LogicFR-02UC-02services/criticality.ts
4Maintenance Plan GeneratorFR-03UC-03app/plan, services/plan.ts
5TBM SchedulerFR-04UC-04app/schedule, services/scheduler.ts
6Evaluation LoggingFR-05UC-05app/evaluation, models/evaluation.ts
7CMMS ExportFR-07UC-07app/export, utils/exporter.ts
8Dashboard VisualFR-06UC-06app/dashboard, hooks/useDashboard.ts
9Role-based Access ControlFR-09UC-09middleware/auth.ts, config/rbac.ts
10Export-Import CSV/XLSFR-10UC-10app/import-export, services/importer.ts, services/exporter.ts

🎯 Setiap sprint diturunkan ke PR (Pull Request) dengan deskripsi:

  • UC/FR yang diimplementasikan
  • Screenshot UI (jika ada)
  • Rujukan LLD (algoritma/API yang dipakai)

Memastikan setiap kode:

  • Mengacu pada struktur model, field, dan relasi di ERD
  • Mengimplementasikan algoritma sesuai logika RBM
  • Memenuhi kontrak API endpoint yang didefinisikan
  • Mengikuti struktur file/folder modular
  • Konsisten dengan standar mx-core (Next.js App Router + TypeScript)

🔹 1. Implementasi Model Mengacu ERD

Model ditulis menggunakan Prisma ORM, mengacu langsung pada struktur LLD.

Contoh:

prisma/schema.prisma (sebagian RBM domain)

model ESCGrading {
  tagNumber          String   @id @map("tag_number")
  environment        ESCLevel
  safety             ESCLevel
  continuousRunning  ESCLevel @map("continuous_running")
  gradedBy           String   @map("graded_by")
  gradedAt           DateTime @map("graded_at")

  Asset              Asset    @relation(fields: [tagNumber], references: [tagNumber])
}

enum ESCLevel {
  Low
  Medium
  High
}

Implementasi TypeScript Model (untuk service layer):

// models/rbm/ESCGrading.ts
export interface ESCGrading {
  tagNumber: string;
  environment: 'Low' | 'Medium' | 'High';
  safety: 'Low' | 'Medium' | 'High';
  continuousRunning: 'Low' | 'Medium' | 'High';
  gradedBy: string;
  gradedAt: Date;
}

🔹 2. Implementasi Algoritma / Logic dari LLD

Sesuai dengan algoritma calculateCriticality() di LLD:

// services/criticality.ts
export function calculateCriticality(grading: {
  environment: string;
  safety: string;
  continuousRunning: string;
}): 'Kritis' | 'Normal' {
  const weights = {
    Low: 1,
    Medium: 2,
    High: 3,
  };
  const score =
    weights[grading.environment] +
    weights[grading.safety] +
    weights[grading.continuousRunning];

  return score >= 7 ? 'Kritis' : 'Normal';
}

🔁 Dipakai dalam controller saat user submit ESC grading untuk langsung menentukan criticality.


🔹 3. API Handler Sesuai Kontrak LLD

Contoh implementasi endpoint sesuai skema:

Endpoint: POST /api/grading

// app/api/grading/route.ts
import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';
import { calculateCriticality } from '@/services/criticality';

export async function POST(req: NextRequest) {
  const data = await req.json();

  const criticality = calculateCriticality(data);

  await prisma.eSCGrading.upsert({
    where: { tagNumber: data.tagNumber },
    update: {
      ...data,
      criticality,
      gradedAt: new Date(),
    },
    create: {
      ...data,
      criticality,
      gradedAt: new Date(),
    },
  });

  return NextResponse.json({
    success: true,
    criticality,
  });
}

✅ Payload dan response sesuai dengan LLD API schema.


🔹 4. Struktur Folder & Modularisasi

Folder mengikuti pembagian sub-domain sesuai dengan desain sebelumnya:

mx-core-rbm/
├── src/
│   ├── app/
│   │   ├── grading/          # UC-01
│   │   ├── plan/             # UC-03
│   │   ├── schedule/         # UC-04
│   ├── models/
│   │   ├── asset/            # asset base models
│   │   └── rbm/              # RBM-specific models
│   ├── services/
│   │   ├── grading.ts
│   │   ├── criticality.ts
│   │   ├── plan.ts
│   ├── utils/
│   │   ├── score-utils.ts
│   └── ...

🔁 Service dan model dipisah berdasarkan fungsi agar mudah di-maintain dan di-test.


🔹 5. Validasi Input: Schema + Type Safety

Plugin mx-core-rbm menggunakan Zod untuk validasi input:

// schemas/gradingSchema.ts
import { z } from 'zod';

export const gradingSchema = z.object({
  tagNumber: z.string().min(1),
  environment: z.enum(['Low', 'Medium', 'High']),
  safety: z.enum(['Low', 'Medium', 'High']),
  continuousRunning: z.enum(['Low', 'Medium', 'High']),
  gradedBy: z.string().min(1),
});

Digunakan di API handler:

const parsed = gradingSchema.safeParse(data);
if (!parsed.success) {
  return NextResponse.json(
    { success: false, errors: parsed.error.format() },
    { status: 400 }
  );
}

🔹 1. Versioning & Dokumentasi

📦 a. Versioning (Penomoran Rilis)

Plugin mx-core-rbm mengikuti semver (Semantic Versioning) standar:

vX.Y.Z
└┬┘ └┬┘ └┬┘
 │   │   └── Patch → Fix kecil
 │   └───── Minor → Penambahan fitur backward-compatible
 └───────── Major → Breaking change besar

Contoh penomoran versi:

  • v1.0.0-rbm → Rilis awal MVP RBM
  • v1.1.0-rbm → Penambahan fitur dashboard dan export
  • v1.1.1-rbm → Fix minor pada jadwal TBM
  • v2.0.0-rbm → Perubahan struktur model grading (breaking)

🔧 b. Tagging Git + Release Notes

git tag -a v1.0.0-rbm -m "Initial release of mx-core-rbm plugin"
git push origin v1.0.0-rbm

📝 Release Notes dikelola di file: plugins/mx-core-rbm/docs/RELEASE-NOTES.md

Contoh isi:

> v1.0.0-rbm – 2025-12-20
> 🎯 Fitur:

- ESC Grading Form (UC-01)
- Criticality Logic (UC-02)
- Maintenance Plan Generator (UC-03)
- Basic TBM Scheduler (UC-04)
- Evaluation Record Form (UC-05)

🔐 Security:

- Role-based access control untuk semua halaman

📁 Struktur:

- Modular plugin dalam `plugins/mx-core-rbm`

🔹 2. Code Review & Integration Checklist

📋 a. Code Review Checklist

ChecklistStatus
🔍 Kode sesuai struktur LLD
🔐 Validasi input dengan schema Zod
🧱 Model database sesuai Prisma / ERD
🧪 Unit test / logic test tersedia (jika ada)⚠️ Partial
🔄 Tidak ada hardcoded data
📖 Fungsi diberi komentar deskriptif seperlunya
🔁 Pull Request mencantumkan FR / UC terkait
✅ Build lulus (lint, typecheck, etc.)

🧪 Catatan: Unit test akan lebih dikembangkan pada tahap Testing (SDLC 5)


🔗 b. Integration Checklist

Langkah IntegrasiStatus
📦 Plugin bisa diimport dalam sistem mx-core
🧩 Tersambung dengan domain Asset
🔐 Auth & RBAC aktif berdasarkan session/role
📁 Folder terisolasi di plugins/mx-core-rbm/
📤 Export file JSON / CSV bisa diakses
🔧 .env plugin tidak konflik dengan mx-core

🧩 5. Testing

📌 Tujuan: Validasi bahwa sistem mx-core-rbm bekerja sesuai dengan spesifikasi teknis (SRS) dan skenario nyata (use-case UC-01 s.d. UC-09).


✅ 1. Unit Test

Menguji logika kecil atau fungsi tunggal yang tidak bergantung pada modul lain.

TargetToolsContoh Test Case
calculateCriticality()Vitest / JestInput ESC = High+High+Low → output = "Kritis"
mapToStrategy()VitestCriticality = "Normal" → return = "P+C"
API Payload ValidationZod + Test RunnerPayload invalid → return 400

✅ Ditulis di folder: __tests__/services/ dan __tests__/utils/


🔁 2. Integration Test

Menguji interaksi antar modul, seperti controller → service → database.

SkenarioContoh
Submit ESC gradingSimulasi request ke POST /api/grading dan cek response
Simpan Evaluation RecordCek apakah data masuk ke tabel dan histori muncul
Load data dashboardPastikan data tier, ESC, dan strategi bisa dibaca

Test dilakukan dengan supertest / Next.js test utils atau Postman collection.


🔧 3. System Test (E2E)

Menguji alur lengkap dari perspektif pengguna. Tools: Playwright, Cypress, atau manual UAT.

Contoh Skenario:

🟩 UC-01 sampai UC-05 (grading → strategi):

  1. User login sebagai Engineer
  2. Pilih aset → isi ESC grading
  3. Submit → sistem menilai criticality
  4. Login sebagai Planner → buka halaman Maintenance Plan
  5. Pilih strategi → sistem generate TBM schedule
  6. Evaluasi tercatat → histori muncul

🟩 UC-06 (Dashboard):

  • User membuka dashboard dan melihat jumlah Tier1 / Tier2 / Tier3
  • Klik satu aset → tampil histori evaluasi

🟩 UC-07 (Export):

  • IT mengakses /export → memilih tipe data → download file

👤 4. User Acceptance Test (UAT)

Melibatkan user dari PT PON (misalnya Reliability Engineer, Planner) untuk mencoba langsung sistem sesuai peran mereka.

TujuanDetail
Verifikasi real-useApakah proses grading dan perencanaan sesuai alur kerja nyata
Validasi usabilityApakah UI cukup intuitif di lapangan
Final feedbackApakah fitur sesuai ekspektasi business (kembali ke BRS)
Uji integrasi CMMSApakah export CMMS bisa langsung digunakan tanpa modifikasi manual

✅ Hasil UAT akan menjadi dasar keputusan Go-Live / Release Approval


🧩 Dokumen Pengujian


📘 1. Test Plan

Test Plan adalah dokumen strategis untuk mengatur pendekatan, cakupan, peran, dan jadwal pengujian modul mx-core-rbm.

📄 Struktur Test Plan

ElemenIsi
Nama ProyekPlugin mx-core-rbm
Tujuan UjiMemastikan sistem bekerja sesuai SRS, LLD, dan Use Case (UC-01 s.d. UC-09)
CakupanSemua fitur RBM (ESC Grading, Criticality, Plan, Schedule, Export, dsb)
Jenis PengujianUnit Test, Integration Test, System Test, UAT
Lingkungan UjiStaging Environment mx-core dengan plugin aktif
ToolsJest / Vitest, Postman, Playwright, Manual testing sheet
Waktu Uji1 minggu post-implementasi
Tim QAQA Engineer, Reliability Eng, IT Admin
Kriteria Lulus100% UC berjalan tanpa blocker, UAT disetujui

🧪 2. Test Case (berbasis Use Case)

Masing-masing UC-01 sampai UC-09 dijabarkan ke dalam 1 atau lebih test case terstruktur.

📄 Format Test Case

Test Case IDUC ReferensiNama Test CaseInputEkspektasi HasilStatus
TC-01UC-01ESC Grading – Input ValidtagNumber = PU-101, ESC=HHMData tersimpan, criticality keluar
TC-02UC-01ESC Grading – Input InvalidESC = kosongReturn 400 + error message
TC-03UC-02Hitung Criticality OtomatisESC = High, High, HighOutput = "Kritis"
TC-04UC-03Generate Plan Based on TierTier1Strategy = P+P+C
TC-05UC-05Catat Evaluation RecordResult = WarningTersimpan di histori
TC-06UC-07Export CMMS as JSONAsset list selectedFile JSON tersedia
TC-07UC-09Role Akses Planner ke GradingLogin Planner → buka gradingDitolak (403)
TC-08UC-06Lihat Dashboard SummaryLogin SupervisorPie chart muncul, data benar
TC-09UC-10Export Evaluation to XLSKlik Export → Pilih Evaluation + XLSFile XLS terunduh dengan header sesuai
TC-10UC-10Import ESC Grading from CSVUpload file CSV validData ditampilkan dan disimpan ke DB
TC-11UC-10Import file dengan format salahUpload CSV kosong / kolom salahError ditampilkan, data tidak disimpan

Format ini bisa ditransfer ke Excel / Test Management System seperti TestRail.


🐞 3. Bug Log

Bug Log mencatat temuan selama pengujian dan status penyelesaiannya.

ID BugModulDeskripsiSeverityStatusPIC
BUG-01ESC GradingESC “Medium” tidak dihitung dengan benarMajorFixedDev A
BUG-02ExportCSV export gagal bila 0 dataMinorOpenDev B
BUG-03RBACPlanner bisa akses halaman exportCriticalFixedDev A
BUG-04EvaluationTimestamp tidak tersimpanMajorFixedDev C

🔗 4. Traceability Matrix (Final)

Menghubungkan seluruh artefak dari BRS → FR → UC → TC.

BRS-IDFR-IDUC-IDTC-IDStatus
BRS-01FR-01UC-01TC-01
BRS-01FR-01UC-01TC-02
BRS-02FR-02UC-02TC-03
BRS-03FR-03UC-03TC-04
BRS-05FR-05UC-05TC-05
BRS-07FR-07UC-07TC-06
BRS-09FR-09UC-09TC-07
BRS-06FR-06UC-06TC-08

🧩 6. Deployment – mx-core-rbm

📌 Tujuan: Meluncurkan plugin mx-core-rbm ke lingkungan produksi dengan proses terkontrol dan terdokumentasi.


🔹 Checklist Deployment

⚙️ 1. Build & CI/CD Pipeline

  • Menggunakan Turborepo untuk membangun monorepo mx-core

  • CI/CD via GitHub Actions atau GitLab CI

  • Pipeline mencakup:

    • Lint & typecheck
    • Unit & integration test
    • Build plugin
    • Deploy ke environment staging/production
# .github/workflows/deploy.yml (contoh sederhana)
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: npm install
      - run: npm run build
      - run: npm run test
      - run: bash ./scripts/deploy.sh

🌐 2. Environment Setup

EnvURL (Contoh)TujuanCatatan
Devhttp://localhost:3000Pengembangan lokalDengan DB lokal
Staginghttps://rbm-staging.mx-core.ioUji internal tim QASinkron data dummy
Prodhttps://rbm.mx-core.ioLive PT PONData aset asli
  • .env.local → untuk dev
  • .env.staging → untuk staging
  • .env.production → untuk prod

🛡️ 3. Backup & Rollback Plan

  • Backup DB otomatis (PostgreSQL via cron/pg_dump)

  • Snapshot konfigurasi .env, schema, dan plugin.json

  • Rollback:

    • Revert ke tag Git: git checkout v1.0.0-rbm
    • Restore database backup
    • Trigger deploy ulang dari CI/CD

📄 4. Release Notes

  • Disimpan di: plugins/mx-core-rbm/docs/RELEASE-NOTES.md

Contoh:

_v1.0.0-rbm – Production Release (2025-12-24)_

✅ Fitur:

- ESC Grading
- Asset Criticality
- Maintenance Strategy
- TBM Schedule
- Dashboard
- Export CMMS

🔒 RBAC aktif
🧪 Telah melalui UAT

📜 5. Deployment Log

Contoh entry log:

_Deployment Log - v1.0.0-rbm_

Date: 2025-12-24
By: DevOps Team

- Deploy sukses ke https://rbm.mx-core.io
- DB migrated via prisma migrate
- Release Notes attached
- No error in first 24h monitoring

✅ Output Deployment

HasilStatus
Plugin live di production
CI/CD build otomatis
Release terdokumentasi
Rollback plan tersedia

🧩 7. Maintenance & Support – mx-core-rbm

📌 Menjaga keberlangsungan layanan plugin RBM dan menyiapkan peningkatan jangka panjang.


🔧 Aktivitas Maintenance

🖥️ 1. Monitoring Performance

  • Tools: Logtail / Grafana / Vercel Analytics

  • Parameter:

    • Load halaman grading & dashboard
    • Waktu respon API
    • Error rate (500, 403, dll)

🐞 2. Patch & Bug Fix

  • Bug tracking via GitHub Issues / internal dashboard
  • Patch dirilis via versi v1.x.x-rbm (patch semver)
  • Hotfix langsung di-merge ke main dengan testing cepat

📣 3. User Feedback Loop

  • Tim Planner dan Engineer memberikan masukan rutin

  • Feedback dikumpulkan via:

    • Form internal
    • Group WA/Telegram
    • Review pasca shutdown/turnaround

🔄 4. Model Retraining (Jika AI Diterapkan)

  • [Opsional untuk versi mendatang] jika RBM ditingkatkan dengan scoring berbasis AI
  • Data histori dari EvaluationRecord dapat digunakan

🚀 5. Roadmap Feature Improvement

Contoh rencana jangka pendek:

VersiFitur BaruStatus
v1.1.0-rbmRole granular untuk Supervisor🟡 Draft
v1.2.0-rbmVisual ESC trend mingguan🟡 Draft
v2.0.0-rbmREST-to-MQTT bridge untuk IoT⏳ Ide

📏 SLA & KPI Maintenance

ParameterTarget
Uptime≥ 99.5%
Bug fix response< 2 hari kerja untuk High
Release cycle minor1–2 minggu
Response API< 1 detik

✅ Output Maintenance & Support

HasilStatus
Performa dimonitor
Patch terjadwal
Feedback aktif dikumpulkan
Roadmap disusun
SLA & KPI ditentukan

🎯 Kesimpulan

✅ Proyek mx-core-rbm telah selesai dirancang dan diimplementasikan mengikuti struktur SDLC end-to-end, meliputi:

  1. Business Needs (BRS)
  2. Technical Specs (SRS)
  3. Design (HLD & LLD)
  4. Coding (modular, tested, documented)
  5. Testing (Unit → UAT)
  6. Deployment (CI/CD, backup, live)
  7. Maintenance (Support & roadmap)

📌 Cocok digunakan untuk proyek dengan pendekatan structured (Waterfall) maupun iterative (Agile Hybrid)