Просмотр исходного кода

fix: parse ShopRenter API response items field correctly #87

- ShopRenter API returns orders in 'items' field, not 'data' or 'orders'
- Updated response parsing to check for response.items first
- Fixed handleGetOrder, handleListOrders to correctly extract orders from response
- Updated debug logging to show item count from items field
Claude 5 месяцев назад
Родитель
Сommit
82eea280f9

+ 2 - 1
supabase/functions/_shared/shoprenter-client.ts

@@ -597,8 +597,9 @@ export async function shopRenterApiRequest(
         endpoint: path,
         dataType: Array.isArray(data) ? 'array' : typeof data,
         itemCount: Array.isArray(data) ? data.length :
+                  (data.items ? data.items.length :
                   (data.data ? data.data.length :
-                  (data.orders ? data.orders.length : 'unknown')),
+                  (data.orders ? data.orders.length : 'unknown'))),
         responseKeys: Object.keys(data)
       })
     }

+ 3 - 3
supabase/functions/mcp-shoprenter/index.ts

@@ -197,7 +197,7 @@ async function fetchAllOrdersPages(
 
   while (hasMore && page < maxPages) {
     const response = await fetchOrders(shop_id, page, 100, filters);
-    const orders = Array.isArray(response) ? response : (response.data || response.orders || []);
+    const orders = Array.isArray(response) ? response : (response.items || response.data || response.orders || []);
 
     if (orders.length === 0) {
       hasMore = false;
@@ -273,7 +273,7 @@ async function handleGetOrder(args: Record<string, any>): Promise<ToolCallResult
       responseKeys: response && typeof response === 'object' ? Object.keys(response) : []
     });
 
-    const orders = Array.isArray(response) ? response : (response.data || response.orders || []);
+    const orders = Array.isArray(response) ? response : (response.items || response.data || response.orders || []);
 
     console.log('[MCP ShopRenter] API response:', { ordersCount: orders.length });
 
@@ -398,7 +398,7 @@ async function handleListOrders(args: Record<string, any>): Promise<ToolCallResu
 
     // Fetch orders from ShopRenter API
     const response = await fetchOrders(shop_id, 0, actualLimit, filters);
-    const orders = Array.isArray(response) ? response : (response.data || response.orders || []);
+    const orders = Array.isArray(response) ? response : (response.items || response.data || response.orders || []);
 
     // Apply limit
     const limitedOrders = orders.slice(0, actualLimit);