OpenTriage_AI / config /settings.py
KrishnaCosmic's picture
deployment
ce673e5
Raw History Blame Contribute Delete
2.43 kB
"""
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()