docs: 베이지안 가치평가 계획 문서 정리

- Phase 2 완료 확인 (이미 구현됨) → 남은 작업에서 제거
- 문서 참조 경로 수정 (archive → plans)
- 오타 수정 (l## → ##)
- 배당 귀족주 계획 삭제 (계획 변경)
This commit is contained in:
Claude-51124 2026-01-20 09:30:30 +09:00
parent b7405e53d2
commit 77033d5305
3 changed files with 4 additions and 170 deletions

View File

@ -61,10 +61,6 @@
## 남은 작업
### Phase 2
- 실제 Likelihood 데이터 파싱 (Neo4j에서 invstSumValText 추출)
- `valuate_startup()` 함수에 `calculate_posterior_with_likelihood` 통합
### Phase 3
- Beta(α,β) 분포 업데이트 로직 (현재는 mu, sigma만 저장)
- 30일 주기 재계산 스케줄러 (scheduler_repository 활용)

View File

@ -1,7 +1,8 @@
# 베이지안 스타트업 가치평가 - 남은 작업
**날짜**: 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만 저장)
- 30일 주기 재계산 스케줄러 (scheduler_repository 활용)
@ -23,5 +24,5 @@ l## Phase 3: 추가 작업
- Phase 1 구현: `troubleshooting/260112_bayesian_valuation_phase1_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`

View File

@ -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 문서 작성: 구현 완료 후 기록