penti/docs/QUICKSTART.md

277 lines
5.8 KiB
Markdown
Raw Normal View History

2026-01-31 23:30:51 +09:00
# 빠른 시작 가이드
## 🚀 로컬 개발 환경 설정
### 1. 환경 변수 설정
```bash
# .env 파일 생성
cp .env.example .env
```
`.env` 파일 편집:
```env
POSTGRES_USER=pension_user
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=pension_quant
SECRET_KEY=your-super-secret-key-min-32-chars-long
ENVIRONMENT=development
```
### 2. Docker 컨테이너 실행
```bash
# 모든 서비스 시작
docker-compose up -d
# 로그 확인
docker-compose logs -f
# 특정 서비스 로그 확인
docker-compose logs -f backend
```
### 3. 데이터베이스 초기화
```bash
# 데이터베이스 마이그레이션 실행
docker-compose exec backend alembic upgrade head
# TimescaleDB 확장 활성화 (수동으로 필요 시)
docker-compose exec postgres psql -U pension_user -d pension_quant -c "CREATE EXTENSION IF NOT EXISTS timescaledb;"
# price_data 테이블을 하이퍼테이블로 변환
docker-compose exec postgres psql -U pension_user -d pension_quant -c "SELECT create_hypertable('price_data', 'timestamp', if_not_exists => TRUE);"
```
### 4. 서비스 확인
모든 서비스가 정상적으로 실행되면 다음 URL에서 접근 가능합니다:
- **Backend API**: http://localhost:8000
- **API 문서 (Swagger)**: http://localhost:8000/docs
- **Frontend**: http://localhost:3000
- **Flower (Celery 모니터링)**: http://localhost:5555
- **PostgreSQL**: localhost:5432
헬스체크:
```bash
curl http://localhost:8000/health
```
응답:
```json
{
"status": "healthy",
"app_name": "Pension Quant Platform",
"environment": "development"
}
```
## 📊 백테스트 실행 예시
### API를 통한 백테스트 실행
```bash
curl -X POST "http://localhost:8000/api/v1/backtest/run" \
-H "Content-Type: application/json" \
-d '{
"name": "Multi-Factor 전략 백테스트",
"strategy_name": "multi_factor",
"start_date": "2020-01-01",
"end_date": "2023-12-31",
"initial_capital": 10000000,
"commission_rate": 0.0015,
"rebalance_frequency": "monthly",
"strategy_config": {
"count": 20,
"quality_weight": 0.3,
"value_weight": 0.3,
"momentum_weight": 0.4
}
}'
```
### 백테스트 결과 조회
```bash
# 백테스트 목록 조회
curl http://localhost:8000/api/v1/backtest/
# 특정 백테스트 조회 (ID는 위 실행 결과에서 반환됨)
curl http://localhost:8000/api/v1/backtest/{backtest_id}
```
### 사용 가능한 전략 목록 조회
```bash
curl http://localhost:8000/api/v1/backtest/strategies/list
```
응답:
```json
{
"strategies": [
{
"name": "multi_factor",
"description": "Multi-Factor Strategy (Quality + Value + Momentum)"
},
{
"name": "momentum",
"description": "Momentum Strategy (12M Return + K-Ratio)"
}
]
}
```
## 🗄️ 데이터 마이그레이션 (MySQL → PostgreSQL)
기존 make-quant-py의 MySQL 데이터를 PostgreSQL로 마이그레이션:
```bash
# 마이그레이션 스크립트 실행 (구현 예정)
docker-compose exec backend python scripts/migrate_mysql_to_postgres.py
```
## 🔧 개발 모드
### Backend만 로컬 실행
```bash
cd backend
# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 의존성 설치
pip install -r requirements.txt
# 환경 변수 설정 (PostgreSQL, Redis는 Docker로 실행 중)
export DATABASE_URL=postgresql://pension_user:pension_password@localhost:5432/pension_quant
export REDIS_URL=redis://localhost:6379/0
export CELERY_BROKER_URL=redis://localhost:6379/1
export SECRET_KEY=your-secret-key
# FastAPI 실행
uvicorn app.main:app --reload
```
### Frontend만 로컬 실행
```bash
cd frontend
# 의존성 설치
npm install
# 개발 서버 실행
npm start
```
### Celery 워커 로컬 실행
```bash
cd backend
# Worker
celery -A app.celery_worker worker --loglevel=info
# Beat (별도 터미널)
celery -A app.celery_worker beat --loglevel=info
# Flower (별도 터미널)
celery -A app.celery_worker flower
```
## 📈 데이터 수집
### 수동 데이터 수집 트리거
```bash
# API를 통한 수집 트리거 (구현 예정)
curl -X POST http://localhost:8000/api/v1/data/collect/trigger
```
### Celery Beat 스케줄 확인
Flower UI (http://localhost:5555)에서 스케줄 확인 가능
## 🐛 문제 해결
### 컨테이너가 시작되지 않는 경우
```bash
# 모든 컨테이너 중지
docker-compose down
# 볼륨 포함 완전 삭제
docker-compose down -v
# 재시작
docker-compose up -d
```
### 데이터베이스 연결 오류
```bash
# PostgreSQL 컨테이너 상태 확인
docker-compose ps postgres
# PostgreSQL 로그 확인
docker-compose logs postgres
# 수동 연결 테스트
docker-compose exec postgres psql -U pension_user -d pension_quant
```
### Backend 오류 확인
```bash
# Backend 로그 실시간 확인
docker-compose logs -f backend
# Backend 컨테이너 접속
docker-compose exec backend /bin/bash
# Python 패키지 확인
docker-compose exec backend pip list
```
## 🧪 테스트
```bash
# Backend 테스트
docker-compose exec backend pytest
# Coverage 포함
docker-compose exec backend pytest --cov=app --cov-report=html
```
## 📦 프로덕션 배포
```bash
# 프로덕션 모드로 빌드 및 실행
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
# 환경 변수는 반드시 프로덕션용으로 변경
# - SECRET_KEY: 강력한 랜덤 문자열
# - POSTGRES_PASSWORD: 강력한 비밀번호
# - CORS 설정 제한
```
## 📝 다음 단계
1. ✅ 백테스트 엔진 동작 확인
2. ⬜ 샘플 데이터 추가 (scripts/seed_data.py)
3. ⬜ 추가 전략 구현 (Magic Formula, Super Quality)
4. ⬜ Frontend UI 개발
5. ⬜ 리밸런싱 기능 구현
6. ⬜ Celery 데이터 수집 구현
## 🆘 도움말
- API 문서: http://localhost:8000/docs
- 이슈 리포트: GitHub Issues
- 문의: [프로젝트 관리자 이메일]