diff --git a/backend/fill_item_names.py b/backend/fill_item_names.py new file mode 100644 index 0000000..05f5f72 --- /dev/null +++ b/backend/fill_item_names.py @@ -0,0 +1,64 @@ +import json +import os +import glob +import csv + +def main(): + uploads_dir = "backend/uploads" + if not os.path.exists(uploads_dir): + uploads_dir = "uploads" + + csv_path = os.path.join(uploads_dir, "sku_master.csv") + if not os.path.exists(csv_path): + print(f"Error: sku_master.csv not found at {csv_path}") + return + + # Load SKU map + sku_map = {} + with open(csv_path, "r", encoding="utf-8") as f: + reader = csv.reader(f) + header = next(reader, None) # skip header + for row in reader: + if len(row) >= 2: + sku_map[row[0].strip()] = row[1].strip() + + print(f"Loaded {len(sku_map)} SKU mappings from master list.") + + manual_pattern = os.path.join(uploads_dir, "manual_label_*.json") + manual_files = glob.glob(manual_pattern) + modified_files = 0 + filled_items = 0 + + for mf in manual_files: + try: + with open(mf, "r", encoding="utf-8") as f: + data = json.load(f) + + is_modified = False + items = data.get("items", []) + for item in items: + sku = item.get("kodeBarang", "").strip() + name = item.get("namaBarang", "").strip() + + # If name is empty, try to fill it + if not name and sku: + master_name = sku_map.get(sku) + if master_name: + item["namaBarang"] = master_name + is_modified = True + filled_items += 1 + + if is_modified: + with open(mf, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + modified_files += 1 + + except Exception as e: + print(f"Error processing manual label {mf}: {e}") + + print(f"Finished item name fill process.") + print(f"Files updated: {modified_files}") + print(f"Item names filled: {filled_items}") + +if __name__ == "__main__": + main() diff --git a/backend/pfm-web-app/public/comparison_report.xlsx b/backend/pfm-web-app/public/comparison_report.xlsx index 34c2fa1..c41bf48 100644 Binary files a/backend/pfm-web-app/public/comparison_report.xlsx and b/backend/pfm-web-app/public/comparison_report.xlsx differ diff --git a/backend/sources/manual_labels.json b/backend/sources/manual_labels.json index 6d14b53..46aedd4 100644 --- a/backend/sources/manual_labels.json +++ b/backend/sources/manual_labels.json @@ -12,31 +12,31 @@ "items": [ { "kodeBarang": "11310014", - "namaBarang": "", + "namaBarang": "AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)", "banyak": "2 KRG", "jumlah": "40 PC" }, { "kodeBarang": "11310024", - "namaBarang": "", + "namaBarang": "AYAM SIZE A FROZEN (0.9-1)KG/PC(*)", "banyak": "2 KRG", "jumlah": "40 PC" }, { "kodeBarang": "11620056", - "namaBarang": "", + "namaBarang": "SBL (FILLET PAHA) 1 KG(*)", "banyak": "1 BOX", "jumlah": "10 KG" }, { "kodeBarang": "11690053", - "namaBarang": "", + "namaBarang": "SBB (FILLET DADA )1 KG(*)", "banyak": "1 BOX", "jumlah": "10 KG" }, { "kodeBarang": "11720055", - "namaBarang": "", + "namaBarang": "FULL WING FROZ PACK 1 KG(*)", "banyak": "1 BOX", "jumlah": "10 KG" } @@ -67,19 +67,19 @@ }, { "kodeBarang": "11620056", - "namaBarang": "", + "namaBarang": "SBL (FILLET PAHA) 1 KG(*)", "banyak": "1 BOX", "jumlah": "10 KG" }, { "kodeBarang": "11690053", - "namaBarang": "", + "namaBarang": "SBB (FILLET DADA )1 KG(*)", "banyak": "1 BOX", "jumlah": "10 KG" }, { "kodeBarang": "11720055", - "namaBarang": "", + "namaBarang": "FULL WING FROZ PACK 1 KG(*)", "banyak": "1 BOX", "jumlah": "10 KG" }