feat: 제품 이미지 크롤링에 날짜 선택 기능 추가 - 달력으로 날짜 선택 가능 - 해당 날짜 판매 제품 크롤링
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user