docs: 배당 귀족주 로빙 통합 계획 문서 추가 (24 서버 접근용)
This commit is contained in:
parent
29b926c9fc
commit
4c2d837a49
114
journey/plans/260116_배당_귀족주_자동_수집_로빙_통합_계획.md
Normal file
114
journey/plans/260116_배당_귀족주_자동_수집_로빙_통합_계획.md
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
# 배당 귀족주 자동 수집 로빙 통합 계획
|
||||||
|
|
||||||
|
**작성일**: 2026-01-16
|
||||||
|
**작성자**: Agent
|
||||||
|
**태그**: `dividend-aristocrats`, `robeing`, `rb8001`, `scheduler`, `automation`
|
||||||
|
**참고 문서**: `260102_db_scheduler_management.md` (로빙 스케줄러 시스템)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 목표
|
||||||
|
|
||||||
|
배당 귀족주 데이터 자동 수집을 로빙(rb8001)의 DB 기반 스케줄러 시스템에 통합하여, 환경변수 재시작 없이 동적 관리 가능하도록 한다.
|
||||||
|
|
||||||
|
**참고**: 로빙 스케줄러 시스템은 `DOCS/journey/troubleshooting/260102_db_scheduler_management.md` 참조
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 현재 상태
|
||||||
|
|
||||||
|
### 완료된 작업
|
||||||
|
|
||||||
|
1. **데이터 수집 스크립트**: `goosefarminvesting/backend/scripts/collect_dividends.py` 수동 실행으로 전체 69개 종목 수집 완료
|
||||||
|
2. **Supabase 데이터**: `dividend_stocks`(69개), `dividend_history`(10,895건), `dividend_metrics`(68개) 저장 완료
|
||||||
|
|
||||||
|
### 미완료 작업
|
||||||
|
|
||||||
|
1. **자동 수집 설정**: 현재 수동 실행만 가능, 자동 스케줄링 미구현
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 구현 계획
|
||||||
|
|
||||||
|
### Phase 1: rb8001 스케줄러 작업 생성
|
||||||
|
|
||||||
|
**작업 내용**:
|
||||||
|
1. `rb8001/app/scheduler/jobs/dividend_collector.py` 생성
|
||||||
|
- `_run_dividend_collector_with_logging()` 함수 구현
|
||||||
|
- `subprocess.run()`으로 `collect_dividends.py --update-all` 실행
|
||||||
|
- 로깅: 시작/완료/에러 기록
|
||||||
|
2. 스크립트 경로: `/home/admin/goosefarminvesting/backend/scripts/collect_dividends.py`
|
||||||
|
|
||||||
|
**예상 시간**: 30분
|
||||||
|
|
||||||
|
**파일 참조**:
|
||||||
|
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시
|
||||||
|
- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 구조 확인
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 2: DB에 스케줄 등록
|
||||||
|
|
||||||
|
**작업 내용**:
|
||||||
|
1. `scheduled_jobs` 테이블에 레코드 추가
|
||||||
|
- `name`: `'dividend_collector'`
|
||||||
|
- `job_type`: `'dividend_collector'`
|
||||||
|
- `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'`
|
||||||
|
|
||||||
|
**예상 시간**: 20분
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 3: 테스트 및 검증
|
||||||
|
|
||||||
|
**작업 내용**:
|
||||||
|
1. rb8001 서버 재시작 후 스케줄 자동 로드 확인
|
||||||
|
2. 수동 실행 테스트: `POST /api/scheduler/jobs/dividend_collector/run`
|
||||||
|
3. Supabase 데이터 확인: `dividend_history` 테이블 최신 데이터 확인
|
||||||
|
|
||||||
|
**예상 시간**: 20분
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 아키텍처
|
||||||
|
|
||||||
|
### 데이터 흐름
|
||||||
|
|
||||||
|
```
|
||||||
|
rb8001 스케줄러 (APScheduler)
|
||||||
|
↓ (매주 일요일 새벽 3시)
|
||||||
|
dividend_collector.py (subprocess.run)
|
||||||
|
↓
|
||||||
|
goosefarminvesting/backend/scripts/collect_dividends.py --update-all
|
||||||
|
↓
|
||||||
|
Supabase (dividend_stocks, dividend_history, dividend_metrics)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 스케줄러 패턴
|
||||||
|
|
||||||
|
- `scheduled_jobs` 테이블에 스케줄 정의 저장
|
||||||
|
- `db_loader.py`의 `JOB_TYPE_MAP`으로 job_type → 함수 매핑
|
||||||
|
- `_run_*_with_logging()` sync 래퍼 함수 패턴
|
||||||
|
- 환경변수 재시작 없이 DB에서 동적 관리
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 파일 참조
|
||||||
|
|
||||||
|
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시
|
||||||
|
- `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`: 실행 시간 참고
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 다음 단계
|
||||||
|
|
||||||
|
1. Phase 1 실행: rb8001 스케줄러 작업 생성
|
||||||
|
2. Phase 2 실행: DB에 스케줄 등록
|
||||||
|
3. Phase 3 실행: 테스트 및 검증
|
||||||
|
4. 로빙 troubleshooting 문서 작성: 구현 완료 후 기록
|
||||||
Loading…
x
Reference in New Issue
Block a user