route optimizer agent with dailygrubs ai assign
This commit is contained in:
@@ -254,11 +254,11 @@ class OrderAgent(SpecializedAgent):
|
||||
if email and not self._is_valid_email(email):
|
||||
warnings.append("Invalid email format")
|
||||
|
||||
pickup_pincode = order_data.get("pickup_address", {}).get("pincode", "")
|
||||
pickup_pincode = self._addr_pincode(order_data, "pickup_address")
|
||||
if not self._is_valid_pincode(pickup_pincode):
|
||||
errors.append("Invalid pickup pincode")
|
||||
|
||||
delivery_pincode = order_data.get("delivery_address", {}).get("pincode", "")
|
||||
delivery_pincode = self._addr_pincode(order_data, "delivery_address")
|
||||
if not self._is_valid_pincode(delivery_pincode):
|
||||
errors.append("Invalid delivery pincode")
|
||||
|
||||
@@ -280,8 +280,8 @@ class OrderAgent(SpecializedAgent):
|
||||
}
|
||||
|
||||
def _categorize_order_data(self, order_data: Dict) -> Dict[str, Any]:
|
||||
pickup_pincode = order_data.get("pickup_address", {}).get("pincode", "")[:3]
|
||||
delivery_pincode = order_data.get("delivery_address", {}).get("pincode", "")[:3]
|
||||
pickup_pincode = self._addr_pincode(order_data, "pickup_address")[:3]
|
||||
delivery_pincode = self._addr_pincode(order_data, "delivery_address")[:3]
|
||||
|
||||
if pickup_pincode == delivery_pincode:
|
||||
zone_type = ZoneType.LAST_MILE.value
|
||||
@@ -330,7 +330,18 @@ class OrderAgent(SpecializedAgent):
|
||||
import re
|
||||
return bool(re.match(self._validation_rules["email_pattern"], email))
|
||||
|
||||
def _is_valid_pincode(self, pincode: str) -> bool:
|
||||
@staticmethod
|
||||
def _addr_pincode(order_data: Dict, key: str) -> str:
|
||||
"""Pincode as a string, tolerant of a missing/None address block or a
|
||||
numeric pincode (valid JSON may send either). Never raises."""
|
||||
addr = order_data.get(key) or {}
|
||||
if not isinstance(addr, dict):
|
||||
return ""
|
||||
pincode = addr.get("pincode")
|
||||
return str(pincode) if pincode is not None else ""
|
||||
|
||||
def _is_valid_pincode(self, pincode) -> bool:
|
||||
pincode = str(pincode) if pincode is not None else ""
|
||||
return len(pincode) == self._validation_rules["pincode_length"] and pincode.isdigit()
|
||||
|
||||
async def think(self, context: str, options: List[str] = None) -> str:
|
||||
|
||||
Reference in New Issue
Block a user