from pydantic_settings import BaseSettings from typing import Optional, Dict, Any import os from dotenv import load_dotenv load_dotenv() class Settings(BaseSettings): # Application APP_NAME: str = "TestAuto" DEBUG: bool = False VERSION: str = "1.0.0" # API API_V1_STR: str = "/api/v1" PROJECT_NAME: str = "TestAuto API" # Security SECRET_KEY: str = os.getenv("SECRET_KEY", "your-secret-key") ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 8 # 8 days # Database POSTGRES_SERVER: str = os.getenv("POSTGRES_SERVER", "localhost") POSTGRES_USER: str = os.getenv("POSTGRES_USER", "postgres") POSTGRES_PASSWORD: str = os.getenv("POSTGRES_PASSWORD", "postgres") POSTGRES_DB: str = os.getenv("POSTGRES_DB", "testauto") SQLALCHEMY_DATABASE_URI: Optional[str] = None # AI Providers OPENAI_API_KEY: Optional[str] = os.getenv("OPENAI_API_KEY") OPENROUTER_API_KEY: Optional[str] = os.getenv("OPENROUTER_API_KEY") LOCAL_LLM_PATH: Optional[str] = os.getenv("LOCAL_LLM_PATH") # Message Queue RABBITMQ_HOST: str = os.getenv("RABBITMQ_HOST", "localhost") RABBITMQ_PORT: int = int(os.getenv("RABBITMQ_PORT", "5672")) RABBITMQ_USER: str = os.getenv("RABBITMQ_USER", "guest") RABBITMQ_PASSWORD: str = os.getenv("RABBITMQ_PASSWORD", "guest") # Test Management Tools TESTRAIL_API_KEY: Optional[str] = os.getenv("TESTRAIL_API_KEY") TESTRAIL_URL: Optional[str] = os.getenv("TESTRAIL_URL") JIRA_API_TOKEN: Optional[str] = os.getenv("JIRA_API_TOKEN") JIRA_URL: Optional[str] = os.getenv("JIRA_URL") QTEST_API_TOKEN: Optional[str] = os.getenv("QTEST_API_TOKEN") QTEST_URL: Optional[str] = os.getenv("QTEST_URL") # Document Processing UPLOAD_FOLDER: str = "uploads" MAX_CONTENT_LENGTH: int = 16 * 1024 * 1024 # 16MB ALLOWED_EXTENSIONS: set = {"pdf", "docx", "doc", "txt", "png", "jpg", "jpeg"} # Logging LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO") LOG_FILE: str = "logs/testauto.log" # Docker DOCKER_IMAGE: str = "testauto:latest" def __init__(self, **kwargs: Any): super().__init__(**kwargs) self.SQLALCHEMY_DATABASE_URI = ( f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}" f"@{self.POSTGRES_SERVER}/{self.POSTGRES_DB}" ) settings = Settings()