feat: 제품 이미지 크롤링에 날짜 선택 기능 추가 - 달력으로 날짜 선택 가능 - 해당 날짜 판매 제품 크롤링

This commit is contained in:
thug0bin
2026-03-04 00:55:02 +09:00
parent 51216c582f
commit 30d95c8579
3 changed files with 62 additions and 21 deletions

View File

@@ -272,8 +272,12 @@ def crawl_products(products, headless=True):
return results
def get_today_sales_products():
"""오늘 판매 제품 목록 조회 (MSSQL)"""
def get_sales_products(date_str=None):
"""특정 날짜 판매 제품 목록 조회 (MSSQL)
Args:
date_str: 날짜 문자열 (YYYYMMDD 또는 YYYY-MM-DD), None이면 오늘
"""
try:
# 상위 폴더의 db 모듈 import
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
@@ -282,9 +286,14 @@ def get_today_sales_products():
session = db_manager.get_session('PM_PRES')
today = datetime.now().strftime('%Y%m%d')
# 날짜 처리
if date_str:
# YYYY-MM-DD -> YYYYMMDD 변환
target_date = date_str.replace('-', '')
else:
target_date = datetime.now().strftime('%Y%m%d')
# 오늘 판매된 품목 조회 (중복 제거)
# 해당 날짜 판매된 품목 조회 (중복 제거)
query = text("""
SELECT DISTINCT
COALESCE(NULLIF(G.Barcode, ''),
@@ -294,11 +303,11 @@ def get_today_sales_products():
ISNULL(G.GoodsName, '알수없음') AS product_name
FROM SALE_SUB S
LEFT JOIN PM_DRUG.dbo.CD_GOODS G ON S.DrugCode = G.DrugCode
WHERE S.SL_NO_order LIKE :today_pattern
WHERE S.SL_NO_order LIKE :date_pattern
AND S.DrugCode IS NOT NULL
""")
result = session.execute(query, {'today_pattern': f'{today}%'}).fetchall()
result = session.execute(query, {'date_pattern': f'{target_date}%'}).fetchall()
products = []
for row in result:
@@ -306,7 +315,7 @@ def get_today_sales_products():
if barcode: # 바코드 있는 것만
products.append((barcode, row[1], row[2]))
logger.info(f"[MSSQL] 오늘 판매 품목: {len(products)}")
logger.info(f"[MSSQL] {target_date} 판매 품목: {len(products)}")
return products
except Exception as e:
@@ -314,15 +323,29 @@ def get_today_sales_products():
return []
def crawl_today_sales(headless=True):
"""오늘 판매된 제품 이미지 크롤링"""
products = get_today_sales_products()
def get_today_sales_products():
"""오늘 판매된 제품 목록 조회 (하위호환)"""
return get_sales_products(None)
def crawl_sales_by_date(date_str=None, headless=True):
"""특정 날짜 판매 제품 이미지 크롤링
Args:
date_str: 날짜 문자열 (YYYYMMDD 또는 YYYY-MM-DD), None이면 오늘
"""
products = get_sales_products(date_str)
if not products:
return {'total': 0, 'success': 0, 'failed': 0, 'skipped': 0, 'message': '오늘 판매 내역 없음'}
return {'total': 0, 'success': 0, 'failed': 0, 'skipped': 0, 'message': '해당일 판매 내역 없음'}
return crawl_products(products, headless=headless)
def crawl_today_sales(headless=True):
"""오늘 판매된 제품 이미지 크롤링 (하위호환)"""
return crawl_sales_by_date(None, headless=headless)
# CLI 실행
if __name__ == '__main__':
import argparse