fix: rb8001 기존 패턴에 맞게 배당 귀족주 스케줄러 계획 수정 (subprocess → 내부 서비스 import)

This commit is contained in:
Claude-51124 2026-01-17 10:21:57 +09:00
parent beb12d70c2
commit 4f99788ad2

View File

@ -30,19 +30,23 @@
## 구현 계획
### Phase 1: rb8001 스케줄러 작업 생성
### Phase 1: rb8001 서비스 및 스케줄러 작업 생성
**작업 내용**:
1. `rb8001/app/scheduler/jobs/dividend_collector.py` 생성
- `_run_dividend_collector_with_logging()` 함수 구현
- `subprocess.run()`으로 `collect_dividends.py --update-all` 실행
1. `rb8001/app/services/dividend/dividend_collector_service.py` 생성
- `collect_all_dividends()` async 함수 구현
- `collect_dividends.py`의 메인 로직을 서비스로 이동하거나 import하여 사용
- 로깅: 시작/완료/에러 기록
2. `rb8001/app/scheduler/jobs/dividend_collector.py` 생성
- `_run_dividend_collector_with_logging()` sync 래퍼 함수 구현
- `asyncio.run()`으로 서비스 함수 실행 (기존 패턴과 동일)
- 로깅: 시작/완료/에러 기록
2. 스크립트 경로: `/home/admin/goosefarminvesting/backend/scripts/collect_dividends.py`
**예상 시간**: 30분
**예상 시간**: 1시간
**파일 참조**:
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시
- `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` 구조 확인
---
@ -56,7 +60,12 @@
- `cron_expression`: `'0 3 * * 0'` (매주 일요일 새벽 3시)
- `enabled`: `true`
2. `rb8001/app/scheduler/db_loader.py``JOB_TYPE_MAP`에 매핑 추가
- `'dividend_collector': 'app.scheduler.jobs.dividend_collector._run_dividend_collector_with_logging'`
```python
"dividend_collector": {
"func": "_run_dividend_collector_with_logging",
"module": "app.scheduler.jobs.dividend_collector"
}
```
**예상 시간**: 20분
@ -80,13 +89,17 @@
```
rb8001 스케줄러 (APScheduler)
↓ (매주 일요일 새벽 3시)
dividend_collector.py (subprocess.run)
goosefarminvesting/backend/scripts/collect_dividends.py --update-all
dividend_collector.py (_run_dividend_collector_with_logging)
(asyncio.run)
dividend_collector_service.py (collect_all_dividends)
Supabase (dividend_stocks, dividend_history, dividend_metrics)
```
**기존 패턴 준수**:
- `subprocess.run()` 대신 내부 모듈 import 사용 (`diary_generator.py`, `companyx_news.py` 참고)
- `_run_*_with_logging()` sync 래퍼 → `asyncio.run()` → 내부 서비스 async 함수 실행
### 스케줄러 패턴
- `scheduled_jobs` 테이블에 스케줄 정의 저장
@ -98,11 +111,12 @@ Supabase (dividend_stocks, dividend_history, dividend_metrics)
## 파일 참조
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시
- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 정의
- `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` 정의 (딕셔너리 구조)
- `rb8001/app/state/scheduler_repository.py`: `scheduled_jobs` 테이블 CRUD
- `goosefarminvesting/backend/scripts/collect_dividends.py:609`: 수집 스크립트
- `goosefarminvesting/DOCS/journey/troubleshooting/251110_dividend_aristocrats_full_collection.md:60`: 실행 시간 참고
- `goosefarminvesting/backend/scripts/collect_dividends.py`: 수집 로직 참고 (서비스로 이동)
- `DOCS/journey/troubleshooting/260102_db_scheduler_management.md`: 스케줄러 시스템 구조
---