from pydantic_settings import BaseSettings from typing import Optional class Settings(BaseSettings): ENVIRONMENT: str = "dev" API_BASE_URL: str = "http://localhost:8080" WEB_BASE_URL: str = "http://localhost:3003" DB_HOST: str = "localhost" DB_PORT: int = 5432 DB_NAME: str = "manage_system" DB_USERNAME: str = "postgres" DB_PASSWORD: str = "postgres" TEST_USERNAME: str = "admin" TEST_PASSWORD: str = "admin123" HEADLESS_BROWSER: bool = True BROWSER_TYPE: str = "chromium" REQUEST_TIMEOUT: int = 30000 class Config: env_file = ".env" case_sensitive = True class DevSettings(Settings): ENVIRONMENT: str = "dev" API_BASE_URL: str = "http://localhost:8080" WEB_BASE_URL: str = "http://localhost:3003" class StagingSettings(Settings): ENVIRONMENT: str = "staging" API_BASE_URL: str = "http://staging-api.example.com" WEB_BASE_URL: str = "http://staging-web.example.com" class ProductionSettings(Settings): ENVIRONMENT: str = "production" API_BASE_URL: str = "https://api.example.com" WEB_BASE_URL: str = "https://example.com" def get_settings() -> Settings: env = Settings().ENVIRONMENT if env == "production": return ProductionSettings() elif env == "staging": return StagingSettings() else: return DevSettings() settings = get_settings()