AutoPercenty3/test_base_category.py

81 lines
2.9 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Supabase base_category 테이블 생성 및 동기화 테스트 스크립트
"""
import logging
import sys
import os
import traceback
from src.sp_manager import SupabaseManager
from src.keyword.db_manager import DBManager
# 로거 설정
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler("test_log.txt", mode="w"),
logging.StreamHandler(sys.stdout)
]
)
logger = logging.getLogger("test")
def main():
"""테스트 스크립트 메인 함수"""
try:
logger.info("Supabase base_category 테이블 테스트 시작")
# SupabaseManager 생성
logger.info("SupabaseManager 생성")
sp_manager = SupabaseManager(logger)
# 1. base_category 테이블 생성/확인
logger.info("1. base_category 테이블 생성/확인")
try:
result = sp_manager.create_base_category_table()
logger.info(f"테이블 생성/확인 결과: {result}")
except Exception as e:
logger.error(f"테이블 생성/확인 오류: {e}")
logger.error(traceback.format_exc())
# 2. 로컬 DB에서 base_category 데이터 가져오기
logger.info("2. 로컬 DB 확인")
db_path = os.path.join(os.getcwd(), "price_settings.db")
logger.info(f"DB 파일 경로: {db_path}")
logger.info(f"DB 파일 존재 여부: {os.path.exists(db_path)}")
if os.path.exists(db_path):
try:
db_manager = DBManager(logger, sp_manager=sp_manager)
# 카테고리 수 확인
categories = db_manager.get_base_categories_as_dict()
logger.info(f"로컬 카테고리 수: {len(categories)}")
if categories:
# 3. Supabase에 동기화
logger.info("3. Supabase에 동기화 시도")
result = db_manager.sync_base_categories_to_supabase()
logger.info(f"동기화 결과: {result}")
except Exception as e:
logger.error(f"DBManager 오류: {e}")
logger.error(traceback.format_exc())
else:
logger.warning("DB 파일이 존재하지 않습니다. 프로그램을 실행하여 DB 파일을 먼저 생성해주세요.")
logger.info("테스트 완료")
except Exception as e:
logger.error(f"테스트 중 예외 발생: {e}")
logger.error(traceback.format_exc())
if __name__ == "__main__":
try:
main()
print("테스트가 완료되었습니다. test_log.txt 파일을 확인해주세요.")
except Exception as e:
print(f"치명적인 오류 발생: {e}")
print(traceback.format_exc())
print("자세한 내용은 test_log.txt 파일을 확인해주세요.")