# Scripts Archive - 2월 데이터 패치 ## 📅 작업 일시 2026년 2월 27일 ## 🎯 작업 목적 5호기(kremc-05)와 9호기(nrems-09)의 2월 데이터를 Supabase DB에 완전히 크롤링하고 저장 ## ⚠️ 발견된 문제 1. **중복 저장**: 시간별 데이터가 5~6배 중복 저장됨 2. **current_kw = 0**: 과거 데이터의 current_kw가 0으로 저장되어 웹 차트가 안 나옴 ## ✅ 완료된 작업 ### 1. 데이터 크롤링 및 저장 - **대상**: 5호기, 9호기 - **기간**: 2026년 2월 1일 ~ 2월 27일 - **데이터 유형**: 시간별(hourly), 일별(daily), 월별(monthly) ### 2. 중복 데이터 정리 - 시간별 데이터가 중복 저장된 문제 발견 및 해결 - 각 시간대별로 최신 레코드만 유지하도록 정리 - **5호기**: 2,949건 중복 제거 - **9호기**: 2,839건 중복 제거 ### 3. current_kw 업데이트 문제 해결 - **문제**: 과거 데이터의 current_kw가 0으로 저장되어 웹 차트가 표시되지 않음 - **원인**: 과거 데이터 크롤링 시 current_kw 필드가 0으로 저장됨 - **해결**: current_kw를 today_kwh(시간별 발전량) 값으로 업데이트 - **5호기**: 263건 업데이트 - **9호기**: 308건 업데이트 ### 4. 최종 결과 #### 5호기 (kremc-05) - ✅ 시간별 데이터: 646건 - ✅ 일별 데이터: 27건 (2/1~2/27) - ✅ 2월 총 발전량: 3,702 kWh - ✅ 일평균: 137.11 kWh - ✅ 월별 통계: 자동 갱신 완료 #### 9호기 (nrems-09) - ✅ 시간별 데이터: 646건 - ✅ 일별 데이터: 27건 (2/1~2/27) - ✅ 2월 총 발전량: 9,230 kWh - ✅ 일평균: 341.85 kWh - ✅ 월별 통계: 자동 갱신 완료 ## 📁 아카이브된 스크립트 ### 1. `fetch_february.py` - **목적**: 5호기와 9호기의 2월 전체 데이터 크롤링 - **기능**: - 시간별 데이터 수집 (2/1~2/27) - 일별 데이터 수집 (2/1~2/27) - Supabase DB 저장 ### 2. `verify_february_data.py` - **목적**: Supabase DB에 저장된 2월 데이터 검증 - **기능**: - 시간별/일별/월별 데이터 개수 확인 - 발전량 통계 집계 - 샘플 데이터 출력 ### 3. `check_feb_gaps.py` - **목적**: 2월 시간별 데이터의 날짜별 누락 확인 - **기능**: - 2월 1일~27일 각 날짜의 시간별 데이터 개수 확인 - 완전 누락/부분 누락 날짜 보고 ### 4. `clean_feb_duplicates.py` - **목적**: 중복 저장된 시간별 데이터 정리 - **기능**: - 같은 plant_id와 시간대의 중복 레코드 탐지 - 가장 최신 레코드만 유지, 나머지 삭제 - 날짜별 중복 제거 현황 출력 ### 5. `fill_today_feb.py` - **목적**: 2월 27일(오늘) 누락 시간대 보완 - **기능**: - 현재 DB에 있는 시간대 확인 - 누락된 시간대만 추가 크롤링 - 일별 통계 업데이트 ### 6. `check_current_kw.py` - **목적**: DB에 저장된 시간별 데이터의 current_kw 값 확인 - **기능**: - 특정 날짜의 시간별 데이터 조회 - current_kw와 today_kwh 값 비교 - current_kw=0인 레코드 개수 통계 ### 7. `update_current_kw.py` - **목적**: 2월 데이터의 current_kw를 today_kwh로 업데이트 - **기능**: - current_kw가 0이고 today_kwh가 0이 아닌 레코드 탐지 - current_kw를 today_kwh 값으로 업데이트 - 날짜별 업데이트 현황 출력 - **배경**: 과거 데이터 크롤링 시 current_kw가 0으로 저장되어 웹 차트가 안 나오는 문제 해결 ### 8. `test_api.py` - **목적**: API 엔드포인트 호출 테스트 - **기능**: - /plants/{plant_id}/stats/today 엔드포인트 테스트 - 시간별 데이터 응답 확인 - current_kw와 today_kwh 값 출력 ### 9. `verify_feb_final.py` - **목적**: 2월 데이터 최종 검증 (간단 버전) - **기능**: - 시간별/일별/월별 데이터 개수 확인 - 발전량 통계 요약 - DB 저장 상태 최종 확인 ## 🔧 사용 방법 모든 스크립트는 crawler 가상환경에서 실행: ```powershell cd d:\dev\etc\SolorPower\crawler .\venv_win\Scripts\Activate.ps1 # 스크립트 실행 예시 python scripts_archive/fetch_february.py python scripts_archive/verify_february_data.py python scripts_archive/check_feb_gaps.py python scripts_archive/clean_feb_duplicates.py python scripts_archive/fill_today_feb.py ``` ## 📝 참고사항 - 이 스크립트들은 일회성 패치 작업용입니다 - 정규 크롤링은 `main.py`와 `crawler_manager.py`를 사용하세요 - 유사한 데이터 패치 작업이 필요할 경우 이 스크립트들을 참고하여 수정 가능 ## ⚠️ 주의사항 - `clean_feb_duplicates.py`는 데이터를 삭제하므로 신중히 사용 - 중복 제거 전 반드시 DB 백업 권장 - 시간대 필터링 시 KST(UTC+9) 타임존 고려 필요