SuperAPI AI 工具集

shopify-admin-delivery-time-analysis

数据与分析

查看项目

更新于 10-15 09:35

技能介绍

用途

该技能分析已履约订单,计算从履约创建(fulfillment created)到送达(delivered)的平均运输时间,并按承运商分组。它会呈现哪些承运商持续偏慢,或缺少送达确认。该技能为只读,不执行任何变更操作。

主要能力

  • 按承运商统计平均运输时间(deliveredAt - createdAt)。
  • 识别持续偏慢或缺少送达确认的承运商。
  • 可选按履约地点(location_id)进行细分。
  • 输出 human 或 json 格式,并生成 CSV 文件。

前置条件

  • 已认证的 Shopify CLI 会话:shopify store auth --store <domain> --scopes read_orders
  • API 权限范围:read_orders

参数

参数 类型 必填 默认值 说明
store string 是 — 店铺域名(例如 mystore.myshopify.com)
days_back integer 否 30 已履约订单的回溯窗口
min_orders integer 否 5 纳入平均统计的每个承运商最小订单数
location_id string 否 — 按履约地点筛选(可选)
format string 否 human 输出格式:human 或 json

安全性

该技能为只读,不执行任何变更操作,可随时安全运行。

工作流程

  1. 查询订单:使用查询条件 fulfillment_status:shipped created_at:>='<NOW - days_back days>',每次取 250 条并分页,直到 hasNextPage 为 false。预期返回包含 fulfillments(createdAt、updatedAt、deliveredAt、trackingInfo.company)的订单。
  2. 按承运商计算运输时间:deliveredAt - createdAt(跳过 deliveredAt 为 null 的订单)。
  3. 可选查询 fulfillmentOrders:按 assignedLocationId、status: CLOSED 分页,用于按地点细分。

GraphQL 操作

# orders:query — validated against api_version 2025-01
query FulfilledOrders($query: String!, $after: String) {
  orders(first: 250, after: $after, query: $query) {
    edges {
      node {
        id
        name
        createdAt
        fulfillments {
          id
          createdAt
          updatedAt
          deliveredAt
          status
          trackingInfo {
            company
            number
          }
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

# fulfillmentOrders:query — validated against api_version 2025-01
query FulfillmentOrdersByLocation($locationId: ID!, $after: String) {
  fulfillmentOrders(
    assignedLocationId: $locationId
    first: 250
    after: $after
    query: "status:closed"
  ) {
    edges {
      node {
        id
        assignedLocation {
          location {
            id
            name
          }
        }
        order {
          id
          name
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

会话跟踪

Claude 必须在每个阶段输出以下内容,这是强制要求。

开始时输出:

╔══════════════════════════════════════════════╗
║  SKILL: Delivery Time Analysis               ║
║  Store: <store domain>                       ║
║  Started: <YYYY-MM-DD HH:MM UTC>             ║
╚══════════════════════════════════════════════╝

每步之后输出:

[N/TOTAL] <QUERY|MUTATION>  <OperationName>
          → Params: <brief summary of key inputs>
          → Result: <count or outcome>

完成时输出:

format 为 human(默认)时:

══════════════════════════════════════════════
DELIVERY TIME ANALYSIS  (<days_back> days)
  Orders analyzed:     <n>
  With delivery data:  <n>

  Carrier              Orders  Avg Days  Min  Max
  ─────────────────────────────────────────────
  UPS                  <n>     <d>       <d>  <d>
  USPS                 <n>     <d>       <d>  <d>
  FedEx                <n>     <d>       <d>  <d>
  (carriers below min_orders threshold excluded)
  Output: delivery_analysis_<date>.csv
══════════════════════════════════════════════

format 为 json 时输出:

{
  "skill": "delivery-time-analysis",
  "store": "<domain>",
  "period_days": 30,
  "carriers": [
    { "name": "UPS", "orders": 0, "avg_days": 0, "min_days": 0, "max_days": 0 }
  ],
  "output_file": "delivery_analysis_<date>.csv"
}

输出格式

CSV 文件 delivery_analysis_<YYYY-MM-DD>.csv,列包括:order_name, fulfillment_id, carrier, fulfilled_at, delivered_at, transit_days。

错误处理

错误 原因 恢复方式
THROTTLED 超出 API 速率限制 等待 2 秒,最多重试 3 次
deliveredAt is null 承运商尚未确认送达 从平均值中排除,计为“运输中”
No fulfilled orders in window 周期太短或没有订单 以摘要退出:0 个订单

最佳实践

  • 将 min_orders 设为 10 以获得具有统计意义的平均值——订单数更少的承运商会使结果产生偏差。
  • deliveredAt 仅在承运商通过跟踪事件确认送达时才会填充;部分承运商不上报此信息,因此 null 值属预期情况。
  • 每月运行一次,以跟踪承运商随时间的表现,并为承运商合同谈判提供依据。
  • 可与 wismo-bulk-status-report 技能交叉参考,将配送偏慢的承运商与 WISMO 工单量关联起来。

适用场景

  • 电商运营人员需要评估不同承运商的配送时效。
  • 需要按履约地点分析配送表现。
  • 需要为承运商合同谈判提供数据支持。
  • 需要将配送时效与客户咨询(WISMO)关联分析。

限制

  • 只读,不执行任何变更。
  • 需要已认证的 Shopify CLI 会话和 read_orders 权限。
  • deliveredAt 可能为 null,部分承运商不上报送达确认。
  • 订单数低于 min_orders 的承运商会被排除在平均值之外。