Mx
Published on

Blueprint Pengembangan mx-core-metric – KPI Planning, Recording & Forecasting Platform

Authors

Blueprint Pengembangan mx-core-metric – KPI Planning, Recording & Forecasting Platform



1. BRS - Business Requirement Specification

  • 📌 Latar Belakang Masalah

Dalam operasional industri berskala besar, pemantauan performa lintas departemen secara real-time menjadi tantangan besar. Selama ini:

  • Perencanaan KPI dilakukan secara manual dan tersebar di berbagai format (Excel, form offline).
  • Tidak ada sistem terpadu yang mengaitkan target KPI dengan aktual capaian serta dampak gangguan operasional.
  • Sulit melakukan monitoring berkala (mingguan/bulanan), apalagi memprediksi capaian akhir tahun.
  • Forecasting dilakukan secara manual atau tidak akurat, mengandalkan penilaian subjektif.
  • Belum ada integrasi dengan data sensor/IoT untuk otomatisasi pencatatan aktual.

  • 🎯 Visi dan Tujuan Bisnis

Visi: Membangun sistem KPI terpadu yang mampu mencatat, mengelola, dan memprediksi performa operasional lintas departemen secara otomatis, fleksibel, dan dapat diintegrasikan dengan sistem sensor/IoT.

Tujuan:

  • Menyediakan platform digital untuk perencanaan dan pemantauan KPI numerik/non-numerik secara multi-level (tahunan → harian).
  • Menghubungkan aktual capaian dengan gangguan operasional yang terjadi.
  • Menyediakan fitur prediksi capaian akhir tahun menggunakan metode manual dan otomatis.
  • Menyajikan dashboard interaktif yang membantu manajemen mengambil keputusan berbasis data real-time.
  • Mempersiapkan sistem untuk integrasi IoT & otomatisasi data (sensor → MQTT → API).

  • 👥 Stakeholders dan Peran
PeranDeskripsi
Manajemen PusatPengguna utama dashboard untuk melihat performa & membuat keputusan
Kepala DepartemenPenanggung jawab KPI tahunan dan pemantauan capaian tiap unit
Operator LapanganMencatat capaian aktual & gangguan operasional
IT & Developer TeamMembangun dan memelihara sistem mx-core-metric
Tim IoT & IntegrasiMenghubungkan sistem dengan data dari sensor
QA dan SupportMenguji sistem, memastikan kualitas dan mendukung user

  • 🧭 Kebutuhan Bisnis Tingkat Tinggi
  1. Sistem mampu mengelola target KPI tahunan dan breakdown periodik (bulanan/mingguan/harian).
  2. Sistem mendukung input aktual capaian KPI dan gangguan (disturbance) secara manual maupun otomatis.
  3. Sistem menyediakan fitur prediksi (forecast) capaian akhir tahun berdasarkan data historis.
  4. Sistem menyediakan dashboard untuk memantau KPI, deviasi, dan dampak gangguan.
  5. Sistem memungkinkan integrasi dengan sensor eksternal (via MQTT) untuk pencatatan otomatis.

  • 🏁 Kriteria Keberhasilan Proyek
KriteriaIndikator
🎯 FungsionalitasSemua proses KPI (rencana → catat → pantau → prediksi) dapat dilakukan dalam satu sistem
📈 Akurasi ForecastingPrediksi sistem mendekati hasil aktual (deviasi ≤10%) untuk KPI numerik
⚙️ Stabilitas SistemUptime sistem ≥ 99.5% selama jam operasional
🔌 KeterhubunganSistem dapat menerima data otomatis dari sensor MQTT dengan latency < 3 detik
🧠 Adopsi User>80% departemen menggunakan sistem secara aktif dalam 3 bulan setelah peluncuran

  • 🧱 Batasan dan Asumsi
BatasanAsumsi
Tidak semua KPI bisa diukur secara numerikKPI bertipe boolean/status tetap didukung
Tidak semua gangguan berdampak langsung pada KPISistem akan menyediakan fitur "link manual" antara disturbance dan KPI
Prediksi tidak menggunakan ML canggih di tahap awalForecast awal menggunakan metode manual & linear, ML ditambahkan kemudian
Integrasi sensor hanya untuk unit tertentuPilot dilakukan di unit yang sudah memiliki sensor & gateway MQTT

  • 📚 Referensi Pendukung

  • Dokumen ERD & Struktur Data mx-core-metric

  • Studi kasus penggunaan KPI di Maintenance, Produksi, dan K3

  • Rencana strategis korporat terkait digitalisasi performa dan dashboardisasi

  • Standar ISO 22400 (Key Performance Indicators for Manufacturing Operations)


📘 2. SRS – Software Requirement Specification


📌 1. Tujuan Dokumen

Dokumen ini menjabarkan kebutuhan teknis sistem mx-core-metric yang akan dikembangkan. Dokumen ini menjadi rujukan utama bagi tim teknis (developer, QA, devops) dalam proses desain, implementasi, dan pengujian.


📦 2. Ruang Lingkup Sistem

mx-core-metric adalah plugin dalam monorepo mx-core yang berfungsi sebagai platform pengelolaan Key Performance Indicator (KPI) lintas departemen dan unit operasional. Fitur utama sistem ini mencakup:

  • Perencanaan KPI tahunan dan breakdown ke target periodik
  • Input dan pencatatan capaian aktual KPI
  • Pencatatan gangguan operasional (disturbance)
  • Forecasting capaian KPI akhir tahun
  • Dashboard performa & insight gangguan
  • Dukungan integrasi sensor melalui MQTT

📚 3. Definisi dan Akronim

Istilah/AkronimDefinisi
KPIKey Performance Indicator – indikator kinerja yang terukur
ForecastPrediksi capaian akhir berdasarkan data historis
MQTTMessage Queue Telemetry Transport – protokol komunikasi lightweight untuk IoT
IoTInternet of Things – integrasi perangkat fisik dan sistem digital
DisturbanceGangguan operasional yang dapat memengaruhi KPI
UnitSub-divisi atau lokasi fisik dalam departemen
Granular TargetTarget KPI dengan resolusi waktu lebih kecil (bulanan, mingguan, harian)

📈 4. Deskripsi Umum Sistem

  • 🧭 Alur Sistem:
  1. Perencanaan KPI: Ditentukan setahun sekali, terdiri dari target tahunan per departemen/unit.
  2. Breakdown Target: Target tahunan dipecah ke periode lebih kecil (bulan, minggu, hari).
  3. Input Capaian Aktual: User atau sistem mencatat capaian aktual pada periode berjalan.
  4. Gangguan Operasional: Dicatat sebagai disturbance, bisa dihubungkan ke KPI tertentu.
  5. Forecast Otomatis: Sistem menghitung estimasi capaian akhir tahun secara otomatis.
  6. Dashboard Monitoring: Menyediakan visualisasi KPI, forecast, deviasi, dan insight gangguan.

⚙️ 5. Fungsi Sistem (Functional Requirements Overview)

Berikut daftar kebutuhan fungsional sistem mx-core-metric:

