File size: 2,428 Bytes
ce673e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
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()