jira-ai-fixer/app/core/config.py

48 lines
1.6 KiB
Python

"""Application configuration."""
import os
from functools import lru_cache
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
# App
APP_NAME: str = "JIRA AI Fixer"
APP_VERSION: str = "2.0.0"
DEBUG: bool = False
SECRET_KEY: str = os.getenv("SECRET_KEY", "change-me-in-production-use-openssl-rand-hex-32")
# Database
DATABASE_URL: str = os.getenv("DATABASE_URL", "postgresql://postgres:postgres@postgres_database:5432/jira_fixer_v2")
# Redis
REDIS_URL: str = os.getenv("REDIS_URL", "redis://redis_redis:6379/0")
# JWT
JWT_SECRET: str = os.getenv("JWT_SECRET", "jwt-secret-change-in-production")
JWT_ALGORITHM: str = "HS256"
JWT_EXPIRE_MINUTES: int = 60 * 24 # 24 hours
JWT_REFRESH_DAYS: int = 7
# Email (Resend)
RESEND_API_KEY: str = os.getenv("RESEND_API_KEY", "")
EMAIL_FROM: str = os.getenv("EMAIL_FROM", "JIRA AI Fixer <noreply@startdata.com.br>")
# External APIs
OPENROUTER_API_KEY: str = os.getenv("OPENROUTER_API_KEY", "")
GITEA_URL: str = os.getenv("GITEA_URL", "https://gitea.startdata.com.br")
GITEA_TOKEN: str = os.getenv("GITEA_TOKEN", "")
# OAuth (for integrations)
JIRA_CLIENT_ID: str = os.getenv("JIRA_CLIENT_ID", "")
JIRA_CLIENT_SECRET: str = os.getenv("JIRA_CLIENT_SECRET", "")
GITHUB_CLIENT_ID: str = os.getenv("GITHUB_CLIENT_ID", "")
GITHUB_CLIENT_SECRET: str = os.getenv("GITHUB_CLIENT_SECRET", "")
class Config:
env_file = ".env"
@lru_cache()
def get_settings() -> Settings:
return Settings()
settings = get_settings()