SuperAPI AI 工具集

shopify-admin-wismo-bulk-status-report

办公与效率

查看项目

更新于 10-15 09:39

技能介绍

用途

该技能生成一份批量报告,列出最可能产生 WISMO(Where Is My Order,我的订单在哪)客服工单的订单,具体包括两类:已发货但物流跟踪在 N 天内未更新的订单,以及超过可配置 SLA 仍未发货的订单。资料称,行业研究显示 WISMO 约占所有客服请求的 18%,因此主动识别是一项直接的运营人力投入。该技能为只读操作,可替代逐单人工后台扫描或客服系统搜索。输出的 CSV 可用于在客户联系你之前主动联系客户。

前置条件

  • 执行 shopify auth login --store <domain>
  • API 权限范围:read_orders

参数

参数 类型 必填 默认值 说明
store string 是 — 店铺域名(例如 mystore.myshopify.com)
format string 否 human 输出格式:human 或 json
dry_run bool 否 false 预览操作而不执行变更
unfulfilled_sla_days integer 否 3 标记超过此天数仍未发货的订单
stale_tracking_days integer 否 5 标记最后一次履约创建时间超过此天数的已发货订单(作为物流跟踪停滞的代理指标)
limit integer 否 250 每页最大订单数

工作流程

  1. 操作:orders — 查询(未发货高风险)

    • 输入:first: <limit>,query: "fulfillment_status:unfulfilled created_at:<='<NOW minus unfulfilled_sla_days>'",按 CREATED_AT 升序排序
    • 预期输出:超过 SLA 窗口仍未发货的订单,含 name、createdAt、customer、displayFulfillmentStatus;标记为 UNFULFILLED_OVERDUE
  2. 操作:orders — 查询(已发货但可能停滞)

    • 输入:first: <limit>,query: "fulfillment_status:shipped updated_at:<='<NOW minus stale_tracking_days>'",按 UPDATED_AT 升序排序
    • 预期输出:近期未更新的已发货订单,含 name、createdAt、fulfillments.createdAt、fulfillments.trackingInfo;标记为 SHIPPED_STALE_TRACKING

GraphQL 操作

# orders:query — validated against api_version 2025-01
query WismoOrders($first: Int!, $after: String, $query: String) {
  orders(first: $first, after: $after, query: $query, sortKey: CREATED_AT) {
    edges {
      node {
        id
        name
        createdAt
        updatedAt
        displayFulfillmentStatus
        displayFinancialStatus
        customer {
          id
          firstName
          lastName
          defaultEmailAddress {
            emailAddress
          }
        }
        shippingAddress {
          city
          province
          country
        }
        fulfillments {
          createdAt
          status
          trackingInfo {
            number
            url
            company
          }
        }
        totalPriceSet {
          shopMoney { amount currencyCode }
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

会话跟踪

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

开始时输出:

╔══════════════════════════════════════════════╗
║  SKILL: wismo-bulk-status-report             ║
║  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(默认)时:

══════════════════════════════════════════════
OUTCOME SUMMARY
  Unfulfilled overdue orders:      <n>
  Shipped stale-tracking orders:   <n>
  Total at-risk orders:            <n>
  Errors:                          0
  Output:                          wismo-report-<YYYY-MM-DD>.csv
══════════════════════════════════════════════

format 为 json 时,输出:

{
  "skill": "wismo-bulk-status-report",
  "store": "<domain>",
  "started_at": "<ISO8601>",
  "completed_at": "<ISO8601>",
  "dry_run": false,
  "steps": [
    { "step": 1, "operation": "WismoOrders", "type": "query", "params_summary": "fulfillment_status:unfulfilled, sla_days: <n>, limit: <n>", "result_summary": "<n> orders", "skipped": false },
    { "step": 2, "operation": "WismoOrders", "type": "query", "params_summary": "fulfillment_status:shipped, stale_days: <n>, limit: <n>", "result_summary": "<n> orders", "skipped": false }
  ],
  "outcome": {
    "unfulfilled_overdue_count": 0,
    "shipped_stale_count": 0,
    "total_at_risk": 0,
    "errors": 0,
    "output_file": "wismo-report-<YYYY-MM-DD>.csv"
  }
}

输出格式

CSV 文件 wismo-report-<YYYY-MM-DD>.csv,列包括:risk_type、order_name、customer_email、order_date、days_waiting、fulfillment_status、tracking_number、tracking_company、shipping_city、shipping_country。

CSV 分为两个部分(由 risk_type 列值区分):UNFULFILLED_OVERDUE 和 SHIPPED_STALE_TRACKING。human 格式下,还会在 CSV 路径之前显示一个汇总表。

错误处理

错误 原因 恢复方式
未返回订单 所有订单都在 SLA 内 / 近期有更新 好消息——未检测到 WISMO 风险
结果集非常大 订单量大或 SLA 窗口过宽 缩小日期范围或减小 unfulfilled_sla_days
customer 为 null 访客结账订单 仍包含订单名和跟踪信息——email 列为空
速率限制(429) 订单页数过多 将 limit 降至 100

最佳实践

  • 在每日早晨运营审查时运行此报告,并与 fulfillment-status-digest 配合使用——两者共同覆盖运营队列和面向客户的风险。
  • 将 CSV 按 days_waiting 降序排序,优先联系最超期的订单。
  • 对于 UNFULFILLED_OVERDUE 订单,转交 fulfillment-status-digest 技能以了解未发货原因,必要时使用 order-hold-and-release。
  • 对于 SHIPPED_STALE_TRACKING 订单,检查承运商跟踪 URL 是否显示有动态——如果确实停滞,主动触达可显著减少工单量。
  • 使用 format: json 将输出接入 Slack 告警或 CRM 自动化,为支持团队创建跟进任务。