datn-fastapi / chatbot /routes /food_replace_route.py
truglpk3's picture
.
29b313e
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from chatbot.agents.graphs.food_similarity_graph import food_similarity_graph
import logging
# --- Cấu hình logging ---
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# --- Định nghĩa request body ---
class Request(BaseModel):
user_id: str
food_old: dict
# --- Tạo router ---
router = APIRouter(
prefix="/food-replace",
tags=["Food Replace"]
)
try:
replace_app = food_similarity_graph()
except Exception as e:
logger.error(f"❌ Failed to compile Food Graph: {e}")
raise e
@router.post("/")
def replace_food(request: Request):
try:
logger.info(f"Nhận được yêu cầu thay thế món từ user: {request.user_id}")
food_data = request.food_old.copy()
bounds = food_data.get("solver_bounds")
if bounds and isinstance(bounds, list):
food_data["solver_bounds"] = tuple(bounds)
elif not bounds:
food_data["solver_bounds"] = (0.5, 2.0)
initial_state = {
"user_id": request.user_id,
"food_old": food_data,
}
final_state = replace_app.invoke(initial_state)
response = {"best_replacement": final_state["best_replacement"]}
if not response:
return {"status": "failed", "response": []}
return {"status": "success", "response": response}
except Exception as e:
logger.error(f"Lỗi xử lý thay thế món: {e}", exc_info=True)
raise HTTPException(status_code=500, detail=f"Lỗi hệ thống: {str(e)}")