solorpower_crawler/scripts_archive
2026-03-30 13:01:18 +09:00
..
check_current_kw.py 수정 2026-03-30 13:01:18 +09:00
check_feb_gaps.py 수정 2026-03-30 13:01:18 +09:00
clean_feb_duplicates.py 수정 2026-03-30 13:01:18 +09:00
fetch_february.py 수정 2026-03-30 13:01:18 +09:00
fill_today_feb.py 수정 2026-03-30 13:01:18 +09:00
README.md 수정 2026-03-30 13:01:18 +09:00
test_api.py 수정 2026-03-30 13:01:18 +09:00
update_current_kw.py 수정 2026-03-30 13:01:18 +09:00
verify_feb_final.py 수정 2026-03-30 13:01:18 +09:00
verify_february_data.py 수정 2026-03-30 13:01:18 +09:00

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 가상환경에서 실행:

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.pycrawler_manager.py를 사용하세요
  • 유사한 데이터 패치 작업이 필요할 경우 이 스크립트들을 참고하여 수정 가능

⚠️ 주의사항

  • clean_feb_duplicates.py는 데이터를 삭제하므로 신중히 사용
  • 중복 제거 전 반드시 DB 백업 권장
  • 시간대 필터링 시 KST(UTC+9) 타임존 고려 필요