# user_journey_service/core/config.py
from pydantic_settings import BaseSettings
from functools import lru_cache
from typing import Optional
import os
from pathlib import Path

# Calculate the CORRECT path to .env
# .env is in user_journey_service/, NOT in user_journey_service/core/
BASE_DIR = Path(__file__).parent.parent  # Go up one level
ENV_PATH = BASE_DIR / '.env'

print(f"Looking for .env at: {ENV_PATH}")
print(f".env exists: {ENV_PATH.exists()}")

if ENV_PATH.exists():
    # Also load it into environment for duration_estimator.py
    from dotenv import load_dotenv
    load_dotenv(ENV_PATH)
    print(f"Loaded .env into environment")

class Settings(BaseSettings):
    # Choose your LLM provider: "openai", "ollama", or "local"
    PROVIDER: str = "openai"  # Default to OpenAI
    
    # Model names
    LLM1: str = "gpt-3.5-turbo"  # Use free tier model
    LLM2: str = "gpt-3.5-turbo"
    LLM_FOR_REVIEW: str = "gpt-3.5-turbo"
    
    # Model parameters
    TEMPERATURE: float = 0.7
    SEED: int = 42
    TIMEOUT: int = 6000
    
    # OpenAI API Key (get from https://platform.openai.com/api-keys)
    OPENAI_API_KEY: Optional[str] = None
    
    # Ollama settings (if using local models)
    OLLAMA_URL: str = "http://localhost:11434"
    
    # Azure fields - make optional since we're not using Azure
    OPENAI_KEY1: Optional[str] = None
    OPENAI_KEY2: Optional[str] = None
    ENDPOINT1: Optional[str] = None
    ENDPOINT2: Optional[str] = None
    API_VERSION1: Optional[str] = None
    API_VERSION2: Optional[str] = None
    
    class Config:
        # Use the CORRECT path
        env_file = str(ENV_PATH)
        env_file_encoding = "utf-8"
        extra = "ignore"

@lru_cache()
def get_settings() -> Settings:
    settings = Settings()
    print(f"Settings loaded: PROVIDER={settings.PROVIDER}, LLM1={settings.LLM1}")
    print(f"OPENAI_API_KEY is set: {bool(settings.OPENAI_API_KEY)}")
    if settings.OPENAI_API_KEY:
        print(f"OPENAI_API_KEY starts with: {settings.OPENAI_API_KEY[:10]}...")
    return settings

settings = get_settings()