IDNama FiturDeskripsi Singkat
FR-01Manajemen KPI MasterCRUD master KPI (nama, jenis, satuan, aktif/tidak)
FR-02Penetapan Target KPI TahunanUser menetapkan target tahunan tiap KPI
FR-03Breakdown Target PeriodikTarget tahunan dibagi ke target bulanan/mingguan/harian (otomatis/manual)
FR-04Input Capaian Aktual KPIInput nilai aktual KPI per periode (manual/sensor/import)
FR-05Pencatatan Gangguan (Disturbance)Input gangguan berdasarkan sumber, kategori, durasi
FR-06Link Gangguan ke KPIHubungkan disturbance dengan KPI tertentu untuk analisis dampak
FR-07Forecast Capaian OtomatisPrediksi capaian akhir tahun berdasarkan trend data aktual
FR-08Visualisasi DashboardTampilan KPI vs target, forecast, deviasi, dan gangguan per unit/departemen
FR-09Role Management & AksesRole-based access: admin, department head, operator
FR-10Integrasi Sensor IoT via MQTTSistem menerima data aktual dari perangkat IoT dan mencatat ke kpi_record
FR-11Logging & Audit TrailMencatat semua perubahan data penting (created_by, updated_by, timestamp, dll)
FR-12Export & LaporanEkspor data KPI, forecast, dan gangguan ke format Excel/CSV/PDF

🔐 6. Non-Functional Requirements (NFR)

IDKebutuhanDetail
NFR-01AvailabilitySistem tersedia 24/7 dengan uptime ≥ 99.5%
NFR-02ScalabilityDapat menangani pertumbuhan KPI & unit tanpa degradasi performa
NFR-03Security & Access ControlRole-based access, autentikasi token/jwt, audit trail semua aktivitas
NFR-04PerformanceDashboard harus memuat dalam LT 2 detik untuk 100 KPI aktif
NFR-05Data IntegrityValidasi ketat pada input dan keterkaitan antar entitas (foreign key)
NFR-06Latency Integrasi IoTData dari MQTT → record masuk ke DB dalam waktu ≤ 3 detik
NFR-07Backup & RecoveryBackup harian, kemampuan rollback data hingga 7 hari kebelakang

7. Batasan Sistem

KodeBatasan
BL-01Sistem belum mendukung visualisasi geografis atau peta unit
BL-02Tidak semua gangguan otomatis berdampak pada KPI, perlu link manual
BL-03Prediksi masih berbasis linear/manual, belum pakai ML kompleks
BL-04Belum mendukung offline input (harus via online/web UI/API)
BL-05Input sensor hanya mendukung format MQTT JSON tertentu (predefined)

  • Ringkasan Output Tahap Ini
  • Tujuan dan ruang lingkup sistem terdefinisi
  • Kebutuhan fungsional (FR-01 s.d FR-12) terdokumentasi
  • Kebutuhan non-fungsional (availability, security, performance, dll)
  • Batasan sistem dijelaskan agar ekspektasi terukur

📌 1. Use-Case List

Use-Case IDNama Use-CaseAktorFR/NFR/BL Terkait
UC-001Manajemen Master KPIAdminFR-01, NFR-03
UC-002Penetapan Target KPI TahunanDept Head/AdminFR-02, NFR-03
UC-003Breakdown Target PeriodikDept Head/AdminFR-03, NFR-05, BL-03
UC-004Input Capaian Aktual KPIOperator/System (sensor)FR-04, FR-10, NFR-06
UC-005Input Gangguan OperasionalOperatorFR-05, NFR-05
UC-006Hubungkan Gangguan ke KPIDept Head/AnalystFR-06, BL-02
UC-007Proses Forecast OtomatisSystemFR-07, NFR-04, BL-03
UC-008Visualisasi Dashboard KPISemua user (viewer/admin)FR-08, NFR-04
UC-009Manajemen Role & Hak AksesAdminFR-09, NFR-03
UC-010Terima Data Sensor via MQTTSystem (MQTT broker)FR-10, NFR-06, BL-05
UC-011Audit Trail Perubahan DataSystemFR-11, NFR-03
UC-012Ekspor Data & LaporanUser/ManajemenFR-12, NFR-04

📑 2. Use-Case Detail (Narratif)

Berikut beberapa use-case utama yang mewakili seluruh FR dan NFR:


  • 🟦 UC-001 — Manajemen Master KPI
ElemenDeskripsi
Use-Case IDUC-001
AktorAdmin
DeskripsiAdmin membuat, mengubah, dan menonaktifkan master data KPI
Pre-conditionUser memiliki hak akses Admin
Post-conditionData KPI aktif siap digunakan pada target dan record
Alur Utama1. Admin login → 2. Akses modul KPI → 3. Tambah/edit/hapus KPI
ExceptionData duplikat, referensi digunakan di target/record
Relasi FR/NFRFR-01, NFR-03

  • 🟨 UC-003 — Breakdown Target Periodik
ElemenDeskripsi
Use-Case IDUC-003
AktorAdmin / Dept Head
DeskripsiUser membagi target tahunan menjadi target periodik
Pre-conditionTarget tahunan sudah tersedia
Post-conditionTarget periodik tersimpan dan ditautkan ke target tahunan
Alur Utama1. Pilih KPI tahunan → 2. Pilih metode (otomatis/manual) → 3. Simpan
ExceptionPeriode tumpang tindih, nilai tidak proporsional
RelasiFR-03, NFR-05, BL-03

  • 🟩 UC-004 — Input Capaian Aktual KPI (Manual & Sensor)
ElemenDeskripsi
Use-Case IDUC-004
AktorOperator / System (IoT Gateway)
DeskripsiSistem atau user menginput nilai aktual capaian KPI
Pre-conditionKPI & target periodik sudah terdaftar
Post-conditionCapaian aktual tercatat dan siap digunakan untuk forecasting
Alur Utama1. Input manual → atau MQTT publish → 2. Validasi → 3. Simpan
ExceptionFormat data tidak valid, referensi KPI tidak ditemukan
RelasiFR-04, FR-10, NFR-06, BL-05

  • 🟥 UC-007 — Forecast Capaian Otomatis
ElemenDeskripsi
Use-Case IDUC-007
AktorSistem
DeskripsiSistem menghitung estimasi akhir tahun dari data capaian historis
Pre-conditionMinimal 2 data historis tersedia
Post-conditionData forecast tersedia di dashboard dan kpi_forecast
Alur Utama1. Cron jalan → 2. Ambil data historis → 3. Hitung → 4. Simpan forecast
ExceptionTidak ada data historis, metode belum tersedia
RelasiFR-07, NFR-04, BL-03

  • 🟪 UC-008 — Visualisasi Dashboard KPI & Gangguan
ElemenDeskripsi
Use-Case IDUC-008
AktorSemua pengguna
DeskripsiUser mengakses tampilan performa KPI, deviasi, gangguan, dan forecast
Pre-conditionData KPI, disturbance, dan forecast tersedia
Post-conditionInsight ditampilkan dalam format grafik & tabel
Alur Utama1. User login → 2. Pilih dashboard → 3. Lihat summary dan detail
ExceptionData kosong, gagal fetch API backend
RelasiFR-08, NFR-04

  • 🟨 UC-009 — Manajemen Role & Hak Akses
ElemenDeskripsi
Use-Case IDUC-009
AktorAdmin
DeskripsiAdmin mengelola peran pengguna dan hak akses berdasarkan peran (role-based)
Pre-conditionUser sudah terdaftar sebagai user aktif
Post-conditionRole pengguna ditentukan, membatasi akses fitur tertentu
Alur Utama1. Admin login → 2. Akses modul user → 3. Atur role (viewer/operator/admin)
ExceptionAkses tanpa role, konflik hak akses
Relasi FR/NFRFR-09, NFR-03

  • 🟩 UC-010 — Terima Data Sensor via MQTT
