"""
AI Chatbot Service - Minimal Test Version
No database dependencies - just tests OpenAI integration
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import logging
import httpx
import os

# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# Get settings from environment
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
DEFAULT_AI_MODEL = os.getenv("DEFAULT_AI_MODEL", "gpt-4o-mini")
OLLAMA_URL = os.getenv("OLLAMA_URL", "http://ollama:11434")

# Create FastAPI app
app = FastAPI(
    title="AI Chatbot Service",
    description="Enterprise AI Chatbot & Virtual Assistant Platform",
    version="1.0.0"
)

# CORS middleware
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


@app.get("/")
async def root():
    """Health check endpoint"""
    return {
        "service": "AI Chatbot Service",
        "status": "running",
        "version": "1.0.0"
    }


@app.get("/health")
async def health_check():
    """Detailed health check"""
    return {
        "status": "healthy",
        "ai_provider": "openai" if OPENAI_API_KEY else "not_configured",
        "openai_configured": bool(OPENAI_API_KEY)
    }


@app.post("/api/v1/chat")
async def chat(request: dict):
    """
    Simple chat endpoint - sends message to OpenAI
    """
    message = request.get("message", "")

    if not OPENAI_API_KEY:
        return {"error": "OpenAI API key not configured", "success": False}

    try:
        async with httpx.AsyncClient() as client:
            response = await client.post(
                "https://api.openai.com/v1/chat/completions",
                headers={
                    "Authorization": f"Bearer {OPENAI_API_KEY}",
                    "Content-Type": "application/json"
                },
                json={
                    "model": DEFAULT_AI_MODEL,
                    "messages": [
                        {"role": "system", "content": "You are a helpful AI assistant."},
                        {"role": "user", "content": message}
                    ],
                    "temperature": 0.7,
                    "max_tokens": 1000
                },
                timeout=60.0
            )

            data = response.json()

            if response.status_code != 200:
                return {
                    "error": data.get("error", {}).get("message", "API error"),
                    "success": False
                }

            return {
                "response": data["choices"][0]["message"]["content"],
                "model": DEFAULT_AI_MODEL,
                "provider": "openai",
                "success": True
            }

    except Exception as e:
        logger.error(f"Chat error: {e}")
        return {"error": str(e), "success": False}


@app.get("/api/v1/ai/status")
async def ai_status():
    """Check AI provider status"""
    return {
        "openai": {
            "configured": bool(OPENAI_API_KEY),
            "model": DEFAULT_AI_MODEL,
            "api_key_prefix": OPENAI_API_KEY[:20] + "..." if OPENAI_API_KEY else None
        },
        "ollama": {
            "url": OLLAMA_URL
        }
    }


if __name__ == "__main__":
    import uvicorn
    uvicorn.run(
        "app.main_simple:app",
        host="0.0.0.0",
        port=8000,
        reload=True
    )
