mvp_2_hf_dev / app.py
srivatsavdamaraju's picture
Update app.py
ee6c54f verified
import json
import warnings
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from fastapi.middleware.cors import CORSMiddleware
import os
# Import routes
# from routes import collections, ingestion, sessions, chat, system
from Redis.sessions import Redis_session_router
from Redis.sessions_new import redis_session_route_new
from Redis.sessions_old import Redis_session_router_old
# from Routes.main_chat_bot import main_chatbot_route
# from Routes.generate_report import Report_Generation_Router
# from report_generation.report_generation import Report_Generation_Router_v2
from s3.file_insertion_s3 import s3_bucket_router
from s3.rough2 import test_router
# from backend.main import login_apis_router
from s3.r3 import s3_bucket_router1
from s3_viewer_backend.s3_viewer import s3_viewer_router
from vector_db.retrival_qa_agent import RetrievalQA_router
# # from main_chat_2.main_chat import main_chat_router_v4
from main_chat5.main_chat_router import main_chat_router_v5
from report_generation.ppt_v2 import Report_Generation_Router_ppt_v2
from report_generation.pdf_v3 import Report_Generation_Router_pdf_v2
# from Routes.main_agent_chat_bot_v2 import main_chatbot_route_v2
from vector_db import qdrant_crud
from vector_db.qdrant_crud import Qdrant_router
# from agent_tools.autovis_tool import Autoviz_router
# from main_chat_2.main_chat import main_chat_router_v3
from DB_store_backup.agentic_context_convoid_management import Db_store_router
# Suppress warnings
warnings.filterwarnings("ignore", message="Qdrant client version.*is incompatible.*")
app = FastAPI(title="Combined AI Agent with Qdrant Collections and Redis Session Management")
# Add CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
print([route.path for route in app.routes])
# Include routers
# app.include_router(main_chatbot_route)
# app.include_router(Report_Generation_Router)
app.include_router(Redis_session_router)
app.include_router(redis_session_route_new)
# app.include_router(Redis_session_router_old)
app.include_router(Db_store_router)
app.include_router(s3_bucket_router)
# app.include_router(Autoviz_router)
# app.include_router(main_chat_router_v3)
app.include_router(s3_viewer_router)
app.include_router(s3_bucket_router1)
# app.include_router(main_chat_router_v4)
app.include_router(test_router)
app.include_router(Qdrant_router)
app.include_router(RetrievalQA_router)
# app.include_router(main_chatbot_route_v2)
# app.include_router(Report_Generation_Router_v2)
app.include_router(Report_Generation_Router_ppt_v2)
app.include_router(Report_Generation_Router_pdf_v2)
app.include_router(main_chat_router_v5)
#==================================login and user management routes==================================
# app.include_router(login_apis_router)
# ------------------- MIDDLEWARE -------------------
@app.middleware("http")
async def add_success_flag(request: Request, call_next):
response = await call_next(request)
# Only modify JSON responses
if "application/json" in response.headers.get("content-type", ""):
try:
body = b"".join([chunk async for chunk in response.body_iterator])
data = json.loads(body.decode())
# Add success flag
data["success"] = 200 <= response.status_code < 300
# Build new JSONResponse (auto handles Content-Length)
response = JSONResponse(
content=data,
status_code=response.status_code,
headers={k: v for k, v in response.headers.items() if k.lower() != "content-length"},
)
except Exception:
# fallback if response is not JSON parseable
pass
return response