from __future__ import annotations from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): """ Centralized configuration loaded from environment variables. `.env` is supported for local development. """ model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") # OpenAI openai_api_key: str = Field(default="", alias="OPENAI_API_KEY") openai_model: str = Field(default="gpt-4o-mini", alias="OPENAI_MODEL") # Email email_user: str = Field(default="", alias="EMAIL_USER") email_pass: str = Field(default="", alias="EMAIL_PASS") imap_server: str = Field(default="", alias="IMAP_SERVER") imap_port: int = Field(default=993, alias="IMAP_PORT") imap_folder: str = Field(default="INBOX", alias="IMAP_FOLDER") smtp_server: str = Field(default="", alias="SMTP_SERVER") smtp_port: int = Field(default=587, alias="SMTP_PORT") smtp_use_tls: bool = Field(default=True, alias="SMTP_USE_TLS") smtp_use_ssl: bool = Field(default=False, alias="SMTP_USE_SSL") # App app_host: str = Field(default="127.0.0.1", alias="APP_HOST") app_port: int = Field(default=8000, alias="APP_PORT") log_level: str = Field(default="INFO", alias="LOG_LEVEL") # Storage sqlite_path: str = Field(default="database/db.sqlite3", alias="SQLITE_PATH") settings = Settings()