# ✅ FILE: main.py
from fastapi import FastAPI, Request
from pydantic import BaseModel
from chatbot import embedder, retriever, responder
from contextlib import asynccontextmanager
import uvicorn


@asynccontextmanager
async def lifespan(app: FastAPI):
    try:
        embedder.load_index_and_meta()
        print("FAISS index loaded.")
    except:
        print("FAISS index not found. Building it now...")
        embedder.build_and_save_index()
        print("FAISS index built and saved.")
    yield

app = FastAPI(lifespan=lifespan)

class ChatRequest(BaseModel):
    query: str

@app.post("/chat")
def chat(request: ChatRequest):
    query = request.query
    chunks = retriever.retrieve(query)
    response = responder.generate_answer(query, chunks)
    return {"response": response}

@app.get("/health")
def health():
    return {"status": "ok"}

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