mwalker22 commited on
Commit
b5ac515
·
1 Parent(s): 44bcf58

1) Diagnostic changes to identify CORS errors on production deploymment; 2) Changes to improve UX on the Swagger UI page.

Browse files
Files changed (3) hide show
  1. backend/api/agent.py +3 -7
  2. backend/api/logging.py +11 -6
  3. backend/main.py +10 -0
backend/api/agent.py CHANGED
@@ -1,19 +1,15 @@
1
- from fastapi import APIRouter, HTTPException
2
- from pydantic import BaseModel
3
  from backend.agents.golf_langgraph import create_graph
4
  from backend.core.logging_config import logger
5
  import traceback
6
 
7
  router = APIRouter()
8
 
9
- class Query(BaseModel):
10
- query: str
11
-
12
  @router.post("/query")
13
- async def query_agent(query: Query):
14
  try:
15
  graph = create_graph()
16
- result = await graph.ainvoke({"input": query.query})
17
  return {"response": result["final_response"]}
18
  except Exception as e:
19
  logger.error("Exception in /query endpoint:", exc_info=True)
 
1
+ from fastapi import APIRouter, HTTPException, Form
 
2
  from backend.agents.golf_langgraph import create_graph
3
  from backend.core.logging_config import logger
4
  import traceback
5
 
6
  router = APIRouter()
7
 
 
 
 
8
  @router.post("/query")
9
+ async def query_agent(query: str = Form(...)):
10
  try:
11
  graph = create_graph()
12
+ result = await graph.ainvoke({"input": query})
13
  return {"response": result["final_response"]}
14
  except Exception as e:
15
  logger.error("Exception in /query endpoint:", exc_info=True)
backend/api/logging.py CHANGED
@@ -1,11 +1,16 @@
1
- from fastapi import APIRouter, HTTPException
2
  from pydantic import BaseModel
 
3
  from backend.core.logging_config import set_log_level, get_log_level, logger
4
 
5
  router = APIRouter()
6
 
7
- class LogLevel(BaseModel):
8
- level: str
 
 
 
 
9
 
10
  @router.get("/log-level")
11
  async def get_current_log_level():
@@ -13,10 +18,10 @@ async def get_current_log_level():
13
  return {"level": get_log_level()}
14
 
15
  @router.post("/log-level")
16
- async def update_log_level(log_level: LogLevel):
17
  """Update the logging level."""
18
  try:
19
- set_log_level(log_level.level)
20
- return {"message": f"Log level set to {log_level.level}"}
21
  except ValueError as e:
22
  raise HTTPException(status_code=400, detail=str(e))
 
1
+ from fastapi import APIRouter, HTTPException, Query
2
  from pydantic import BaseModel
3
+ from enum import Enum
4
  from backend.core.logging_config import set_log_level, get_log_level, logger
5
 
6
  router = APIRouter()
7
 
8
+ class LogLevelEnum(str, Enum):
9
+ DEBUG = "DEBUG"
10
+ INFO = "INFO"
11
+ WARNING = "WARNING"
12
+ ERROR = "ERROR"
13
+ CRITICAL = "CRITICAL"
14
 
15
  @router.get("/log-level")
16
  async def get_current_log_level():
 
18
  return {"level": get_log_level()}
19
 
20
  @router.post("/log-level")
21
+ async def update_log_level(level: LogLevelEnum = Query(..., description="Log level")):
22
  """Update the logging level."""
23
  try:
24
+ set_log_level(level)
25
+ return {"message": f"Log level set to {level}"}
26
  except ValueError as e:
27
  raise HTTPException(status_code=400, detail=str(e))
backend/main.py CHANGED
@@ -6,11 +6,21 @@ from fastapi.staticfiles import StaticFiles
6
  from backend.api import router as api_router
7
  from backend.core.logging_config import logger
8
  from dotenv import load_dotenv
 
9
 
10
  load_dotenv()
11
 
12
  app = FastAPI()
13
 
 
 
 
 
 
 
 
 
 
14
  # CORS middleware to allow frontend to talk to the backend
15
  allowed_origins_env = os.getenv("ALLOWED_ORIGINS")
16
  if allowed_origins_env:
 
6
  from backend.api import router as api_router
7
  from backend.core.logging_config import logger
8
  from dotenv import load_dotenv
9
+ from starlette.requests import Request
10
 
11
  load_dotenv()
12
 
13
  app = FastAPI()
14
 
15
+ from starlette.requests import Request
16
+
17
+ @app.middleware("http")
18
+ async def log_request_origin(request: Request, call_next):
19
+ origin = request.headers.get("origin")
20
+ logger.debug(f"Incoming request from Origin: {origin} | Path: {request.url.path}")
21
+ response = await call_next(request)
22
+ return response
23
+
24
  # CORS middleware to allow frontend to talk to the backend
25
  allowed_origins_env = os.getenv("ALLOWED_ORIGINS")
26
  if allowed_origins_env: