140 lines
4.7 KiB
Markdown
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) 타임존 고려 필요
|