ElemenDeskripsi
Use-Case IDUC-010
AktorSystem (MQTT broker / IoT Gateway)
DeskripsiSistem menerima payload JSON dari perangkat sensor via protokol MQTT
Pre-conditionSensor aktif, format payload sesuai skema
Post-conditionNilai otomatis disimpan ke kpi_record dengan source: "sensor"
Alur Utama1. Sensor publish → 2. MQTT Gateway menerima → 3. Format diverifikasi → 4. Insert ke DB
ExceptionPayload invalid, timeout koneksi MQTT
RelasiFR-10, NFR-06, BL-05

  • 🟥 UC-011 — Audit Trail Perubahan Data
ElemenDeskripsi
Use-Case IDUC-011
AktorSistem (otomatis)
DeskripsiSistem mencatat setiap perubahan data penting untuk keperluan audit
Pre-conditionOperasi data dilakukan oleh user/sensor
Post-conditionData tersimpan dalam bentuk log/audit trail dengan identitas user
Alur Utama1. User/sensor melakukan perubahan → 2. Sistem simpan log created_by, updated_by, timestamp
ExceptionAkses tanpa otorisasi, data tidak lengkap
RelasiFR-11, NFR-03

  • 🟦 UC-012 — Ekspor Data & Laporan
ElemenDeskripsi
Use-Case IDUC-012
AktorUser (Admin / Dept Head / Viewer)
DeskripsiUser mengekspor data KPI, forecast, dan gangguan dalam format CSV/PDF/Excel
Pre-conditionData sudah tersedia dan terfilter sesuai kriteria user
Post-conditionFile unduhan berhasil dihasilkan dan tersedia
Alur Utama1. User pilih tipe data → 2. Filter periode/departemen/unit → 3. Klik ekspor
ExceptionData kosong, gagal generate file
RelasiFR-12, NFR-04

📌 Traceability Matrix

FR / NFR / BLUse-Case IDKeterangan Singkat
FR-01UC-001Master KPI
FR-02UC-002Target tahunan
FR-03UC-003Breakdown periodik
FR-04UC-004Input capaian manual
FR-05UC-005Input gangguan
FR-06UC-006Link disturbance ke KPI
FR-07UC-007Forecast sistem
FR-08UC-008Dashboard
FR-09UC-009Role-based access
FR-10UC-010MQTT sensor input
FR-11UC-011Audit trail
FR-12UC-012Export laporan
NFR-01–07UC-001–012Diterapkan lintas use-case
BL-01-Belum dukung visualisasi geografis
BL-02UC-006Gangguan → KPI butuh link manual
BL-03UC-003,007Forecast masih linear/manual
BL-04-Tidak mendukung input offline
BL-05UC-010Format sensor MQTT terbatas

🔼 Prioritas Pengembangan (MoSCoW)

Berikut adalah versi terbaru dan lengkap:

PrioritasModul/FungsiFR / UC TerkaitKeterangan
MustManajemen Master KPIFR-01 / UC-001Fitur dasar sebagai fondasi semua target & record KPI
MustPenetapan Target KPI TahunanFR-02 / UC-002Fondasi perencanaan tahunan KPI
MustBreakdown Target PeriodikFR-03 / UC-003Membagi target tahunan ke bulanan/mingguan/harian
MustInput capaian aktual KPI (manual + sensor/IoT)FR-04, FR-10 / UC-004, UC-010Inti dari sistem pengukuran performa KPI
MustForecast capaian akhir tahunFR-07 / UC-007Menyediakan prediksi real-time berbasis data historis
MustVisualisasi dashboard performa dan deviasi KPIFR-08 / UC-008Wadah utama manajemen melihat insight capaian
ShouldPencatatan gangguan operasional (disturbance)FR-05 / UC-005Menyediakan konteks penyebab deviasi performa
ShouldLink gangguan ke KPI tertentuFR-06 / UC-006Memberi analisis dampak terhadap KPI
ShouldEkspor laporan dan data KPIFR-12 / UC-012Mempermudah pelaporan offline / backup
CouldRole management & akses kontrolFR-09 / UC-009Berguna untuk skala besar, tapi bisa default 1 level dulu
CouldAudit trail aktivitas dataFR-11 / UC-011Penting untuk traceability, bisa menyusul jika fase awal kecil
Won’tIntegrasi AI/ML forecasting lanjutan (di luar linear)- / (BL-03)Disimpan untuk fase pengembangan selanjutnya

🎯 3. System Design

Tahap System Design bertujuan untuk menerjemahkan semua kebutuhan sistem (FR, NFR, UC, BL) menjadi bentuk arsitektur teknis yang siap diimplementasikan. System Design memastikan bahwa:

  • Semua kebutuhan telah dipetakan ke komponen dan modul sistem
  • Arsitektur sistem dibuat agar modular, scalable, maintainable
  • Desain teknis disusun hingga ke level implementasi database, API, dan logika bisnis

  • 🔧 Substruktur System Design

System Design dibagi menjadi dua level utama:

BagianNamaTujuan Utama
🔷High-Level Design (HLD)Mendeskripsikan sistem secara global dan modular
🔶Low-Level Design (LLD)Mendeskripsikan detail teknis seperti database, algoritma, dan API schema

  • 🗂️ Konten High-Level Design (HLD)
BagianPenjelasan
Arsitektur ModularModul utama sistem dan tanggung jawabnya
Diagram Arsitektur SistemIlustrasi visual atau teks arsitektur
Alur KomunikasiInteraksi antar modul, protokol, arah data
Flow Autentikasi & RoleModel otorisasi dan peran pengguna
Integrasi EksternalSistem eksternal seperti MQTT, IoT device, SSO
Pemetaan ke SRSMenunjukkan bahwa semua FR/NFR/UC/BL terakomodasi

  • 📂 Konten Low-Level Design (LLD)
BagianPenjelasan
Entity Relationship Diagram (ERD)Struktur data dan relasi antar tabel dari sistem KPI
Data DictionaryDeskripsi tiap kolom/tabel, tipe data, constraint, dsb
Skema API (REST / GraphQL)Endpoint, payload, dan response yang digunakan
Algoritma ForecastingFormula dan metode logika perhitungan prediksi capaian KPI
Konfigurasi MQTT & Format PayloadFormat pesan sensor IoT, topik MQTT, dan validasi payload

  • 🧠 Validasi System Design terhadap SRS

System Design (baik HLD maupun LLD nanti) harus memenuhi semua elemen berikut:

TipeDivalidasi dalamStatus
Functional Req (FR)Modul dan API✅ Sudah ditetapkan di HLD
Non-Functional Req (NFR)Security, performance, integrasi✅ Dicakup
Use-Case (UC)Modul & Alur UI-Backend✅ Telah dipetakan
Batasan (BL)Dikenali dan disikapi✅ Diantisipasi di arsitektur

🔷 3.1. High-Level Design (HLD) → kita bahas sekarang

Tujuan dari High-Level Design (HLD) adalah memberikan gambaran arsitektur sistem secara modular, hubungan antar komponen, serta alur komunikasi dan integrasi — berdasarkan kebutuhan yang telah ditentukan di SRS (FR, NFR, BL, UC).


  • 🔷 1. Tujuan High-Level Design
  • Mendeskripsikan arsitektur sistem mx-core-metric secara modular
  • Menjelaskan komponen utama, relasi, dan alur data
  • Mendasari pengambilan keputusan desain teknis di LLD nanti

  • 🧩 2. Komponen Utama Sistem

Sistem mx-core-metric memiliki beberapa sub-komponen modul yang saling terhubung, dengan tanggung jawab sebagai berikut:

