from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", extra="ignore") APP_NAME: str = "APIsService" DB_HOST: str DB_PORT: int = 5432 DB_USER: str DB_PASSWORD: str DB_NAME: str DB_SSLMODE: str = "prefer" SUPABASE_DB_HOST: str SUPABASE_DB_PORT: int = 5432 SUPABASE_DB_USER: str SUPABASE_DB_PASSWORD: str SUPABASE_DB_NAME: str SUPABASE_DB_SSLMODE: str = "disable" SUPABASE_API_URL: str SUPABASE_API_KEY: str ROOT_PATH: str = "" TIMEZONE: str = "Asia/Bangkok" ADMIN_SECRET_KEY: str ADMIN_USERNAME: str ADMIN_PASSWORD: str API_KEY_ENC_SECRET: str | None = None # Debug settings DEBUG_AUTH: bool = False # Set to True to enable detailed authentication logging # Keycloak Authentication (for web pages only) KEYCLOAK_SERVER_URL: str = "http://keycloak:8080" KEYCLOAK_REALM: str = "master" KEYCLOAK_CLIENT_ID: str = "apiservice" KEYCLOAK_CLIENT_SECRET: str = "" KEYCLOAK_REDIRECT_URI: str = "http://localhost:8040/apiservice/auth/callback" # Airflow Integration AIRFLOW_API_URL: str = "http://airflow-webserver:8080" AIRFLOW_API_TOKEN: str = "" AIRFLOW_DAG_ID_FINANCE: str = "process_finance_excel" # MinIO Object Storage MINIO_ENDPOINT: str = "192.168.100.9:9000" MINIO_ACCESS_KEY: str = "" MINIO_SECRET_KEY: str = "" MINIO_BUCKET_FINANCE: str = "finance" MINIO_USE_SSL: bool = False settings = Settings()