44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
|
|
"""Application configuration."""
|
||
|
|
from typing import Optional
|
||
|
|
from pydantic_settings import BaseSettings
|
||
|
|
from pydantic import Field
|
||
|
|
|
||
|
|
|
||
|
|
class Settings(BaseSettings):
|
||
|
|
"""Application settings."""
|
||
|
|
|
||
|
|
# Application
|
||
|
|
app_name: str = "Pension Quant Platform"
|
||
|
|
environment: str = Field(default="development", env="ENVIRONMENT")
|
||
|
|
secret_key: str = Field(..., env="SECRET_KEY")
|
||
|
|
|
||
|
|
# Database
|
||
|
|
database_url: str = Field(..., env="DATABASE_URL")
|
||
|
|
|
||
|
|
# Redis
|
||
|
|
redis_url: str = Field(default="redis://localhost:6379/0", env="REDIS_URL")
|
||
|
|
|
||
|
|
# Celery
|
||
|
|
celery_broker_url: str = Field(default="redis://localhost:6379/1", env="CELERY_BROKER_URL")
|
||
|
|
celery_result_backend: str = Field(default="redis://localhost:6379/2", env="CELERY_RESULT_BACKEND")
|
||
|
|
|
||
|
|
# Data Collection
|
||
|
|
data_collection_hour: int = Field(default=18, env="DATA_COLLECTION_HOUR")
|
||
|
|
data_collection_minute: int = Field(default=0, env="DATA_COLLECTION_MINUTE")
|
||
|
|
|
||
|
|
# Backtest
|
||
|
|
default_commission_rate: float = 0.0015 # 0.15%
|
||
|
|
default_initial_capital: float = 10000000.0 # 1천만원
|
||
|
|
|
||
|
|
# API
|
||
|
|
api_v1_prefix: str = "/api/v1"
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
env_file = ".env"
|
||
|
|
case_sensitive = False
|
||
|
|
extra = "ignore"
|
||
|
|
|
||
|
|
|
||
|
|
# Global settings instance
|
||
|
|
settings = Settings()
|