"""Centralized configuration management using pydantic-settings.""" import os from typing import Optional from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): """Application settings loaded from environment variables.""" model_config = SettingsConfigDict( env_file=".env", env_file_encoding="utf-8", extra="allow", case_sensitive=False, ) # Database postgres_connstring: str # Redis redis_url: str redis_prefix: str = "dataeyond-agent-service_" # Azure OpenAI - GPT-4o (map to .env names with double underscores) azureai_api_key_4o: str = Field(alias="azureai__api_key__4o", default="") azureai_endpoint_url_4o: str = Field(alias="azureai__endpoint__url__4o", default="") azureai_deployment_name_4o: str = Field(alias="azureai__deployment__name__4o", default="") azureai_api_version_4o: str = Field(alias="azureai__api__version__4o", default="") # Azure OpenAI - Embeddings azureai_api_key_embedding: str = Field(alias="azureai__api_key__embedding", default="") azureai_endpoint_url_embedding: str = Field(alias="azureai__endpoint__url__embedding", default="") azureai_deployment_name_embedding: str = Field(alias="azureai__deployment__name__embedding", default="") azureai_api_version_embedding: str = Field(alias="azureai__api__version__embedding", default="") # Azure Document Intelligence azureai_docintel_endpoint: str = Field(alias="azureai__docintel__endpoint", default="") azureai_docintel_key: str = Field(alias="azureai__docintel__key", default="") # Azure Blob Storage azureai_blob_sas: str = Field(alias="azureai__blob__sas", default="") azureai_container_endpoint: str = Field(alias="azureai__container__endpoint", default="") azureai_container_name: str = Field(alias="azureai__container__name", default="") azureai_container_account_name: str = Field(alias="azureai__container__account__name", default="") # Langfuse LANGFUSE_PUBLIC_KEY: str LANGFUSE_SECRET_KEY: str LANGFUSE_HOST: str # MongoDB (for users - existing) emarcal_mongo_endpoint_url: str = Field(alias="emarcal__mongo__endpoint__url", default="") emarcal_buma_mongo_dbname: str = Field(alias="emarcal__buma__mongo__dbname", default="") # JWT (for users - existing) emarcal_jwt_secret_key: str = Field(alias="emarcal__jwt__secret_key", default="") emarcal_jwt_algorithm: str = Field(alias="emarcal__jwt__algorithm", default="HS256") # Bcrypt salt (for users - existing) emarcal_bcrypt_salt: str = Field(alias="emarcal__bcrypt__salt", default="") # Singleton instance settings = Settings()