docs: 배당 귀족주 로빙 통합 계획 업데이트 (Phase 2 완료, Phase 1 구현 가이드 추가, TDD 테스트 시나리오 추가)
This commit is contained in:
parent
6362bc13c6
commit
96c58e2104
@ -21,10 +21,12 @@
|
||||
|
||||
1. **데이터 수집 스크립트**: `goosefarminvesting/backend/scripts/collect_dividends.py` 수동 실행으로 전체 69개 종목 수집 완료
|
||||
2. **Supabase 데이터**: `dividend_stocks`(69개), `dividend_history`(10,895건), `dividend_metrics`(68개) 저장 완료
|
||||
3. **Phase 2 완료**: DB 스케줄 등록 완료 (`scheduled_jobs` 테이블, `JOB_TYPE_MAP` 매핑, 자동 배포 및 등록 확인)
|
||||
|
||||
### 미완료 작업
|
||||
|
||||
1. **자동 수집 설정**: 현재 수동 실행만 가능, 자동 스케줄링 미구현
|
||||
1. **Phase 1**: `dividend_collector_service.py`의 `collect_all_dividends()` 실제 로직 구현 (현재 placeholder)
|
||||
2. **Phase 3**: 수동 실행 테스트 및 검증
|
||||
|
||||
---
|
||||
|
||||
@ -42,16 +44,24 @@
|
||||
- `asyncio.run()`으로 서비스 함수 실행 (기존 패턴과 동일)
|
||||
- 로깅: 시작/완료/에러 기록
|
||||
|
||||
**구현 가이드**:
|
||||
- `collect_dividends.py`의 main 로직 (`--update-all` 옵션) 참고:
|
||||
1. `AristocratsCollector().fetch_aristocrats_list()` - 배당 귀족주 리스트 수집
|
||||
2. `AristocratsCollector().enrich_with_market_data()` - 시장 데이터 추가
|
||||
3. `DataSaver().save_aristocrats()` - 데이터베이스에 저장
|
||||
4. 각 종목마다 `update_ticker_data()` 실행 (배당 이력, 분석, 저장)
|
||||
|
||||
**예상 시간**: 1시간
|
||||
|
||||
**파일 참조**:
|
||||
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시 (내부 모듈 import 패턴)
|
||||
- `rb8001/app/scheduler/jobs/companyx_news.py`: 서비스 import 패턴 참고
|
||||
- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 구조 확인
|
||||
- `goosefarminvesting/backend/scripts/collect_dividends.py:590-613`: `--update-all` 로직 참고
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: DB에 스케줄 등록
|
||||
### Phase 2: DB에 스케줄 등록 ✅ 완료
|
||||
|
||||
**작업 내용**:
|
||||
1. `scheduled_jobs` 테이블에 레코드 추가
|
||||
@ -74,10 +84,26 @@
|
||||
### Phase 3: 테스트 및 검증
|
||||
|
||||
**작업 내용**:
|
||||
1. rb8001 서버 재시작 후 스케줄 자동 로드 확인
|
||||
1. rb8001 서버 재시작 후 스케줄 자동 로드 확인 ✅
|
||||
2. 수동 실행 테스트: `POST /api/scheduler/jobs/dividend_collector/run`
|
||||
3. Supabase 데이터 확인: `dividend_history` 테이블 최신 데이터 확인
|
||||
|
||||
**TDD 테스트 시나리오**:
|
||||
|
||||
**시나리오 1: 수동 실행 테스트**
|
||||
- `POST /api/scheduler/jobs/dividend_collector/run` 엔드포인트로 수동 실행
|
||||
- 로그 확인: 시작/완료 메시지
|
||||
- DB 확인: `dividend_history` 테이블에 최신 데이터 저장 (오늘 날짜 기준)
|
||||
|
||||
**시나리오 2: 데이터 수집 검증**
|
||||
- 69개 종목 데이터 수집 확인
|
||||
- 배당 이력 저장 확인 (`dividend_history` 테이블)
|
||||
- 계산 지표 저장 확인 (`dividend_metrics` 테이블)
|
||||
|
||||
**시나리오 3: 에러 처리**
|
||||
- 네트워크 에러 시 로깅 및 재시도 로직 확인
|
||||
- 부분 실패 시 다른 종목 처리 계속 진행 확인
|
||||
|
||||
**예상 시간**: 20분
|
||||
|
||||
---
|
||||
@ -93,6 +119,14 @@ dividend_collector.py (_run_dividend_collector_with_logging)
|
||||
↓ (asyncio.run)
|
||||
dividend_collector_service.py (collect_all_dividends)
|
||||
↓
|
||||
1. AristocratsCollector: Wikipedia 리스트 수집
|
||||
2. 시장 데이터 추가 (yfinance)
|
||||
3. DataSaver: dividend_stocks 저장
|
||||
4. 각 종목마다 update_ticker_data:
|
||||
- DividendHistoryCollector: 배당 이력 수집
|
||||
- DividendAnalyzer: 분석 및 계산
|
||||
- DataSaver: dividend_history, dividend_metrics 저장
|
||||
↓
|
||||
Supabase (dividend_stocks, dividend_history, dividend_metrics)
|
||||
```
|
||||
|
||||
@ -115,14 +149,15 @@ Supabase (dividend_stocks, dividend_history, dividend_metrics)
|
||||
- `rb8001/app/scheduler/jobs/companyx_news.py`: 서비스 import 패턴 참고
|
||||
- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 정의 (딕셔너리 구조)
|
||||
- `rb8001/app/state/scheduler_repository.py`: `scheduled_jobs` 테이블 CRUD
|
||||
- `goosefarminvesting/backend/scripts/collect_dividends.py`: 수집 로직 참고 (서비스로 이동)
|
||||
- `goosefarminvesting/backend/scripts/collect_dividends.py:590-613`: `--update-all` 로직 (서비스로 이동)
|
||||
- `goosefarminvesting/backend/scripts/collect_dividends.py:622-680`: `update_ticker_data()` 함수 (각 종목 처리)
|
||||
- `DOCS/journey/troubleshooting/260102_db_scheduler_management.md`: 스케줄러 시스템 구조
|
||||
|
||||
---
|
||||
|
||||
## 다음 단계
|
||||
|
||||
1. Phase 1 실행: rb8001 스케줄러 작업 생성
|
||||
2. Phase 2 실행: DB에 스케줄 등록
|
||||
3. Phase 3 실행: 테스트 및 검증
|
||||
1. ✅ Phase 2 완료: DB 스케줄 등록
|
||||
2. Phase 1 진행: rb8001 서비스 로직 구현 (TDD로 테스트하면서)
|
||||
3. Phase 3 실행: 수동 실행 테스트 및 검증
|
||||
4. 로빙 troubleshooting 문서 작성: 구현 완료 후 기록
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user