feat: 각 모듈 개별 테스트 실행 가능하도록 수정 및 docker compose 최신 버전 형식 적용

This commit is contained in:
2025-12-31 11:46:15 +09:00
parent 8cfeaae92d
commit 53326703ab
13 changed files with 888 additions and 21 deletions

View File

@ -381,3 +381,31 @@ class ASOSDataCollector:
logger.info(f"{total_saved}건 저장 완료")
return total_saved
if __name__ == '__main__':
"""
ASOS 모듈 테스트
사용법:
python services/weather/asos.py
"""
logger.info("=== ASOS 모듈 테스트 ===")
try:
config = get_config()
service_key = config.data_api['service_key'] or "TEST_KEY"
logger.info(f"설정 로드 완료")
logger.info(f"- 서비스 키: {service_key[:10] if service_key else 'NOT SET'}***")
# 간단한 데이터 조회 테스트
logger.info("\n기본 설정 확인:")
logger.info(f"- ASOS API URL: {ASOS_API_URL}")
logger.info(f"- 시간별 컬럼 수: {len(HRMT_KEYS)}")
logger.info("\n✓ ASOS 모듈 테스트 완료")
except Exception as e:
logger.error(f"ASOS 모듈 테스트 실패: {e}")
logger.error(traceback.format_exc())

View File

@ -30,6 +30,7 @@ import requests
from core.logging_utils import get_logger
from core.http_client import create_retry_session
from core.config import get_config
logger = get_logger(__name__)
@ -528,3 +529,33 @@ def get_weekly_precip(service_key: str) -> Dict[str, float]:
result[dt] = round(prob * 0.1, 1)
return result
if __name__ == '__main__':
"""
기상청 예보 모듈 테스트
사용법:
python services/weather/forecast.py
"""
logger = get_logger(__name__)
logger.info("=== 기상청 예보 모듈 테스트 ===")
try:
config = get_config()
service_key = config.data_api['service_key'] or "TEST_KEY"
logger.info(f"설정 로드 완료")
logger.info(f"- 서비스 키: {service_key[:10] if service_key else 'NOT SET'}***")
logger.info("\n모듈 기능 확인:")
logger.info("- get_ultra_forecast: 초단기 예보 조회")
logger.info("- get_vilage_forecast: 동네 예보 조회")
logger.info("- get_midterm_forecast: 중기 예보 조회")
logger.info("\n✓ 기상청 예보 모듈 테스트 완료")
except Exception as e:
logger.error(f"기상청 예보 모듈 테스트 실패: {e}")
import traceback
logger.error(traceback.format_exc())

View File

@ -26,7 +26,13 @@ from typing import Dict, List, Optional, Tuple, Any
from core.logging_utils import get_logger
from core.config import get_config
from .forecast import parse_precip, get_ultra_forecast, get_vilage_forecast
try:
# 상대 import (패키지 내에서)
from .forecast import parse_precip, get_ultra_forecast, get_vilage_forecast
except ImportError:
# 절대 import (직접 실행 시)
from services.weather.forecast import parse_precip, get_ultra_forecast, get_vilage_forecast
logger = get_logger(__name__)
@ -341,3 +347,37 @@ class PrecipitationService:
'hourly': time_precip_list,
'total': total
}
if __name__ == '__main__':
"""
강수량 데이터 서비스 모듈 테스트
사용법:
python services/weather/precipitation.py
"""
logger = get_logger(__name__)
logger.info("=== 강수량 데이터 서비스 모듈 테스트 ===")
try:
config = get_config()
service_key = config.data_api['service_key'] or "TEST_KEY"
logger.info(f"설정 로드 완료")
logger.info(f"- 서비스 키: {service_key[:10] if service_key else 'NOT SET'}***")
# 서비스 초기화 테스트
service = PrecipitationService(service_key)
logger.info("\nPrecipitationService 초기화 완료")
logger.info("\n제공 기능:")
logger.info("- get_daily_summary: 일일 강수량 요약")
logger.info("- generate_html_table: HTML 테이블 생성")
logger.info("- get_output_format: 다양한 형식 제공 (JSON, HTML, 텍스트)")
logger.info("\n✓ 강수량 데이터 서비스 모듈 테스트 완료")
except Exception as e:
logger.error(f"강수량 모듈 테스트 실패: {e}")
import traceback
logger.error(traceback.format_exc())