[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):
- Ditemukan celah (bypass) pada alur layanan Sinkarkes dengan metode Single Billing: saat pengiriman pengajuan berstatus gagal, sistem sebelumnya tetap melakukan flagging
isSingleBillingpada database. Akibatnya pengguna dapat langsung melanjutkan proses ke tahapan keberangkatan padahal pengajuan kedatangannya secara sistem masih gagal. - Terdapat penambahan status "Proses Permintaan Tagihan" (kode
101) yang tidak diperlukan dalam alur berjalan, serta kesalahan logika pencatatan status "Tagihan Diterima" (kode103/111) dari respons balikan Sinkarkes yang belum memiliki data billing riil. Secara proses bisnis, status tagihan diterima seharusnya hanya dicatat dari API/tagihansaat data tagihan aktual masuk ke sistem. - Dilakukan evaluasi konsistensi data nomor registrasi kapal pada integrasi Sinkarkes terhadap database superset kapal.
- Ditemukan celah (bypass) pada alur layanan Sinkarkes dengan metode Single Billing: saat pengiriman pengajuan berstatus gagal, sistem sebelumnya tetap melakukan flagging
2. Deployment Lifecycle
| # | Environment | Tanggal & Waktu | PIC | Status | Catatan |
|---|---|---|---|---|---|
| 1 | Development | 2026-08-13 12:06 | Hermansyah Efendi | DEPLOYED | Branch: development |
| 2 | Staging (UAT) | — | — | PENDING | — |
| 3 | Production | — | — | PENDING | — |
Riwayat Update Log
| Tanggal | Environment | Perubahan | PIC |
|---|---|---|---|
| 2026-08-24 | Development | Inisialisasi 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 bloktrysetelah fungsi eksternalsendLayananberhasil 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 status101(proses permintaan tagihan),103(tagihan diterima), dan111(penerbitan tagihan) padaRequestBillingService. Pencatatan status tagihan kini murni terisolasi dan hanya dipicu oleh webhook/endpoint API/tagihansaat payload tagihan riil diterima sistem. - Code Clean-up: Menghapus variabel logging mati (
postStatusTagihan,postStatusPenerbitanTagihan,postStatusFailed) padacop_controller.jsserta dependensi logger yang tidak terpakai padarequest-billing.service.js.
- Penutupan Celah Bypass Flag Billing: Urutan eksekusi pemanggilan
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.