Skip to content

[ND-183/LNSW.34/2026] Perbaikan Sequence Flag Single Billing COP Sinkarkes dan Eliminasi Log Status Redundan

Modul: Pengangkut | Tipe: Bugfix | Stage Saat Ini: DEVELOPMENT | Tanggal Dokumen: 2026-08-24


1. Informasi Tugas & Referensi Bisnis

  • Task ID / Nomor Referensi: ND-183/LNSW.34/2026
  • Sumber Instruksi: Nota Dinas Resmi ND-183/LNSW.34/2026
  • Dokumen Referensi / Lampiran: ND-183-LNSW.34-2026.pdf (diletakkan pada folder attachments/ jika ada)
  • Modul Terkait: Pengangkut
  • Service / Repository: pengangkut-backend
  • PIC Pengembang: Hermansyah Efendi
  • Latar Belakang & Ringkasan Kebutuhan: Berdasarkan evaluasi dan temuan anomali bisnis pada Nota Dinas ND-183/LNSW.34/2026 (rujukan No. Aju 101019B37E2D6):
    1. Ditemukan celah (bypass) pada alur layanan Sinkarkes dengan metode Single Billing: saat pengiriman pengajuan berstatus gagal, sistem sebelumnya tetap melakukan flagging isSingleBilling pada database. Akibatnya pengguna dapat langsung melanjutkan proses ke tahapan keberangkatan padahal pengajuan kedatangannya secara sistem masih gagal.
    2. Terdapat penambahan status "Proses Permintaan Tagihan" (kode 101) yang tidak diperlukan dalam alur berjalan, serta kesalahan logika pencatatan status "Tagihan Diterima" (kode 103/111) dari respons balikan Sinkarkes yang belum memiliki data billing riil. Secara proses bisnis, status tagihan diterima seharusnya hanya dicatat dari API /tagihan saat data tagihan aktual masuk ke sistem.
    3. Dilakukan evaluasi konsistensi data nomor registrasi kapal pada integrasi Sinkarkes terhadap database superset kapal.

2. Deployment Lifecycle

#EnvironmentTanggal & WaktuPICStatusCatatan
1Development2026-08-13 12:06Hermansyah EfendiDEPLOYEDBranch: development
2Staging (UAT)PENDING
3ProductionPENDING

Riwayat Update Log

TanggalEnvironmentPerubahanPIC
2026-08-24DevelopmentInisialisasi draft audit log dari context block backend (commit 349ec61b)Hermansyah Efendi

3. Analisis Teknis & Rincian Perubahan

  • Alur Logika & Bisnis:

    • Penutupan Celah Bypass Flag Billing: Urutan eksekusi pemanggilan updateFlagBillingWarta(idLayanan, isSingleBilling, 'karkes') dipindahkan ke dalam blok try setelah fungsi eksternal sendLayanan berhasil terkirim tanpa error. Apabila pengiriman gagal atau melempar exception, status flag di database tidak diperbarui, sehingga user dicegah melompati tahapan dari kedatangan ke keberangkatan.
    • Eliminasi Log Status Prematur & Redundan: Menghapus pencatatan status asynchronous (postStatusAsync) untuk kode status 101 (proses permintaan tagihan), 103 (tagihan diterima), dan 111 (penerbitan tagihan) pada RequestBillingService. Pencatatan status tagihan kini murni terisolasi dan hanya dipicu oleh webhook/endpoint API /tagihan saat payload tagihan riil diterima sistem.
    • Code Clean-up: Menghapus variabel logging mati (postStatusTagihan, postStatusPenerbitanTagihan, postStatusFailed) pada cop_controller.js serta dependensi logger yang tidak terpakai pada request-billing.service.js.
  • Perubahan Database (DDL / DML):

    sql
    -- Tidak ada perubahan skema database (DDL/DML) untuk task ini.
    -- Perubahan berupa perbaikan urutan transaksi state flag dan pembersihan log status redundan.
  • Kontrak API & Response Payload: Tidak ada perubahan kontrak request/response API publik. Perubahan terjadi pada alur internal transactional logging dan sequence flagging database pada endpoint pengiriman COP/PHQC Sinkarkes (sendFormSINKARKES).


4. Bukti Teknis (Technical Proof & Audit Trail)

  • Repository: pengangkut-backend
  • Branch: development
  • Commit ID / Hash: 349ec61b2667c1cc6edaaffa8a58a752ebe8409a
  • Merge Request / PR: -

Cuplikan Kode / Implementasi Inti

javascript
// app/controllers/cop_controller.js - Perbaikan urutan updateFlagBillingWarta
try {
  const resultLayanan = await sendLayanan(payloadSinkarkes);
  
  // Flagging hanya diupdate jika pengiriman layanan sukses
  if (resultLayanan && resultLayanan.status) {
    await updateFlagBillingWarta(idLayanan, isSingleBilling, 'karkes');
  }
} catch (error) {
  // Flagging tidak dieksekusi saat pengiriman gagal
  logger.error("Failed to send layanan Sinkarkes:", error);
  throw error;
}

5. Bukti Verifikasi Pengujian (QA / API Verification)

Diisi saat naik ke Staging atau Production.

json
{
  "test_suites": [
    "tests/services/request-billing.service.test.js (PASS)"
  ],
  "verification_status": "DEV_PASSED"
}
  • Hasil Pengujian: PENDING (Menunggu verifikasi integrasi UAT Staging)
  • Catatan QA: Unit test disesuaikan pasca penghapusan kode status 101/103/111 dan telah lulus di lokal dev. Menunggu verifikasi alur COP Sinkarkes di environment Staging.

Single Source of Truth (SSOT) Arsitektur & Perubahan Teknis Backend