from agents.planner import detect_intent from agents.reasoner import ( run_slotting_analysis, run_picking_optimization ) import pandas as pd class AutoWarehouseAgent: def run(self, message, slotting_df, picking_df): """ Returns a structured dictionary: { "report": markdown text, "route_image": image or None, "slotting_table": dataframe or empty df } """ task = detect_intent(message.lower().strip()) # Debug prints print(f"๐Ÿง  DETECTED TASK: {task}") print("๐Ÿ“ฆ Slotting DF:", slotting_df) print("๐Ÿšš Picking DF:", picking_df) # ------------------------------------------------------ # 1๏ธโƒฃ SLOTTING # ------------------------------------------------------ if task == "slotting": explanation, slot_plan = run_slotting_analysis(message, slotting_df) return { "report": f"### ๐Ÿ“ฆ Slotting Optimization Report\n\n{explanation}", "route_image": None, "slotting_table": slot_plan } # ------------------------------------------------------ # 2๏ธโƒฃ PICKING # ------------------------------------------------------ if task == "picking": explanation, route_img = run_picking_optimization(message, picking_df) return { "report": f"### ๐Ÿšš Picking Route Optimization\n\n{explanation}", "route_image": route_img, "slotting_table": pd.DataFrame() } # ------------------------------------------------------ # 3๏ธโƒฃ FULL REPORT (both slotting + picking) # ------------------------------------------------------ if task == "report": exp1, slot_plan = run_slotting_analysis(message, slotting_df) exp2, route_img = run_picking_optimization(message, picking_df) combined_report = ( "### ๐Ÿงพ Full Warehouse Intelligence Report\n\n" "#### ๐Ÿ“ฆ Slotting Optimization\n" + exp1 + "\n\n---\n\n" "#### ๐Ÿšš Picking Optimization\n" + exp2 ) return { "report": combined_report, "route_image": route_img, "slotting_table": slot_plan } # ------------------------------------------------------ # โŒ FALLBACK # ------------------------------------------------------ return { "report": ( "### โ“ Unable to Understand Request\n" "I couldn't determine whether your request is about:\n" "- Slotting optimization\n" "- Picking route planning\n" "- Full warehouse report\n\n" "Try rewriting your query." ), "route_image": None, "slotting_table": pd.DataFrame() }