MBG0903's picture
Update agents/planner.py
560c288 verified
def detect_intent(message: str):
"""
A robust, rule-based classifier for warehouse AI tasks.
Returns one of:
- "slotting"
- "picking"
- "forecast"
- "replenishment"
- "rebalancing"
- "workforce"
- "dock"
- "report"
"""
msg = message.lower().strip()
# -----------------------------
# FULL REPORT KEYWORDS (Highest Priority)
# -----------------------------
report_keywords = [
"full report", "overall performance", "warehouse report",
"summary", "end to end", "combined", "complete report",
"all optimizations", "generate full report"
]
# -----------------------------
# DEMAND FORECASTING KEYWORDS
# -----------------------------
forecast_keywords = [
"forecast", "predict", "demand", "future usage",
"consumption trend", "estimate usage", "project demand",
"usage forecast"
]
# -----------------------------
# REPLENISHMENT KEYWORDS
# -----------------------------
replenish_keywords = [
"replenish", "refill", "stock level", "stock levels",
"stockout", "stock-out", "low stock", "running low",
"replenishment", "min max", "restock", "safety stock"
]
# -----------------------------
# INVENTORY REBALANCING KEYWORDS
# -----------------------------
rebalancing_keywords = [
"rebalance", "redistribute", "inventory balancing",
"zone balancing", "congestion", "reduce aisle load",
"balance inventory", "redistribution"
]
# -----------------------------
# WORKFORCE OPTIMIZATION KEYWORDS
# -----------------------------
workforce_keywords = [
"workforce", "staff", "labour", "labor", "manpower",
"how many workers", "allocate workers", "workload",
"staffing requirement", "optimize workforce"
]
# -----------------------------
# DOCK SCHEDULING KEYWORDS
# -----------------------------
dock_keywords = [
"dock", "dock scheduling", "loading bay", "unloading",
"assign dock", "dock allocation", "door scheduling",
"truck scheduling"
]
# -----------------------------
# SLOTING KEYWORDS
# -----------------------------
slot_keywords = [
"slot", "slotting", "putaway", "storage location",
"rearrange items", "reorganize racks", "optimize space",
"velocity", "sku placement", "bin allocation"
]
# -----------------------------
# PICKING KEYWORDS
# -----------------------------
pick_keywords = [
"pick", "picking", "route", "path", "walk sequence",
"shortest path", "aisle", "rack", "order fulfillment",
"picklist"
]
# -----------------------------
# PRIORITY ORDER:
# 1. Full report
# 2. Forecast
# 3. Replenishment
# 4. Rebalancing
# 5. Workforce
# 6. Dock Scheduling
# 7. Slotting
# 8. Picking
# -----------------------------
if any(k in msg for k in report_keywords):
return "report"
if any(k in msg for k in forecast_keywords):
return "forecast"
if any(k in msg for k in replenish_keywords):
return "replenishment"
if any(k in msg for k in rebalancing_keywords):
return "rebalancing"
if any(k in msg for k in workforce_keywords):
return "workforce"
if any(k in msg for k in dock_keywords):
return "dock"
if any(k in msg for k in slot_keywords):
return "slotting"
if any(k in msg for k in pick_keywords):
return "picking"
# -----------------------------
# UNKNOWN → DEFAULT TO REPORT
# -----------------------------
return "report"