ModulDeskripsi Singkat
KPI ManagementManajemen master KPI, jenis, satuan, dan status aktif
Target PlannerMenangani input target tahunan dan breakdown ke target periodik
KPI RecorderMencatat capaian aktual KPI dari user/manual, import, atau sensor IoT
Disturbance ManagerPencatatan gangguan dan link ke KPI tertentu
Forecast EngineProses perhitungan estimasi capaian akhir tahun
Dashboard & AnalyticsMenyediakan tampilan visual KPI, deviasi, gangguan, forecast
User & Role ManagerManajemen user, autentikasi, dan hak akses
MQTT Data IngestorPenerimaan dan parsing data dari sensor via MQTT
Audit LoggerLogging otomatis untuk semua transaksi kritikal
Reporting ModuleEkspor data dan laporan ke Excel/CSV/PDF

  • 🏗️ 3. Diagram Arsitektur Modular
                                +-----------------------------+
                                |         User Interface      |
                                |     (Web Dashboard UI)      |
                                +-------------+---------------+
                                              |
              +-------------------------------+-----------------------------+
              |                                                             |
+---------------------------+                           +------------------+------------------+
|       REST API Gateway    |                           |        MQTT Broker (IoT)            |
|   (Next.js API Routes)    |                           |   [mosquitto / cloud-based MQTT]    |
+-------------+-------------+                           +----------+---------------------------+
              |                                                    |
   +----------+----------+                               +---------v----------+
   |     Application     |                               |    MQTT Ingestor   |
   |       Layer         |                               |  (Data Parser +    |
   |  (Nest.js service*) |                               |   Validator)       |
   +---+--------+--------+                               +---------+----------+
       |        |                                                  |
       |        |                                +-----------------+-----------------+
       |        |                                |                                   |
+------v+    +--v------+             +------------v------------+      +---------------v---------------+
|  KPI  |    | Target  |             |   KPI Recorder          |      |   Disturbance Manager        |
| Mgmt  |    | Planner |             | (Manual + Sensor Input) |      | (Logs, Source, Link to KPI)  |
+-------+    +---------+             +------------+------------+      +---------------+---------------+
                                                  |                                       |
                                                  |                                       |
                                     +------------v------------+             +------------v------------+
                                     |     Forecast Engine     |             |      Audit Logger        |
                                     | (Linear, Manual, Future |             | (Perubahan data penting) |
                                     |  ML-ready)              |             +---------------------------+
                                     +------------+------------+
                                                  |
                                      +-----------v-----------+
                                      |   Dashboard & Report  |
                                      +-----------------------+

Catatan:

  • Backend dapat menggunakan monolith Next.js API routes atau dipisah microservice (Nest.js)
  • MQTT listener bisa dijalankan sebagai service terpisah dengan worker/job scheduler

  • 🔗 4. Alur Komunikasi Sistem
KomunikasiProtokol/MetodeKeterangan
UI ↔ Backend APIHTTPS REST APIForm input KPI, target, disturbance, dll
Sensor ↔ MQTT BrokerMQTTSensor publish ke topic, misal kpi/update/unit-a
MQTT Broker ↔ IngestorMQTT subscriptionIngestor subscribe dan parsing payload JSON
Ingestor ↔ DatabaseORM / SQLMenyimpan nilai ke kpi_record, dengan source = "sensor"
Forecast Engine ↔ DBCronjob/Worker + SQL/ORMAmbil data kpi_record, hitung, lalu simpan ke kpi_forecast
Dashboard ↔ APIREST/GraphQLMenampilkan semua performa KPI, gangguan, forecast
Auth System ↔ FrontendToken-based (JWT/OAuth2)Autentikasi user & role-based access

  • 🔒 5. Security & Auth Flow
ElemenImplementasi
AuthToken-based auth (JWT) atau OAuth2 flow
Role AccessRole disimpan dalam session/token (admin/operator/viewer)
Audit TrailModul logger menyimpan created_by, updated_by, timestamp
MQTT AuthUsername/password auth di broker MQTT (opsional ACL)
Rate LimitingUntuk API dan MQTT listener agar tidak overload

  • 🌐 6. External Interface
Sistem EksternalJenis IntegrasiKeterangan
MQTT BrokerMQTT v3.1 / v5Ingest data dari sensor IoT
IoT SensorMQTT PublisherPerangkat publikasi payload JSON
Dashboard FrontendWeb App (Next.js)UI interaktif, menggunakan API internal
Export PDF/ExcelLibrary eksternalFile generator (contoh: jsPDF, ExcelJS)
SSO / Auth ProviderOAuth2 (opsional)Untuk user manajemen terpusat (jika enterprise)

  • 🧠 7. Pemetaan ke SRS

Semua bagian HLD ini sudah terpenuhi dan sesuai dengan SRS (FR/NFR/UC/BL):

KategoriReferensiPenjelasan
FRFR-01 s/d FR-12Semua fitur memiliki modul dan komunikasi terpetakan
NFRNFR-01 s/d NFR-07Dibahas melalui uptime, scalability, latency, auth, dan audit
UCUC-001 s/d UC-012Semua use-case tercermin dalam modul utama HLD
BLBL-01 s/d BL-05Batasan visualisasi, AI, format MQTT, dan offline telah dipertimbangkan

  • ✅ Ringkasan HLD
  • ✅ Arsitektur sistem modular sudah ditentukan
  • ✅ Komunikasi antar modul dan protokol eksternal jelas
  • ✅ Desain terbuka untuk integrasi dan bersifat scalable
  • ✅ Selaras dengan semua kebutuhan di SRS

  • 🎯 3.2 Low-Level Design (LLD)

Low-Level Design bertujuan untuk:

  • Menjabarkan detail teknis tiap modul berdasarkan HLD
  • Menyediakan spesifikasi implementasi untuk database, API, algoritma, dan integrasi
  • Memastikan semua kebutuhan fungsional (FR), non-fungsional (NFR), dan batasan (BL) dari SRS dapat diimplementasikan secara terukur dan konsisten

  • 🧱 1. Entity Relationship Diagram (ERD)

LLD ini mengacu penuh pada ERD yang telah Anda lampirkan sebelumnya (format dbdiagram.io). Berikut adalah ringkasannya dalam bentuk modul:

📂 Tabel Utama: KPI & Target

TabelModul HLD TerkaitDeskripsi Fungsi
kpiKPI ManagementMaster data KPI
kpi_target_annualTarget PlannerTarget tahunan KPI
kpi_targetTarget PlannerBreakdown ke periodik (monthly, dll)
kpi_recordKPI RecorderInput capaian aktual
kpi_forecastForecast EngineHasil prediksi capaian akhir tahun

📂 Tabel Gangguan

TabelModul HLD TerkaitDeskripsi Fungsi
disturbance_logDisturbance ManagerGangguan operasional
disturbance_sourceDisturbance ManagerMaster sumber gangguan

📂 Tabel Organisasi & User

TabelModul HLD TerkaitDeskripsi Fungsi
unitUser Context ManagerUnit fisik dalam organisasi
departmentUser Context ManagerDepartemen induk

  • 📖 2. Data Dictionary (Contoh)

Berikut cuplikan struktur field-level yang relevan untuk pengembangan:

🔹 Tabel kpi_record

FieldTipe DataDeskripsi
idvarchar (pk)Primary key
kpi_idvarcharFK ke kpi
department_idvarcharFK ke department
unit_idvarcharFK ke unit
periodedateTanggal pencapaian
valuefloatNilai aktual (sesuai jenis KPI)
notevarcharCatatan tambahan
sourceenum'manual''sensor''imported'
created_byvarcharUser pencatat / sistem IoT
created_atdatetimeTimestamp

  • 🌐 3. Skema API (REST API)

