|
|
from functools import lru_cache |
|
|
|
|
|
from pydantic import Field |
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict |
|
|
|
|
|
|
|
|
class Settings(BaseSettings): |
|
|
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") |
|
|
|
|
|
mongo_uri: str = Field(..., alias="MONGO_URI") |
|
|
mongo_db: str = Field("wallet_sync", alias="MONGO_DB") |
|
|
mongo_collection: str = Field("autocategory", alias="MONGO_COLLECTION") |
|
|
api_logs_collection: str = Field("api_logs", alias="MONGO_API_LOGS_COLLECTION") |
|
|
|
|
|
openai_api_key: str = Field(..., alias="OPENAI_API_KEY") |
|
|
openai_model: str = Field("gpt-4o-mini", alias="OPENAI_MODEL") |
|
|
|
|
|
category_cache_ttl_seconds: int = Field(300, alias="CATEGORY_CACHE_TTL") |
|
|
|
|
|
|
|
|
@lru_cache |
|
|
def get_settings() -> Settings: |
|
|
return Settings() |
|
|
|
|
|
|
|
|
settings = get_settings() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|