Rename get_order_status to get_order, add ecommerce list orders goal

This commit is contained in:
Laine
2025-04-11 17:14:10 -04:00
parent aba934e8b4
commit 4e0ff0e535
9 changed files with 193 additions and 36 deletions

View File

@@ -3,7 +3,7 @@ import json
# this is made to demonstrate functionality but it could just as durably be an API call
# called as part of a temporal activity with automatic retries
def get_order_status(args: dict) -> dict:
def get_order(args: dict) -> dict:
order_id = args.get("order_id")
@@ -17,10 +17,11 @@ def get_order_status(args: dict) -> dict:
for order in order_list:
if order["id"] == order_id:
if order["status"] == "shipped":
return{"status": order["status"], "tracking_id": order["tracking_id"]}
else:
return{"status": order["status"]}
return order
# if order["status"] == "shipped":
# return{"status": order["status"], "tracking_id": order["tracking_id"]}
# else:
# return{"status": order["status"]}
return_msg = "Order " + order_id + " not found."
return {"error": return_msg}

View File

@@ -0,0 +1,30 @@
from pathlib import Path
import json
def sorting(e):
return e['order_date']
def list_orders(args: dict) -> dict:
email_address = args.get("email_address")
file_path = Path(__file__).resolve().parent.parent / "data" / "customer_order_data.json"
if not file_path.exists():
return {"error": "Data file not found."}
with open(file_path, "r") as file:
data = json.load(file)
order_list = data["orders"]
rtn_order_list = []
for order in order_list:
if order["email"] == email_address:
rtn_order_list.append(order)
if len(rtn_order_list) > 0:
rtn_order_list.sort(key=sorting)
return {"orders": rtn_order_list}
else:
return_msg = "No orders for customer " + email_address + " found."
return {"error": return_msg}

View File

@@ -65,8 +65,8 @@ def track_package(args: dict) -> dict:
tracking_id = args.get("tracking_id")
api_key = os.getenv("PACKAGE_RAPIDAPI_KEY")
api_host = os.getenv("PACKAGE_RAPIDAPI_HOST", "trackingpackage.p.rapidapi.com")
api_key = os.getenv("RAPIDAPI_KEY")
api_host = os.getenv("RAPIDAPI_HOST_PACKAGE", "trackingpackage.p.rapidapi.com")
conn = http.client.HTTPSConnection(api_host)
headers = {
@@ -91,14 +91,19 @@ def track_package(args: dict) -> dict:
scheduled_delivery_date = json_data["ScheduledDeliveryDate"]
carrier = json_data["Carrier"]
status_summary = json_data["StatusSummary"]
tracking_details = json_data.get("TrackingDetails", [])
if tracking_details is not None and tracking_details[0] is not None:
last_tracking_update = tracking_details[0]["EventDateTimeInDateTimeFormat"]
tracking_link = ""
if carrier == "USPS":
tracking_link = f"https://tools.usps.com/go/TrackConfirmAction?qtc_tLabels1={tracking_id}"
#tracking_details = json_data.get("TrackingDetails", [])
elif carrier == "UPS":
tracking_link = f"https://www.ups.com/track?track=yes&trackNums={tracking_id}"
return {
"scheduled_delivery_date": scheduled_delivery_date,
"carrier": carrier,
"status_summary": status_summary,
"tracking_link": tracking_link,
"last_tracking_update": last_tracking_update
}