Files
ewoooc/tests/test_import_logic.py
ogt 1b4f3a7bbe
Some checks failed
CD Pipeline / deploy (push) Failing after 59s
feat: EwoooC 初始化 — 完整專案推版至 Gitea
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml)
- 部署模式: rsync Python 檔案至 188 → docker restart (volume mount)
- Dockerfile/requirements 變動時自動重建 Docker image
- 部署通知: Telegram (開始/成功/失敗)
- 健康檢查: https://mo.wooo.work/health (最多 5 次重試)
- 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 01:21:13 +08:00

91 lines
3.2 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
測試匯入邏輯
"""
import pandas as pd
from datetime import date
# 讀取 Excel
excel_path = '/Users/ogt/Downloads/缺貨測試.xlsx'
df = pd.read_excel(excel_path)
print("=" * 80)
print("測試讀取第一行")
print("=" * 80)
# 讀取第一行
row = df.iloc[0]
print(f"\n區ID: {row.get('區ID')}")
print(f"區名稱: {row.get('區名稱')}")
print(f"借採轉: {row.get('借採轉')}")
print(f"缺貨天數: {row.get('缺貨天數')}")
print(f"商品可賣量: {row.get('商品可賣量')}")
print(f"庫存水位: {row.get('庫存水位')}")
# 測試日期轉換
print(f"\n當前日期原始值: {row.get('當前日期')} (類型: {type(row.get('當前日期')).__name__})")
date_value = row.get('當前日期')
row_import_date = None
if pd.notna(date_value):
print(f" pd.notna(date_value): True")
if isinstance(date_value, (int, float)):
print(f" 是數字類型")
parsed_date = pd.to_datetime(date_value, unit='D', origin='1899-12-30', errors='coerce')
print(f" parsed_date: {parsed_date}, pd.notna: {pd.notna(parsed_date)}")
if pd.notna(parsed_date):
row_import_date = parsed_date.date()
print(f" ✅ 轉換後: {row_import_date}")
else:
print(f" pd.notna(date_value): False")
# 測試缺貨日期轉換
print(f"\n缺貨日期原始值: {row.get('缺貨日期')} (類型: {type(row.get('缺貨日期')).__name__})")
stockout_date_value = row.get('缺貨日期')
stockout_date_obj = None
if pd.notna(stockout_date_value):
print(f" pd.notna(stockout_date_value): True")
if isinstance(stockout_date_value, (int, float)):
print(f" 是數字類型")
stockout_parsed = pd.to_datetime(stockout_date_value, unit='D', origin='1899-12-30', errors='coerce')
print(f" stockout_parsed: {stockout_parsed}, pd.notna: {pd.notna(stockout_parsed)}")
if pd.notna(stockout_parsed):
stockout_date_obj = stockout_parsed.date()
print(f" ✅ 轉換後: {stockout_date_obj}")
else:
print(f" pd.notna(stockout_date_value): False")
# 模擬完整的 record 建立
record = {
'import_date': row_import_date if 'row_import_date' in locals() else None,
'department': row.get('處別'),
'section': row.get('科別'),
'pm_name': row.get('PM姓名'),
'zone_id': row.get('區ID'),
'zone_name': row.get('區名稱'),
'product_code': str(row.get('商品ID', '')).strip(),
'product_name': str(row.get('商品名稱', '')).strip(),
'product_spec': row.get('單品/組合商品'),
'borrow_transfer': row.get('借採轉'),
'sale_price': None,
'cost_price': None,
'vendor_code': str(row.get('來源供應商編號', '')).strip(),
'vendor_name': str(row.get('來源供應商名稱', '')).strip(),
'current_stock': row.get('商品可賣量'),
'stockout_date': stockout_date_obj,
'stockout_days': row.get('缺貨天數'),
'monthly_sales_amount': row.get('缺貨商品前30天業績'),
'monthly_sales_qty': row.get('最近30天銷售量'),
'daily_avg_sales': None,
'safe_stock_days': row.get('庫存水位'),
'notes': None
}
print("\n" + "=" * 80)
print("建立的 record:")
print("=" * 80)
for key, value in record.items():
print(f" {key}: {value}")