docs: 베이지안 가치평가 계획 문서 정리
- Phase 2 완료 확인 (이미 구현됨) → 남은 작업에서 제거 - 문서 참조 경로 수정 (archive → plans) - 오타 수정 (l## → ##) - 배당 귀족주 계획 삭제 (계획 변경)
This commit is contained in:
parent
b7405e53d2
commit
77033d5305
@ -61,10 +61,6 @@
|
|||||||
|
|
||||||
## 남은 작업
|
## 남은 작업
|
||||||
|
|
||||||
### Phase 2
|
|
||||||
- 실제 Likelihood 데이터 파싱 (Neo4j에서 invstSumValText 추출)
|
|
||||||
- `valuate_startup()` 함수에 `calculate_posterior_with_likelihood` 통합
|
|
||||||
|
|
||||||
### Phase 3
|
### Phase 3
|
||||||
- Beta(α,β) 분포 업데이트 로직 (현재는 mu, sigma만 저장)
|
- Beta(α,β) 분포 업데이트 로직 (현재는 mu, sigma만 저장)
|
||||||
- 30일 주기 재계산 스케줄러 (scheduler_repository 활용)
|
- 30일 주기 재계산 스케줄러 (scheduler_repository 활용)
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
# 베이지안 스타트업 가치평가 - 남은 작업
|
# 베이지안 스타트업 가치평가 - 남은 작업
|
||||||
|
|
||||||
**날짜**: 2026-01-12
|
**날짜**: 2026-01-12
|
||||||
**관련 문서**: `archive/251016_bayesian_startup_valuation.md`
|
**수정일**: 2026-01-20 (Phase 2 완료 확인, 문서 정리)
|
||||||
|
**관련 문서**: `plans/251016_bayesian_startup_valuation.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -11,7 +12,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
l## Phase 3: 추가 작업
|
## Phase 3: 추가 작업
|
||||||
|
|
||||||
- Beta(α,β) 분포 업데이트 로직 (현재는 mu, sigma만 저장)
|
- Beta(α,β) 분포 업데이트 로직 (현재는 mu, sigma만 저장)
|
||||||
- 30일 주기 재계산 스케줄러 (scheduler_repository 활용)
|
- 30일 주기 재계산 스케줄러 (scheduler_repository 활용)
|
||||||
@ -23,5 +24,5 @@ l## Phase 3: 추가 작업
|
|||||||
|
|
||||||
- Phase 1 구현: `troubleshooting/260112_bayesian_valuation_phase1_implementation.md`
|
- Phase 1 구현: `troubleshooting/260112_bayesian_valuation_phase1_implementation.md`
|
||||||
- Phase 2 구현: `troubleshooting/260112_bayesian_valuation_phase2_3_implementation.md`
|
- Phase 2 구현: `troubleshooting/260112_bayesian_valuation_phase2_3_implementation.md`
|
||||||
- 원본 계획 문서: `plans/archive/251016_bayesian_startup_valuation.md`
|
- 원본 계획 문서: `plans/251016_bayesian_startup_valuation.md`
|
||||||
|
|
||||||
|
|||||||
@ -1,163 +0,0 @@
|
|||||||
# 배당 귀족주 자동 수집 로빙 통합 계획
|
|
||||||
|
|
||||||
**작성일**: 2026-01-17
|
|
||||||
**작성자**: 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개) 저장 완료
|
|
||||||
3. **Phase 2 완료**: DB 스케줄 등록 완료 (`scheduled_jobs` 테이블, `JOB_TYPE_MAP` 매핑, 자동 배포 및 등록 확인)
|
|
||||||
|
|
||||||
### 미완료 작업
|
|
||||||
|
|
||||||
1. **Phase 1**: `dividend_collector_service.py`의 `collect_all_dividends()` 실제 로직 구현 (현재 placeholder)
|
|
||||||
2. **Phase 3**: 수동 실행 테스트 및 검증
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 구현 계획
|
|
||||||
|
|
||||||
### Phase 1: rb8001 서비스 및 스케줄러 작업 생성
|
|
||||||
|
|
||||||
**작업 내용**:
|
|
||||||
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()`으로 서비스 함수 실행 (기존 패턴과 동일)
|
|
||||||
- 로깅: 시작/완료/에러 기록
|
|
||||||
|
|
||||||
**구현 가이드**:
|
|
||||||
- `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에 스케줄 등록 ✅ 완료
|
|
||||||
|
|
||||||
**작업 내용**:
|
|
||||||
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`에 매핑 추가
|
|
||||||
```python
|
|
||||||
"dividend_collector": {
|
|
||||||
"func": "_run_dividend_collector_with_logging",
|
|
||||||
"module": "app.scheduler.jobs.dividend_collector"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**예상 시간**: 20분
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Phase 3: 테스트 및 검증
|
|
||||||
|
|
||||||
**작업 내용**:
|
|
||||||
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분
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 아키텍처
|
|
||||||
|
|
||||||
### 데이터 흐름
|
|
||||||
|
|
||||||
```
|
|
||||||
rb8001 스케줄러 (APScheduler)
|
|
||||||
↓ (매주 일요일 새벽 3시)
|
|
||||||
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)
|
|
||||||
```
|
|
||||||
|
|
||||||
**기존 패턴 준수**:
|
|
||||||
- `subprocess.run()` 대신 내부 모듈 import 사용 (`diary_generator.py`, `companyx_news.py` 참고)
|
|
||||||
- `_run_*_with_logging()` sync 래퍼 → `asyncio.run()` → 내부 서비스 async 함수 실행
|
|
||||||
|
|
||||||
### 스케줄러 패턴
|
|
||||||
|
|
||||||
- `scheduled_jobs` 테이블에 스케줄 정의 저장
|
|
||||||
- `db_loader.py`의 `JOB_TYPE_MAP`으로 job_type → 함수 매핑
|
|
||||||
- `_run_*_with_logging()` sync 래퍼 함수 패턴
|
|
||||||
- 환경변수 재시작 없이 DB에서 동적 관리
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 파일 참조
|
|
||||||
|
|
||||||
- `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: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 2 완료: DB 스케줄 등록
|
|
||||||
2. Phase 1 진행: rb8001 서비스 로직 구현 (TDD로 테스트하면서)
|
|
||||||
3. Phase 3 실행: 수동 실행 테스트 및 검증
|
|
||||||
4. 로빙 troubleshooting 문서 작성: 구현 완료 후 기록
|
|
||||||
Loading…
x
Reference in New Issue
Block a user