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.
- Input Teks SmartNote / Markdown Tabel: Menerima input minimal
- Auto-Mapping Alias & Purchasing Lookup:
- Pencocokan
Alias Item Nameke master produk database menggunakanocr_alias_mappingsdanpg_trgmfuzzy matching. - Otomatis membaca
Harga Beli&Unitdari transaksi pembelian terakhir (inventory_logs). Jika belum ada riwayat, bernilai default0. - Kalkulasi otomatis
Total Harga = Qty x Harga Beli.
- Pencocokan
- 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
MasterProductAutocompletepada 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.
- Mengintegrasikan komponen
- 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).
- Ketika rekonsiliasi stok dieksekusi, sistem secara otomatis menyimpan/memperbarui entri di
- Endpoint API Manajemen Master Alias:
- Menambahkan endpoint
GET /api/v1/inventory/alias-mappingsdanPOST /api/v1/inventory/alias-mappings.
- Menambahkan endpoint
- 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/padanginx.prod.confyang me-forward request ke kontainer backendsajen_backend_api:8005. - Menyetel
traefik.http.routers.sajen-api.priority=100padadocker-compose.prod.ymlagar request API langsung dilayani oleh Uvicorn engine. - Mengoreksi penamaan atribut
static_stockpada modelTenantInventorydan perbaikanUserRoleenum. - Memverifikasi pengujian endpoint HTTP POST dengan respon
200 OKdan payload JSON rekonsiliasi opname yang akurat.
- Menambahkan blok
- Penyatuan Normalisasi Alias Memory (
sajen-api):- Merefaktorisasi
match_product_by_alias_or_namedisajen/app/services/stock_opname_service.pyagar menggunakan_find_best_matchmilikocr_normalizer.py(Single Source of Truth). - Memindahkan prioritas memori
ocr_alias_mappingske Posisi Utama (#1) sebelum pencocokan nama produk master di DB, sehingga perbaikan alias terbukti langsung terhubung 100% saat parsing ulang SmartNote/Excel.
- Merefaktorisasi
- Preservasi Teks Mentah Alias (
blonjo-ui):- Memastikan
alias_inputmentah tetap dipertahankan pada state tabel edit saat pengguna memilih produk master dari dropdown Autocomplete, sehingga simpananocr_alias_mappingsselalu merekam perbandingan yang presisi (raw_pattern➔official_item_name).
- Memastikan
- Penciptaan Otomatis Master Product Baru (
sajen-api):- Ketika konfirmasi opname dieksekusi untuk item yang belum pernah ada di database master
products, backend otomatis membuat entriProductmaster baru (SKU: PRD-AUTO-XXXX), menginisialisasiTenantInventory, dan langsung memetakan alias keocr_alias_mappings.
- Ketika konfirmasi opname dieksekusi untuk item yang belum pernah ada di database master
- 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-
UPDATEentriStockOpnameSessionyang 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.
- Backend secara otomatis mendeteksi jika data opname pada tanggal yang sama dikirimkan kembali (Re-Upload), lalu me-
- Pembersihan Antarmuka Tabel Recount (
blonjo-ui):- Menghapus badge
Match: xx%dan kolomKategoridi komponenMasterProductAutocomplete& tabel review opname untuk memberikan tampilan yang lebih bersih, luas, dan fokus pada data utama.
- Menghapus badge