Sesuai dengan arsitektur HLD (Next.js API / Nest.js), berikut contoh endpoint utama:

🔹 POST /api/kpi-record

DeskripsiMencatat capaian KPI manual atau dari sensor
Payload Example
{
  "kpi_id": "kpi-001",
  "unit_id": "unit-a",
  "department_id": "dept-prod",
  "periode": "2025-12-01",
  "value": 9500,
  "source": "manual",
  "note": "Capaian minggu ke-1",
  "created_by": "user-001"
}

| Response |

{
  "status": "success",
  "data": {
    "id": "record-12345"
  }
}

🔹 POST /api/mqtt-ingest

| Deskripsi | Endpoint untuk menerima payload dari MQTT listener (internal call) | | Payload |

{
  "topic": "kpi/update/unit-a",
  "payload": {
    "kpi_id": "kpi-001",
    "value": 480,
    "periode": "2025-12-02",
    "source": "sensor"
  }
}

🔹 GET /api/dashboard/summary

| Fungsi | Mendapatkan ringkasan KPI vs target untuk dashboard | | Query Params | periode, unit_id, department_id | | Response Example |

{
  "target": 10000,
  "actual": 9500,
  "achievement_percent": 95,
  "status": "warning"
}

  • 🧠 4. Algoritma Forecasting

Modul Forecast Engine akan menjalankan perhitungan otomatis dengan metode:

📌 Default Method: Linear Projection

/**
 * Linear Forecast
 * @param actuals Array of past values with known time delta (weekly/monthly)
 * @param currentIndex Index of current period (e.g. month 8 of 12)
 */
function forecastLinear(actuals: number[], currentIndex: number): number {
  const sum = actuals.reduce((a, b) => a + b, 0);
  const avg = sum / currentIndex;
  const projectedTotal = avg * 12;
  return projectedTotal;
}

Catatan:

  • Untuk NFR forecast cepat, algoritma ini sangat ringan
  • Di masa depan bisa diganti dengan regression, LSTM, dsb (sesuai roadmap)

  • 🧪 5. Validasi Payload Sensor (MQTT Format)

| Format MQTT Payload (JSON) | Topik: kpi/update/{unit} |

{
  "kpi_id": "kpi-001",
  "value": 123.45,
  "periode": "2025-12-10"
}
Validasi saat diterima:
✅ Apakah kpi_id valid?
✅ Apakah periode dalam format ISO?
✅ Apakah value numerik?
✅ Apakah unit/kpi aktif?

Jika tidak valid → reject & log error


  • ⚙️ 6. MQTT Listener Design
  • Broker: Bisa pakai Mosquitto atau MQTT Cloud (e.g. HiveMQ, EMQX)
  • Topik Standar: Format: kpi/update/{unit_id} Payload: JSON (sesuai skema di atas)
  • Processor: Listener subscribe ke topik, validasi, lalu simpan ke DB

  • 🔐 7. Konfigurasi Role & Logging
RoleHak Akses Modul
AdminSemua modul
Dept HeadKPI & Target di departemen tertentu
OperatorInput capaian & gangguan
ViewerRead-only akses dashboard & laporan

| Logging | Entitas yang dilog: kpi_record, target, forecast, disturbance |


  • ✅ Sinkronisasi LLD dengan HLD & SRS
ElemenDipetakan dalam LLD
FR-01 s/d 12CRUD API, struktur data, relasi
NFR-01 s/d 07Latency MQTT, security, scalability
UC-001–012Setiap modul terwakili
BL-01 s/d 05Dihindari / ditangani (misal BL-03: forecasting linear, BL-05: validasi MQTT format)

  • 📦 Ringkasan Output LLD

✅ Struktur tabel dan field lengkap (ERD & data dictionary) ✅ API endpoint & payload lengkap untuk tiap fungsi utama ✅ Algoritma forecast sudah ditentukan ✅ Format dan arsitektur integrasi sensor via MQTT ✅ Role access dan audit trail siap diimplementasikan


🎯 4. Implementation (Coding)

Tahap ini menerjemahkan semua desain dari HLD dan LLD menjadi kode sumber nyata, melalui struktur kerja yang terorganisasi dan dapat ditinjau. Tahap ini juga menjadi dasar untuk penentuan milestone sprint, pengelolaan repositori, dan distribusi tugas tim dev.


1️⃣ Setup Repositori (Git)

  • 📁 Struktur Direktori (Monorepo – Plugin mx-core-metric)

Karena mx-core-metric adalah submodul dari monorepo mx-core, maka struktur awalnya mengikuti standar plugin:

mx-core/
├── apps/
│   ├── dashboard/Aplikasi utama (Next.js Web UI)
│   └── api/Next.js API routes (jika monolith)
├── packages/
│   ├── mx-core-metric/Plugin KPI & metric (kode kita)
│   └── mx-core-auth/Plugin lain (misal: auth, user)
├── libs/Library bersama (utils, UI kit, dsb)
└── .github/CI/CD, workflows
  • 🔧 Naming Repositori Internal
  • Package Name: @mx-core/metric
  • Folder Path: packages/mx-core-metric
  • Namespace: metric, dengan ekspor modular (e.g. metric.api, metric.forecast, metric.utils)
  • 🛠️ Inisialisasi Repositori
  • Git branch default: main

  • Branch protection: ✔ PR required, ✔ review 1x

  • Template commit: Conventional Commits

    • feat(metric): add forecast calculation
    • fix(metric): validate MQTT payload before insert
  • Setup tool: turbo (untuk monorepo builder)


2️⃣ Coding by Module/Sprint

  • 📆 Sprint Breakdown (Rekomendasi: 2 minggu/sprint)
SprintFokus ModulFR/UC Terkait
S1KPI Master, Target TahunanFR-01, FR-02, UC-001, UC-002
S2Breakdown Target PeriodikFR-03, UC-003
S3Input KPI ManualFR-04, UC-004
S4MQTT Ingestion + Input SensorFR-10, UC-010
S5Forecast EngineFR-07, UC-007
S6Gangguan Operasional + Link ke KPIFR-05, FR-06, UC-005, UC-006
S7Dashboard Viewer & SummaryFR-08, UC-008
S8Export & ReportingFR-12, UC-012
S9Role, Auth, LoggingFR-09, FR-11, UC-009, UC-011
  • 📦 Struktur Modular Package (Coding Level)

Dalam packages/mx-core-metric:

mx-core-metric/
├── src/
│   ├── api/API handler per endpoint
│   ├── services/Logic per modul (forecast, record, etc)
│   ├── models/Tipe data (TypeScript) dan skema DB
│   ├── utils/Helper functions
│   └── config/Config MQTT, forecast, dsb
├── tests/Unit & integration tests
├── README.md
├── tsconfig.json
└── package.json
  • 📌 Contoh Modul Sprint: Forecast Engine
  • Lokasi: src/services/forecast/linear.ts
  • Tipe: manual, linear, dan disiapkan untuk ml_model
  • Dipanggil dari: src/api/forecast.ts
export function forecastLinear(
  actuals: number[],
  currentIndex: number
): number {
  const sum = actuals.reduce((a, b) => a + b, 0);
  const avg = sum / currentIndex;
  return avg * 12;
}

✅ 3️⃣ Kode Mengacu pada LLD

  • 🧩 1. Acuan Data Model & Tipe Data

✅ Kode sumber menggunakan model TypeScript yang merepresentasikan entitas dari ERD:

