Lanjut ke konten
Samkarsa Logbook

Jualan v1.5.0-080: Modul SmartNote Stock Opname, Upload Excel, & Dual-Mode Rekonsiliasi Stok

Implementasi fitur SmartNote Stock Opname, parser file Excel, pemetaan alias item otomatis, serta engine rekonsiliasi stok dual-mode (is_maintenance_stock false vs true).

3mnt baca

Pembaruan ini menambahkan sistem Stock Opname & Rekonsiliasi Stok menyeluruh pada aplikasi Blonjo dan Sajen API, lengkap dengan perbaikan resolusi alias item produk dan pembacaan memori adaptif pada MCP Server.

  • Dua Metode Input Input Opname:
    • Input Teks SmartNote / Markdown Tabel: Menerima input minimal [Alias Item Name, Qty, Unit] atau format tabel standar:
      Tanggal Opname : (datetime)
      | no | Item Names | qty | unit | Harga Beli | Total Harga |
    • Upload File Excel (.xlsx / .xls / .csv): Membaca dan menyelaraskan struktur kolom Excel secara otomatis.
  • Auto-Mapping Alias & Purchasing Lookup:
    • Pencocokan Alias Item Name ke master produk database menggunakan ocr_alias_mappings dan pg_trgm fuzzy matching.
    • Otomatis membaca Harga Beli & Unit dari transaksi pembelian terakhir (inventory_logs). Jika belum ada riwayat, bernilai default 0.
    • Kalkulasi otomatis Total Harga = Qty x Harga Beli.

  • Mode is_maintenance_stock = false (Non-Tracked Stock):
    • Pada rekonsiliasi opname pertama kali (first recount), sistem otomatis menolkan (reset to 0) seluruh stok barang yang tidak tercantum dalam daftar opname.
  • Mode is_maintenance_stock = true (Tracked Stock):
    • Menghitung perbandingan stok fisik (actual) vs stok sistem (recorded).
    • Menyajikan Editable Mode Table di mana pengguna dapat meninjau, mengedit kuantitas fisik, dan meninjau selisih nominal sebelum menekan tombol Konfirmasi Manual.

  • Master DB Product Autocomplete Dropdown (blonjo-ui):
    • Mengintegrasikan komponen MasterProductAutocomplete pada tabel review opname di mana pengguna dapat mencari dan memilih produk master database secara live via /api/v1/inventory/products?search=....
    • Saat produk master diganti oleh pengguna, data produk, sistem stok, harga beli, dan nominal selisih terhitung ulang secara otomatis di tabel.
  • Pembelajaran Otomatis Alias Produk Lintas Lini (sajen-api):
    • Ketika rekonsiliasi stok dieksekusi, sistem secara otomatis menyimpan/memperbarui entri di ocr_alias_mappings (entity_type = 'product_name', raw_pattern, corrected_value) untuk setiap pembetulan/penyesuaian alias item.
    • Pengetahuan alias baru langsung berlaku lintas modul (OCR Nota Pembelian Supplier, SmartNote Opname, POS Kasir, dan MCP AI Copilot ROP Search).
  • Endpoint API Manajemen Master Alias:
    • Menambahkan endpoint GET /api/v1/inventory/alias-mappings dan POST /api/v1/inventory/alias-mappings.
  • Pembersihan Antarmuka (UI Clean-Up):
    • Menghapus notice alert banner box dan default sample text pada textarea SmartNote untuk tampilan yang lebih bersih dan minimalis.

  • Resolusi Status 405/502 pada /api/v1/inventory/stock-opname/smartnote:
    • Menambahkan blok location /api/ pada nginx.prod.conf yang me-forward request ke kontainer backend sajen_backend_api:8005.
    • Menyetel traefik.http.routers.sajen-api.priority=100 pada docker-compose.prod.yml agar request API langsung dilayani oleh Uvicorn engine.
    • Mengoreksi penamaan atribut static_stock pada model TenantInventory dan perbaikan UserRole enum.
    • Memverifikasi pengujian endpoint HTTP POST dengan respon 200 OK dan payload JSON rekonsiliasi opname yang akurat.

  • Penyatuan Normalisasi Alias Memory (sajen-api):
    • Merefaktorisasi match_product_by_alias_or_name di sajen/app/services/stock_opname_service.py agar menggunakan _find_best_match milik ocr_normalizer.py (Single Source of Truth).
    • Memindahkan prioritas memori ocr_alias_mappings ke Posisi Utama (#1) sebelum pencocokan nama produk master di DB, sehingga perbaikan alias terbukti langsung terhubung 100% saat parsing ulang SmartNote/Excel.
  • Preservasi Teks Mentah Alias (blonjo-ui):
    • Memastikan alias_input mentah tetap dipertahankan pada state tabel edit saat pengguna memilih produk master dari dropdown Autocomplete, sehingga simpanan ocr_alias_mappings selalu merekam perbandingan yang presisi (raw_pattern ➔ official_item_name).

  • Penciptaan Otomatis Master Product Baru (sajen-api):
    • Ketika konfirmasi opname dieksekusi untuk item yang belum pernah ada di database master products, backend otomatis membuat entri Product master baru (SKU: PRD-AUTO-XXXX), menginisialisasi TenantInventory, dan langsung memetakan alias ke ocr_alias_mappings.
  • Deteksi Otomatis Re-Upload (Upload Ulang Data Sama):
    • Backend secara otomatis mendeteksi jika data opname pada tanggal yang sama dikirimkan kembali (Re-Upload), lalu me-UPDATE entri StockOpnameSession yang ada tanpa membuat baris riwayat duplikat.
    • Stok di-set secara idempoten ke Qty Fisik nyata (static_stock = physical_qty), menjamin stok tidak akan bertambah ganda meskipun data yang sama di-upload ulang berkali-kali.
  • Pembersihan Antarmuka Tabel Recount (blonjo-ui):
    • Menghapus badge Match: xx% dan kolom Kategori di komponen MasterProductAutocomplete & tabel review opname untuk memberikan tampilan yang lebih bersih, luas, dan fokus pada data utama.