from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware import os import sys from pathlib import Path # ------------------------------------------------------------ # Fix Python paths so imports like backend.api.routes.agent work # ------------------------------------------------------------ root_dir = Path(__file__).resolve().parents[2] sys.path.insert(0, str(root_dir)) # ------------------------------------------------------------ # Import ALL routers correctly # ------------------------------------------------------------ from backend.api.routes.agent import router as agent_router from backend.api.routes.admin import router as admin_router from backend.api.routes.rag import router as rag_router from backend.api.routes.web import router as web_router from backend.api.routes.analytics import router as analytics_router # ------------------------------------------------------------ # Main FastAPI app # ------------------------------------------------------------ app = FastAPI(title="IntegraChat API", version="1.0.0") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # ------------------------------------------------------------ # Route Registration (THIS FIXES YOUR 404) # ------------------------------------------------------------ app.include_router(agent_router, prefix="/agent", tags=["Agent"]) app.include_router(admin_router, prefix="/admin", tags=["Admin"]) app.include_router(rag_router, prefix="/rag", tags=["RAG"]) app.include_router(web_router, prefix="/web", tags=["Web"]) app.include_router(analytics_router, prefix="/analytics", tags=["Analytics"]) # ------------------------------------------------------------ # Health Check # ------------------------------------------------------------ @app.get("/health") def health(): return {"status": "ok", "version": "1.0.0"} # ------------------------------------------------------------ # Local Run # ------------------------------------------------------------ if __name__ == "__main__": import uvicorn port = int(os.getenv("API_PORT", "8000")) uvicorn.run("backend.api.main:app", host="0.0.0.0", port=port, reload=True)