// src/models/KpiRecord.ts
export interface KpiRecord {
  id: string;
  kpi_id: string;
  unit_id: string;
  department_id: string;
  periode: string; // ISO 8601
  value: number;
  source: 'manual' | 'sensor' | 'imported';
  note?: string;
  created_by: string;
  created_at: string;
}

🟢 Sesuai dengan LLD → Data Dictionary → Table kpi_record


  • 🔧 2. Validasi Input Sesuai Spesifikasi LLD

Setiap endpoint (manual maupun MQTT) wajib validasi schema sebelum insert/update.

✅ Contoh: Validasi payload POST /api/kpi-record:

import { z } from 'zod';

const kpiRecordSchema = z.object({
  kpi_id: z.string().min(1),
  unit_id: z.string().min(1),
  department_id: z.string().min(1),
  periode: z.string().refine((val) => !isNaN(Date.parse(val)), {
    message: 'Invalid date format',
  }),
  value: z.number(),
  source: z.enum(['manual', 'sensor', 'imported']),
  note: z.string().optional(),
  created_by: z.string().min(1),
});

export type KpiRecordInput = z.infer<typeof kpiRecordSchema>;

🟢 Ini sesuai dengan LLD → API Schema & Validasi Payload MQTT


  • 📊 3. Penerapan Algoritma Forecast Sesuai LLD

✅ Implementasi kalkulasi linear projection:

// src/services/forecast/linear.ts
export function forecastLinear(values: number[], currentIndex: number): number {
  const sum = values.reduce((a, b) => a + b, 0);
  const avg = sum / currentIndex;
  return avg * 12;
}
  • Sudah sesuai dengan algoritma yang didefinisikan di LLD
  • Forecast siap dipanggil via scheduler atau cron

  • 🌐 4. Endpoint Sesuai Spesifikasi API LLD
EndpointTipeSesuai LLD
POST /api/kpi-recordManual Entry KPI
POST /api/mqtt-ingestMQTT data push
GET /api/dashboard/summaryRingkasan KPI

Semua endpoint memanfaatkan input schema, response handler, dan ORM layer yang mengacu ke model LLD


  • 🔐 5. Role & Auth Flow Sesuai LLD
  • ✅ Role di-inject dari token JWT
  • ✅ Role digunakan untuk gate API (e.g. hanya admin bisa input KPI tahunan)
// Middleware (pseudo)
if (user.role !== 'admin') {
  return res.status(403).json({ error: 'Forbidden' });
}

🟢 Sesuai dengan LLD → Role Access dan NFR-03


🗂️ 6. Modularisasi File Sesuai Struktur HLD & LLD

  • Modul services/, api/, models/, utils/, dan config/ digunakan sesuai fungsinya
  • Struktur kode mengikuti struktur modular HLD
  • Memudahkan pengujian dan refactor per modul

  • 🔄 7. Traceability dari FR/UC ke Kode
FR / UCModul & File yang Diimplementasi
FR-01 / UC-001services/kpi.ts, models/Kpi.ts
FR-04 / UC-004api/kpi-record.ts, services/record.ts
FR-10 / UC-010api/mqtt-ingest.ts, services/mqtt.ts
FR-07 / UC-007services/forecast/linear.ts, api/forecast.ts
FR-09 / UC-009Middleware Auth, Role Guard

Semua fitur utama terhubung langsung ke SRS dan LLD


✅ 4️⃣ Versioning dan Dokumentasi

  • 🧭 Versioning Strategy (Git + Semver)
