diff --git a/journey/troubleshooting/260117_배당_귀족주_자동_수집_로빙_통합_구현.md b/journey/troubleshooting/260117_배당_귀족주_자동_수집_로빙_통합_구현.md deleted file mode 100644 index 4a38fb5..0000000 --- a/journey/troubleshooting/260117_배당_귀족주_자동_수집_로빙_통합_구현.md +++ /dev/null @@ -1,120 +0,0 @@ -# 배당 귀족주 자동 수집 로빙 통합 구현 - -**날짜**: 2026-01-17 -**작성자**: Agent -**관련 파일**: `rb8001/app/services/dividend/dividend_collector_service.py`, `rb8001/app/scheduler/jobs/dividend_collector.py`, `rb8001/app/scheduler/db_loader.py` - -**참고 문서**: `plans/260116_배당_귀족주_자동_수집_로빙_통합_계획.md` - ---- - -## 테스트 시나리오 (TDD Red) - -### 시나리오 1: 스케줄러 작업 생성 및 실행 - -**기대 동작**: -1. `_run_dividend_collector_with_logging()` 함수 호출 시 `collect_all_dividends()` 서비스 실행 -2. 로깅: 시작/완료/에러 기록 -3. Supabase 데이터 저장 확인: `dividend_history` 테이블에 최신 배당 데이터 저장 - -**검증 항목**: -- 함수 실행 성공 (에러 없음) -- 로그에 시작/완료 메시지 기록 -- DB에 최신 배당 데이터 저장 (오늘 날짜 기준) - -### 시나리오 2: DB 스케줄 등록 및 자동 로드 - -**기대 동작**: -1. `scheduled_jobs` 테이블에 `dividend_collector` 레코드 추가 -2. `JOB_TYPE_MAP`에 매핑 추가 -3. rb8001 서버 재시작 후 스케줄 자동 로드 확인 - -**검증 항목**: -- `scheduled_jobs` 테이블에 레코드 존재 -- `JOB_TYPE_MAP`에 `'dividend_collector'` 키 존재 -- 서버 재시작 후 스케줄 등록 확인 - -### 시나리오 3: 수동 실행 및 자동 실행 - -**기대 동작**: -1. `POST /api/scheduler/jobs/dividend_collector/run` 엔드포인트로 수동 실행 -2. 매주 일요일 새벽 3시 자동 실행 (cron 표현식) - -**검증 항목**: -- API 엔드포인트로 수동 실행 성공 -- 로그에서 실행 결과 확인 -- DB에 최신 데이터 저장 확인 - ---- - -## 구현 가이드 - -### Phase 1: 서비스 및 스케줄러 작업 생성 - -**1-1. 서비스 생성**: `rb8001/app/services/dividend/dividend_collector_service.py` - -```python -async def collect_all_dividends() -> None: - """배당 귀족주 전체 데이터 수집""" - # collect_dividends.py의 메인 로직을 서비스로 이동하거나 import - # 로깅 포함 - pass -``` - -**1-2. 스케줄러 작업 생성**: `rb8001/app/scheduler/jobs/dividend_collector.py` - -```python -def _run_dividend_collector_with_logging() -> None: - """배당 귀족주 수집 스케줄러 작업 (sync 래퍼)""" - # asyncio.run()으로 서비스 함수 실행 - # 로깅 포함 - pass -``` - -**참고 파일**: -- `rb8001/app/scheduler/jobs/diary_generator.py`: 기존 패턴 참고 -- `goosefarminvesting/backend/scripts/collect_dividends.py`: 수집 로직 참고 - -### Phase 2: DB 스케줄 등록 - -**2-1. `scheduled_jobs` 테이블에 레코드 추가** - -```sql -INSERT INTO scheduled_jobs (name, job_type, cron_expression, enabled, config) -VALUES ('dividend_collector', 'dividend_collector', '0 3 * * 0', true, '{}'); -``` - -**2-2. `rb8001/app/scheduler/db_loader.py`의 `JOB_TYPE_MAP`에 매핑 추가** - -```python -JOB_TYPE_MAP = { - # ... 기존 매핑 ... - "dividend_collector": { - "func": "_run_dividend_collector_with_logging", - "module": "app.scheduler.jobs.dividend_collector" - } -} -``` - -### Phase 3: 테스트 및 검증 - -**3-1. 서버 재시작 후 스케줄 로드 확인** -**3-2. API 엔드포인트로 수동 실행 테스트** -**3-3. DB 데이터 확인** - ---- - -## 파일 참조 - -- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시 -- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 구조 -- `goosefarminvesting/backend/scripts/collect_dividends.py`: 수집 로직 -- `DOCS/journey/plans/260116_배당_귀족주_자동_수집_로빙_통합_계획.md`: 전체 계획 - ---- - -## 다음 단계 - -1. Phase 1 구현: 서비스 및 스케줄러 작업 생성 -2. Phase 2 구현: DB 스케줄 등록 -3. Phase 3 실행: 테스트 및 검증