docs: 불필요한 구현 문서 삭제
This commit is contained in:
parent
3e5c4308f9
commit
6362bc13c6
@ -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 실행: 테스트 및 검증
|
||||
Loading…
x
Reference in New Issue
Block a user