AspekStrategi Implementasi
VCSGit (GitHub / GitLab)
Branchingmain, dev, feature/*, bugfix/*
TaggingSemantic Versioning (SemVer) → v1.0.0, v1.1.0, dll
ReleaseDirilis berdasarkan tag & CI pipeline
  • 🚀 Semantic Versioning (SemVer)
VersiKapan digunakan
MAJORPerubahan besar / breaking changes
MINORPenambahan fitur tanpa merusak existing
PATCHPerbaikan bug atau perbaikan kecil

  • 📚 Dokumentasi Kode

✅ Disusun per modul dalam folder docs/ atau dalam file README.md tiap direktori:

Lokasi FileIsi
docs/forecast.mdPenjelasan algoritma, input/output, metode linear
docs/mqtt-ingest.mdFormat payload, validasi, error handling
README.md rootDeskripsi plugin mx-core-metric, struktur folder

📌 Format dokumentasi: Markdown, ditulis ringkas dan fokus pada integrasi + pemakaian


✅ 5️⃣ Code Review & Integration Checklist

  • 🧩 Pull Request Workflow
LangkahChecklist
⬆️ PR dibuatDari feature/* ke dev
👀 Reviewer ditugaskan1–2 orang (minimal 1 reviewer)
✅ Checklist PR- Deskripsi jelas - Link ke FR/UC - Lolos unit test
🔒 Proteksi branchTidak bisa merge langsung ke main tanpa review
  • ✅ Integration Checklist
AreaChecklist
⬜ Modul terhubung antar APIEndpoint saling panggil berhasil
⬜ Validasi input JSON dan response APISesuai schema (Zod / Yup)
⬜ Forecast dapat dijalankan otomatis (manual trigger/cron)
⬜ MQTT listener bisa terima payload validPayload masuk DB dengan status OK
⬜ Role-based access jalanTes akses admin vs viewer
⬜ Audit trail tercatatCreated_by, updated_at, dsb

📌 Checklist ini dijalankan oleh tim dev sebelum lanjut ke testing/UAT


✅ 6️⃣ Output: Source Code Versi Alpha

  • 🚧 Kriteria Versi Alpha
KriteriaStatus
Seluruh FR prioritas “Must” sudah ada
Endpoint API utama sudah tersedia
DB schema stabil dan siap migrasi
MQTT listener menerima data
Forecast dapat dijalankan (manual/auto)
Role dan auth berjalan sesuai peran
Dokumentasi awal tersedia

📌 Versi Alpha ini bisa diberi tag: v0.1.0-alpha


🧠 Keterkaitan dengan SRS, HLD, dan LLD

DokumenStatus Integrasi dalam Implementasi
SRS (FR, UC)✅ Semua FR/UC diterjemahkan jadi modul/kode
HLD✅ Semua komponen modular diimplementasikan
LLD✅ Semua struktur data, API, dan algoritma dipakai sesuai desain

📘 **5 Testing **


🎯 Tujuan:

Memastikan sistem mx-core-metric berjalan sesuai SRS dan Use-Case Validasi dilakukan secara bertahap, dari unit terkecil (fungsi) hingga keseluruhan sistem (UAT).

✅ 1. Unit Test

Menguji fungsi/method individual untuk memastikan logika berjalan sesuai ekspektasi.

  • Contoh Unit yang Diuji:
Fungsi / ModulPengujian
forecastLinear()Output sesuai dengan data historis
validateKpiRecordInput()Validasi semua field payload
calculateAchievementPercent()Hitung % capaian KPI dari target
parseMqttPayload()Format, nilai, tipe data
  • Tools:
  • Jest (untuk TypeScript)
  • Coverage target: ≥ 80% modul services/ dan utils/

✅ 2. Integration Test

Menguji interaksi antar modul: API ↔ DB, API ↔ Service, MQTT ↔ Handler.

  • Contoh Skenario:
Modul TerkaitPengujian
API POST /api/kpi-recordData tersimpan ke DB dan response benar
MQTT Listener → DBPayload valid masuk, invalid di-reject
Forecast Engine → Write ke DBHasil forecast tersimpan dan muncul di dashboard
Role-Based Access MiddlewareAkses dibatasi sesuai peran (admin/operator)
  • Tools:
  • Supertest untuk REST API
  • ts-mockito / msw untuk mocking service

✅ 3. System Test

Simulasi alur end-to-end berdasarkan Use-Case

  • Contoh Alur UC yang Diuji:
Use-Case IDNama Use-CaseAlur E2E yang Diuji
UC-004Input Capaian KPIForm input → Validasi → DB insert → Dashboard muncul
UC-007Forecast OtomatisData historis → Run forecast → Nilai muncul di dashboard
UC-006Link Gangguan ke KPIInput disturbance → Hubungkan ke KPI → Lihat deviasi
UC-010MQTT Data SensorPublish MQTT → Listener proses → DB record tercatat
  • Coverage:
  • Minimal 1 test untuk setiap UC prioritas Must dan Should
  • Fokus pada alur utama dan validasi kondisi sukses

✅ 4. User Acceptance Test (UAT)

Validasi oleh end-user bahwa sistem sesuai ekspektasi fungsional.

  • Pelaksanaan:
  • Peserta: Perwakilan dept. Maintenance, Produksi, K3

  • Format: Workshop + form checklist

  • Fokus:

    • Kemudahan input & navigasi
    • Visualisasi data KPI, forecast, gangguan
    • Sesuai terminologi dan struktur organisasi user
  • Form Checklist UAT:
Item yang DiujiSuksesCatatan
Input KPI manual
Forecast update otomatisForecast > real?
Capaian KPI per unit muncul benar
Link gangguan → KPI terlihat jelas⚠️Butuh tooltip
Export PDFFormat sudah rapi

🧠 Korelasi dengan SRS & UC

Jenis TesFR/UC yang Terkait
Unit TestFR-04, FR-07, FR-10
IntegrationFR-01 s/d FR-12
System TestUC-001 s/d UC-012
UATSemua FR prioritas Must & Should

📝 5️⃣ Test Plan

Rencana pengujian secara menyeluruh terhadap sistem mx-core-metric.

  • 📌 Struktur Test Plan
ElemenIsi
Nama Proyekmx-core-metric
Tujuan PengujianMemastikan sistem berjalan sesuai SRS & UC
Lingkup PengujianSemua modul: KPI, Target, Input, Forecast, MQTT, Dashboard, dsb
Jenis TestingUnit, Integration, System, UAT
Lingkungan PengujianEnv: staging-mx-core, DB clone production, MQTT test broker
Tools yang DigunakanJest, Supertest, Postman, MQTTBox, Google Sheet (UAT checklist)
Tim PengujianQA Engineer, Developer, Perwakilan User
Kriteria SuksesSemua test case prioritas MUST dan SHOULD lolos
Exit CriteriaTidak ada bug kritikal/blocker aktif

✅ 6️⃣ Test Case

Daftar skenario pengujian berdasarkan Use-Case & FR

  • 📋 Contoh Format Test Case (Tabel)
IDModulDeskripsi PengujianInputExpected ResultStatus
TC-001KPI RecordInput KPI manual validPayload JSONData tersimpan, response 200
TC-002KPI RecordInput KPI dengan value kosongPayload { value: "" }Response 400, pesan error muncul
TC-003Forecast EngineHitung forecast dari 6 bulan data historisvalues[]Output total forecast ≥ rata-rata × 12
TC-004MQTT IngestPayload valid dikirim dari sensorJSON via MQTTData masuk DB, status “sensor”
TC-005Auth MiddlewareUser tanpa role coba akses POST KPINo JWT / role: viewerResponse 403
TC-006Dashboard APIAmbil ringkasan KPIGET /dashboard/summaryOutput JSON dengan target, actual, %
TC-007Disturbance LinkGangguan dikaitkan ke KPIUI link → saveLink berhasil & muncul di dashboard
  • 📌 Kriteria:
  • Mapped ke UC dan FR

  • Harus cover:

    • Positive test
    • Negative test (validasi gagal)
    • Boundary (nilai ekstrem, null, 0, max float)
  • Status: ✅ = Lolos, ❌ = Gagal, ⚠ = Butuh review


🐞 7️⃣ Bug Log & Traceability Matrix

  • 🐞 Bug Log
Bug IDModulDeskripsiSeverityStatusDitemukan oleh
BUG-001ForecastForecast salah total jika data < 3MediumOpenQA
BUG-002MQTT IngestPayload gagal karena periode nullHighFixedDev
BUG-003Export PDFFormat kolom terpotong di mobileLowOpenUser
  • Tool: GitHub Issues / Linear / Notion

  • Severity:

    • Blocker: Tidak bisa lanjut proses
    • High: Gangguan fitur utama
    • Medium/Low: Tidak berdampak signifikan

  • 🔁 Traceability Matrix (SRS → Test Case)
FR/UCTest Case IDStatusKeterangan
FR-01 / UC-001TC-001Input KPI master
FR-04 / UC-004TC-001–002Input capaian manual
FR-10 / UC-010TC-004MQTT → Record
FR-07 / UC-007TC-003Forecast linear
FR-09 / UC-009TC-005Role-based access
FR-08 / UC-008TC-006Dashboard ringkasan
FR-06 / UC-006TC-007Link gangguan ke KPI

📌 Semua FR dan UC utama tercover dalam test case


🧩 8️⃣ Release Candidate (RC) Definition

  • 📦 Apa itu Release Candidate?

Versi kode yang dianggap feature-complete dan telah lolos semua pengujian kritikal, siap untuk:

  • Di-freeze (tidak ditambah fitur lagi)
  • Diuji regresi secara menyeluruh
  • Dideploy ke staging atau production (setelah approval)

  • Kriteria RC untuk mx-core-metric
KriteriaStatus
✅ Semua FR prioritas Must & Should selesai
✅ Semua UC utama diuji lewat system test
✅ Seluruh test case “Pass” atau minor issue saja
✅ Tidak ada bug blocker / severity high aktif
✅ MQTT ingestion stabil di staging
✅ Forecast engine menghasilkan output valid
✅ Role-based access diverifikasi
✅ Dokumentasi pengguna minimal sudah tersedia

📌 RC Tag: v1.0.0-rc.1


  • 🧪 Regresi & Final Check

Dilakukan untuk memastikan fitur-fitur eksisting tidak rusak akibat perubahan/penambahan terbaru.

Area yang Dites UlangStatus
Dashboard summary
Input KPI manual
Forecast update otomatis
MQTT payload → DB
Export PDF & CSV

📤 Output Tahap Testing

ItemStatus / File
✅ Test Plandocs/test-plan.md
✅ Test Casedocs/test-cases.xlsx / Notion Table
✅ Bug Logissues / Notion / Linear
✅ Traceability Matrixdocs/traceability.md
✅ Release Candidate Buildv1.0.0-rc.1 (tag di GitHub/CI/CD)
✅ UAT Form Checklist (user)Google Sheet / Notion / PDF signed

🧠 Keterkaitan dengan Tahap Sebelumnya

Dokumen ReferensiStatus Sinkron
SRS✅ Covered
HLD & LLD✅ Diimplementasi & Diuji
Implementation✅ Semua fitur diuji

📘 6 Deployment – mx-core-metric

Menyusun strategi dan checklist implementasi untuk meluncurkan sistem mx-core-metric ke production secara aman, terdokumentasi, dan dapat di-rollback jika diperlukan.

Deployment dilakukan dari hasil release candidate (v1.0.0-rc.1) yang telah lolos semua pengujian sebelumnya.

🔹 Checklist Deployment


✅ 1. Build & CI/CD Pipeline

ElemenRincian
Build Toolturbo (monorepo builder), next build, tsc
CI/CDGitHub Actions / GitLab CI
Lint & Test OtomatisSetiap push & PR menjalankan lint, typecheck, test
Build Artifact/dist, /out, dan image Docker untuk deploy
Docker Imagemx-core-metric:1.0.0-rc.1
Release TriggerManual deploy dari CI (dengan tag v1.0.0)

✅ 2. Environment Setup

LingkunganURL/HostTujuanCatatan
Devlocalhost, dev-mxPengujian internal devTidak stabil, semua fitur aktif
Stagingstg.mxcore.localUAT & simulasi productionMirror data production
Prodmxcore.domain.comLive untuk end-userStable, read-only di non-admin

Variabel Lingkungan (.env)

KunciContoh NilaiDeskripsi
DATABASE_URLpostgres://...DB utama
MQTT_BROKER_URLmqtt://broker.stg.localBroker sensor
FORECAST_METHODlinearDefault forecasting
AUTH_SECRETxxxxxJWT Signing Key
ENVIRONMENTdevelopment, staging, prodUntuk logging & mode

✅ 3. Backup & Rollback Plan

ElemenRencana
DatabaseBackup full dump via cron (pg_dump) sebelum deploy
App VersionImage Docker v1.0.0-rc.1 disimpan
Rollback PlanGunakan image versi sebelumnya (v0.9.3) jika gagal deploy
Log MonitoringPantau log error 24 jam pertama via Grafana, Loki, atau Sentry
AlertingIntegrasi ke Telegram/email jika error ≥ threshold tertentu

✅ 4. Dokumen Release Notes

Versiv1.0.0 (Initial Production)
Rilis Fitur- Input KPI manual dan sensor
           - Target tahunan dan periodik
           - Forecast capaian
           - Dashboard
           - Gangguan operasional & linking
           - Export PDF/CSV
           - Role & akses berbasis peran

| Perbaikan | - Validasi input ketat

  • Format payload MQTT
  • Error handling endpoint | Known Issue | - Belum ada notifikasi otomatis
  • Belum support forecasting berbasis ML

📄 File: RELEASE_NOTES_v1.0.0.md


✅ 5. Deployment Log

Disimpan otomatis oleh CI/CD dan/atau dicatat manual oleh DevOps:

TanggalVersiLingkunganStatusCatatan
2025-12-17v1.0.0-rc.1Staging✅ SuksesUAT selesai, siap ke prod
2025-12-18v1.0.0Production✅ SuksesDeployed dengan Docker
2025-12-19v1.0.0Production⚠ MinorCPU spike – forecast cron ditunda

📄 File: deployment-log.yaml


  • ✅ Output
ElemenStatus
✅ Aplikasi live di Production
✅ Versi dikunci (v1.0.0)
✅ Log & release note terdokumentasi
✅ Backup & rollback plan aktif

  • 🧠 Keterkaitan dengan SDLC Sebelumnya
TahapStatus Sinkron
SRS✅ Terimplementasi
HLD & LLD✅ Terwujud di infra & pipeline
Implementation✅ Code release version stabil
Testing✅ Release Candidate lulus UAT

📘 7 Maintenance & Support – mx-core-metric


🎯 Tujuan

Menjamin bahwa sistem mx-core-metric:

  • Berjalan secara berkelanjutan (sustain)
  • Adaptif terhadap kebutuhan pengguna
  • Mendapatkan perbaikan cepat jika terjadi kendala
  • Dapat ditingkatkan (scalable) tanpa mengganggu sistem yang sudah live

✅ 1. Monitoring Performance

🎯 Tujuan:

  • Deteksi dini terhadap penurunan performa sistem
  • Pemantauan uptime, latency, error rate

🔧 Tools & Praktik:

AspekImplementasi
Error LoggingSentry / LogRocket / Loki
Performance MetricsGrafana + Prometheus
Service HealthEndpoint /healthz + alert ke Telegram/email
Uptime MonitorStatusCake / Uptime Kuma / Pingdom
Resource MonitorNode exporter, PostgreSQL exporter

✅ 2. Patch & Bug Fix

🛠️ Prosedur:

  1. Bug dilaporkan via user / QA
  2. Tercatat di Bug Tracker (GitHub Issues / Notion)
  3. Diperbaiki dan di-merge ke branch hotfix/
  4. Rilis dengan tag vX.Y.Z-patch
  5. Update changelog & log deploy

SLA Target:

SeverityTarget ResponTarget Perbaikan
Blocker< 1 jam< 4 jam
High< 4 jam< 1 hari
Medium< 1 hari< 2 hari
Low< 2 hariDalam 3 hari

✅ 3. User Feedback Loop

📥 Sumber Feedback:

  • User lapangan (operator, supervisor)
  • Admin KPI
  • Manajemen (dashboard visibility, export)

🔄 Siklus Feedback:

  1. Kumpulkan → melalui form, survey, atau WA group user
  2. Triage → Tentukan apakah bug, usulan fitur, atau edukasi
  3. Simpan → Dalam backlog Notion atau board Linear
  4. Prioritaskan → Gunakan MoSCoW atau RICE score

📌 Contoh Feedback Nyata:

FeedbackAksi
“Filter per unit di dashboard kurang fleksibel”Tambahkan dropdown + autocomplete
“Forecast tidak akurat di Q4”Review metode & tambahkan model ML
“Perlu export Excel”Sudah diimplementasi v1.1.0

✅ 4. Model Retraining (Jika Menggunakan AI)

Untuk sistem forecast KPI berbasis tren, bisa berkembang ke ML-based forecasting

🧠 Pipeline Sederhana:

  1. Ambil data historis dari kpi_record
  2. Jalankan training setiap bulan (job cron)
  3. Simpan model terbaru
  4. Bandingkan hasil forecast ML vs Linear
  5. Gunakan yang terbaik

📌 Ini dapat menjadi fitur fase 2 (UC-013 / BL-03)


✅ 5. Feature Improvement Roadmap

Dirancang dari hasil UAT, feedback user, dan evaluasi sistem.

📅 Rencana Peningkatan (Sample Roadmap)

KuartalFitur / PerbaikanStatus
Q1Forecast ML (regression / LSTM)On Plan
Q1Notifikasi telegram untuk KPI kritisPlanned
Q2Integrasi sensor produksi tambahan (MQTT)Backlog
Q2Multi-language supportBacklog
Q3UI/UX refresh & dark modeOpen Idea

✅ Output: SLA & KPI Pemeliharaan

  • 📊 SLA (Service Level Agreement)
KategoriTarget
Availability≥ 99.5% uptime (bulanan)
Response Time≤ 2 detik rata-rata halaman
Bug ResponseSesuai tabel SLA patch di atas
  • 📈 KPI Maintenance Tim Dev
IndikatorTarget Bulanan
Bug resolved time (avg)< 24 jam
Uptime system> 99.5%
User feedback resolved≥ 90% feedback ditindak
Fitur baru dirilis (minor/patch)≥ 2 rilis per bulan

  • 🧠 Integrasi dengan Tahap SDLC Sebelumnya
ElemenStatus Sinkron
SRSDitetapkan sebagai acuan evaluasi
HLD/LLDJadi referensi saat bug fixing
TestingHasil UAT jadi masukan roadmap
DeploymentInfrastruktur monitoring & rollback aktif

  • ✅ Kesimpulan Tahap Maintenance
KomponenStatus
Monitoring dan alerting aktif
SLA & KPI terdefinisi
Feedback loop terjadwal
Perencanaan pengembangan berkelanjutan
Model retraining roadmap tersedia