Skip to content

← Kembali ke daftar challenge

Stock Movement Integrity - Race-Safe & Audit Chain

lockForUpdate + movement_logs immutable + delta-based recompute untuk konsistensi stok.

Validate, transaction begin, lock item row, INSERT stock_movements, INSERT movement_logs (type_activity=CREATE), applyMovementDelta, COMMIT.

Masalah

Stock OUT konkuren bisa membuat current_stock negatif; koreksi menghapus jejak audit.

Keputusan

DB transaction + lockForUpdate, pisahkan movement_logs immutable dari stock_movements.

Hasil

Race-safe stock IN/OUT, audit chain utuh walau ada koreksi atau soft-delete.

Implementasi

  • Race condition Stock OUT teratasi via row-level lock dalam DB transaction.
  • Audit chain movement_logs terpisah dari data mutable - tidak menghapus jejak.

Bukti teknis

Validate, transaction begin, lock item row, baca oldQty, hitung delta, UPDATE stock_movements, INSERT movement_logs (type_activity=UPDATE), applyMovementDelta(delta), COMMIT.

Screenshot terkait

Rekonstruksi kartu stok dari stock_movements aktif per item.
Formulir pencatatan stok masuk. Middleware module:stock-in,create memvalidasi akses.