4.7 KiB
4.7 KiB
Scripts Archive - 2월 데이터 패치
📅 작업 일시
2026년 2월 27일
🎯 작업 목적
5호기(kremc-05)와 9호기(nrems-09)의 2월 데이터를 Supabase DB에 완전히 크롤링하고 저장
⚠️ 발견된 문제
- 중복 저장: 시간별 데이터가 5~6배 중복 저장됨
- 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 가상환경에서 실행:
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) 타임존 고려 필요