# 모듈 개별 테스트 실행 구현 완료 ## 개요 프로젝트의 모든 모듈(services, apps)을 개별적으로 테스트 실행할 수 있도록 수정하였습니다. ## 수정 사항 ### 1. Services 모듈 (8개) #### Weather 서비스 - **services/weather/asos.py**: `if __name__ == '__main__':` 블록 추가 - ASOS API 설정 및 기본 정보 출력 - 테스트 실행 명령: `python services/weather/asos.py` - **services/weather/forecast.py**: `if __name__ == '__main__':` 블록 추가 - 기상청 예보 API 설정 및 기능 안내 - import 수정: `get_config` 추가 - 테스트 실행 명령: `python services/weather/forecast.py` - **services/weather/precipitation.py**: `if __name__ == '__main__':` 블록 추가 - 강수량 서비스 초기화 및 기능 안내 - import 수정: 상대/절대 import 오류 처리 - 테스트 실행 명령: `python services/weather/precipitation.py` #### Analytics 서비스 - **services/analytics/air_quality.py**: `if __name__ == '__main__':` 블록 추가 - 대기질 데이터 수집 설정 및 기능 안내 - 테스트 실행 명령: `python services/analytics/air_quality.py` - **services/analytics/ga4.py**: `if __name__ == '__main__':` 블록 추가 - GA4 데이터 수집 설정 및 기능 안내 - 테스트 실행 명령: `python services/analytics/ga4.py` - **services/analytics/visitor_forecast.py**: `if __name__ == '__main__':` 블록 추가 - 방문객 예측 서비스 초기화 및 기능 안내 - 테스트 실행 명령: `python services/analytics/visitor_forecast.py` #### Notification 서비스 - **services/notification/mattermost.py**: `if __name__ == '__main__':` 블록 추가 - Mattermost 알림 서비스 초기화 및 기능 안내 - 테스트 실행 명령: `python services/notification/mattermost.py` - **services/notification/notion.py**: `if __name__ == '__main__':` 블록 추가 - Notion 웹훅 처리 서비스 초기화 및 기능 안내 - config 속성 수정: `notion['api_secret']` 사용 - 테스트 실행 명령: `python services/notification/notion.py` ### 2. Flask 애플리케이션 (이미 구현됨) - **apps/dashboard/app.py**: ✓ 이미 구현됨 - **apps/weather_api/app.py**: ✓ 이미 구현됨 - **apps/webhook/app.py**: ✓ 이미 구현됨 ## 테스트 결과 모든 모듈 개별 실행 테스트 완료: ``` ✓ ASOS 모듈 테스트 완료 ✓ 기상청 예보 모듈 테스트 완료 ✓ 강수량 데이터 서비스 모듈 테스트 완료 ✓ 대기질 데이터 수집 서비스 모듈 테스트 완료 ✓ GA4 데이터 수집 서비스 모듈 테스트 완료 ✓ 방문객 예측 서비스 모듈 테스트 완료 ✓ Mattermost 알림 서비스 모듈 테스트 완료 ✓ Notion 웹훅 처리 서비스 모듈 테스트 완료 ✓ Dashboard 앱 생성 완료 ``` ## 사용 방법 ### 빠른 시작 ```powershell cd c:\DEV\python\fgtools $env:PYTHONPATH='c:\DEV\python\fgtools' # 개별 모듈 실행 python services/weather/asos.py python services/weather/forecast.py python services/analytics/ga4.py # ... 등등 # Flask 앱 실행 python apps/dashboard/app.py # 포트 5000 python apps/weather_api/app.py # 포트 5001 python apps/webhook/app.py # 포트 5002 ``` ## 문서 새로 생성된 문서: 1. **MODULES.md**: 상세한 모듈별 테스트 가이드 및 설명 2. **TEST_MODULES.md**: 빠른 테스트 실행 가이드 및 스크립트 ## 각 모듈의 기능 ### Weather Services - **ASOS**: 기상청 종관기상 데이터 조회 및 DB 저장 - **Forecast**: 초단기/단기/중기 기상청 예보 조회 - **Precipitation**: 시간별 강수량 예보 및 HTML 생성 ### Analytics Services - **Air Quality**: 대기질 데이터 수집 (PM2.5, PM10, SO2, NO2, O3) - **GA4**: Google Analytics 4 데이터 수집 - **Visitor Forecast**: 날씨/휴일/과거 데이터 기반 방문객 수 예측 ### Notification Services - **Mattermost**: 웹훅 및 Bot API를 통한 Mattermost 메시지 발송 - **Notion**: Notion 웹훅 이벤트 처리 및 알림 생성 ### Flask Applications - **Dashboard**: 통계 및 데이터 시각화 (포트 5000) - **Weather API**: 기상청 API 데이터 제공 (포트 5001) - **Webhook**: 외부 서비스 웹훅 수신 처리 (포트 5002) ## 추가 개선 사항 1. **에러 처리**: 각 모듈에 try-except 블록으로 안전한 테스트 실행 2. **로깅**: 상세한 로그 메시지로 각 모듈의 상태 확인 3. **설정 로드**: 환경 변수에서 설정을 로드하여 테스트 4. **모듈 정보**: 각 모듈의 기능과 사용법을 출력 ## 주의사항 - PYTHONPATH 설정이 필요한 경우 `$env:PYTHONPATH='c:\DEV\python\fgtools'` 사용 - Flask 앱은 서버가 실행되므로 Ctrl+C로 종료 - 데이터베이스 연결이 필요한 경우 .env 파일 설정 확인 - API 키 필요 시 .env 파일에 설정