OpenTriage_AI / config /settings.py
KrishnaCosmic's picture
deployment
ce673e5
"""
Configuration settings for AI Engine.
Adapted for standalone deployment on Hugging Face Spaces.
"""
import os
from pathlib import Path
from dotenv import load_dotenv
ROOT_DIR = Path(__file__).parent.parent
load_dotenv(ROOT_DIR / '.env')
class Settings:
"""Application settings with optional environment variables for standalone operation."""
# MongoDB (optional - only needed if using DB features)
MONGO_URL: str = os.environ.get('MONGO_URL', '')
DB_NAME: str = os.environ.get('DB_NAME', 'opentriage')
# GitHub OAuth (optional for AI-only endpoints)
GITHUB_CLIENT_ID: str = os.environ.get('GITHUB_CLIENT_ID', '')
GITHUB_CLIENT_SECRET: str = os.environ.get('GITHUB_CLIENT_SECRET', '')
# JWT (optional for AI-only endpoints)
JWT_SECRET: str = os.environ.get('JWT_SECRET', 'dev-secret-change-in-prod')
# AI - Required for triage/chat features
OPENROUTER_API_KEY: str = os.environ.get('OPENROUTER_API_KEY', '')
OPENAI_API_KEY: str = os.environ.get('OPENAI_API_KEY', '')
# URLs
FRONTEND_URL: str = os.environ.get('FRONTEND_URL', "http://localhost:3000")
API_URL: str = os.environ.get('API_URL', "http://localhost:8000")
BACKEND_TS_URL: str = os.environ.get('BACKEND_TS_URL', "http://localhost:3000")
# CORS
ALLOWED_ORIGINS: list = os.environ.get('CORS_ORIGINS',
"http://localhost:3000,http://localhost:5173,https://opentriage.onrender.com,https://open-triage.vercel.app"
).split(',')
# Spark Configuration (optional - disabled by default for HF deployment)
SPARK_ENABLED: bool = os.environ.get('SPARK_ENABLED', 'false').lower() == 'true'
SPARK_APP_NAME: str = os.environ.get('SPARK_APP_NAME', 'OpenTriage')
SPARK_MASTER: str = os.environ.get('SPARK_MASTER', 'local[*]')
SPARK_DRIVER_MEMORY: str = os.environ.get('SPARK_DRIVER_MEMORY', '4g')
SPARK_EXECUTOR_MEMORY: str = os.environ.get('SPARK_EXECUTOR_MEMORY', '2g')
SPARK_LOG_LEVEL: str = os.environ.get('SPARK_LOG_LEVEL', 'WARN')
# Environment
ENVIRONMENT: str = os.environ.get('ENVIRONMENT', 'development')
@property
def is_production(self) -> bool:
return self.ENVIRONMENT.lower() == 'production'
@property
def api_key(self) -> str:
"""Get the active API key (prefer OpenRouter)."""
return self.OPENROUTER_API_KEY or self.OPENAI_API_KEY
settings = Settings()