#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 驗證匯入的資料是否正確 """ import sys import os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from database.vendor_manager import VendorDatabaseManager from database.vendor_models import VendorStockout import re def verify_import(): """驗證匯入資料""" db = VendorDatabaseManager() session = db.get_session() try: # 查詢所有記錄 records = session.query(VendorStockout).order_by(VendorStockout.id).all() print("=" * 80) print(f"驗證匯入資料") print("=" * 80) if not records: print("\n❌ 沒有資料!請確認是否成功匯入") return print(f"\n✅ 找到 {len(records)} 筆記錄") # 檢查第一筆記錄 record = records[0] print("\n" + "=" * 80) print(f"第一筆記錄詳細資訊") print("=" * 80) print(f"\n📅 日期資訊:") print(f" import_date: {record.import_date} (類型: {type(record.import_date)})") if str(record.import_date) == "2026-01-05": print(f" ✅ 日期正確!") else: print(f" ❌ 日期錯誤!應該是 2026-01-05") print(f"\n👤 組織資訊:") print(f" 處別: {record.department}") print(f" 科別: {record.section}") print(f" PM姓名: {record.pm_name}") print(f"\n📦 商品資訊:") print(f" 商品ID: {record.product_code}") print(f" 商品名稱: {record.product_name[:50]}...") print(f" 單品/組合商品: {record.product_spec}") print(f"\n🏢 廠商資訊:") print(f" 來源供應商編號: {record.vendor_code}") print(f" 來源供應商名稱: {record.vendor_name}") print(f"\n📊 數量資訊:") print(f" 商品可賣量: {record.monthly_sales_qty}") print(f" 缺貨日期: {record.current_stock}") print(f" 缺貨商品前30天業績: {record.monthly_sales_amount}") print(f" 最近30天銷售量: {record.daily_avg_sales}") print(f" 庫存水位: {record.safe_stock_days}") print(f"\n📝 備註資訊(解析前):") print(f" {record.notes}") # 解析 notes 中的額外欄位 if record.notes: print(f"\n📝 備註資訊(解析後):") zone_id_match = re.search(r'區ID:\s*([^,]*)', record.notes) zone_name_match = re.search(r'區名稱:\s*([^,]*)', record.notes) borrow_match = re.search(r'借採轉:\s*([^,]*)', record.notes) stockout_days_match = re.search(r'缺貨天數:\s*([^,]*)', record.notes) if zone_id_match: print(f" 區ID: {zone_id_match.group(1).strip()}") if zone_name_match: print(f" 區名稱: {zone_name_match.group(1).strip()}") if borrow_match: print(f" 借採轉: {borrow_match.group(1).strip()}") if stockout_days_match: print(f" 缺貨天數: {stockout_days_match.group(1).strip()}") # 檢查所有記錄的日期 print("\n" + "=" * 80) print(f"檢查所有記錄的日期") print("=" * 80) date_counts = {} for r in records: date_str = str(r.import_date) date_counts[date_str] = date_counts.get(date_str, 0) + 1 for date_str, count in sorted(date_counts.items()): icon = "✅" if date_str == "2026-01-05" else "⚠️" print(f" {icon} {date_str}: {count} 筆") print("\n" + "=" * 80) print("✅ 驗證完成") print("=" * 80) if all(str(r.import_date) == "2026-01-05" for r in records): print("\n🎉 所有資料的日期都正確!") print("現在可以發送測試郵件了!") else: print("\n⚠️ 部分資料的日期不正確,請檢查") except Exception as e: print(f"\n❌ 錯誤: {e}") import traceback traceback.print_exc() finally: session.close() if __name__ == '__main__': verify_import()