solorpower_crawler/scripts_archive/README.md
2026-03-30 13:01:18 +09:00

140 lines
4.7 KiB
Markdown

# 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) 타임존 고려 필요