SuperAPI AI 工具集

split-shipment-planner

办公与效率

查看项目

更新于 10-15 09:39

技能介绍

用途

Split Shipment Planner 用于将一个包含多个行项目的履约订单(fulfillment order)拆分为两个或多个独立的履约订单,每个拆分后的订单都可以单独发货,并拥有各自的物流追踪号。它适用于以下场景:订单中的商品需要从不同地点发货、在不同日期发货,或需要不同承运商。该技能替代了在 Shopify 后台手动处理拆分发货的操作。

主要能力

  • 查询指定订单的履约订单及其行项目信息(包括行项目 ID、剩余数量、总数量、SKU、标题等)。
  • 根据用户定义的拆分分组(split_groups),将履约订单拆分为多个独立履约订单。
  • 支持 dry_run 预览模式,在真正执行拆分前确认分组方案。
  • 支持 human 和 json 两种输出格式。
  • 提供会话跟踪输出,在每个阶段输出操作进度与结果。

使用方式

前置条件

  • 已认证的 Shopify CLI 会话:shopify store auth --store <domain> --scopes read_orders,write_fulfillments
  • API 权限范围:read_orders、write_fulfillments
  • 目标履约订单必须处于 OPEN 状态

参数

参数 类型 必填 默认值 说明
store string 是 — 店铺域名(例如 mystore.myshopify.com)
fulfillment_order_id string 是 — 要拆分的履约订单 GID
split_groups array 是 — 定义每个发货分组的列表,格式为 {line_item_ids: [], quantities: []}
dry_run bool 否 true 预览拆分而不执行变更
format string 否 human 输出格式:human 或 json

工作流程

  1. 查询履约订单(OPERATION: fulfillmentOrders):按订单 ID 查询特定履约订单,筛选状态为 OPEN,获取所有行项目信息(id、remainingQuantity、variant 的 sku 与 title)。
  2. 校验 split_groups:确认所有行项目 ID 均存在于该履约订单中,且数量不超过剩余数量。
  3. 执行拆分(OPERATION: fulfillmentOrderSplit):传入 fulfillmentOrderId 和每个拆分组的 fulfillmentOrderLineItems,返回新的履约订单数组及 userErrors。

GraphQL 操作

查询(针对 api_version 2025-01 验证):

query FulfillmentOrderLines($orderId: ID!) {
  order(id: $orderId) {
    id
    name
    fulfillmentOrders(first: 10) {
      edges {
        node {
          id
          status
          lineItems(first: 50) {
            edges {
              node {
                id
                remainingQuantity
                totalQuantity
                variant {
                  id
                  sku
                  title
                }
              }
            }
          }
        }
      }
    }
  }
}

变更(针对 api_version 2025-01 验证):

mutation FulfillmentOrderSplit($fulfillmentOrderId: ID!, $fulfillmentOrderLineItems: [FulfillmentOrderLineItemInput!]!) {
  fulfillmentOrderSplit(
    fulfillmentOrderId: $fulfillmentOrderId
    fulfillmentOrderLineItems: $fulfillmentOrderLineItems
  ) {
    fulfillmentOrders {
      id
      status
      lineItems(first: 50) {
        edges {
          node {
            id
            remainingQuantity
            variant {
              sku
              title
            }
          }
        }
      }
    }
    userErrors {
      field
      message
    }
  }
}

会话跟踪

技能在每个阶段必须输出跟踪信息。启动时输出包含技能名称、店铺域名和开始时间的横幅;每步之后输出步骤编号、操作类型、操作名称、参数摘要和结果;若 dry_run 为 true,每个变更步骤前加 [DRY RUN] 前缀且不执行;完成时按 human 或 json 格式输出结果摘要。

适用场景

  • 订单商品需从不同仓库或地点发货。
  • 订单商品需在不同日期发货。
  • 订单商品需使用不同承运商。
  • 需要为同一订单的不同部分生成独立物流追踪号。

限制与安全注意事项

  • ⚠️ fulfillmentOrderSplit 不可逆:拆分后的履约订单无法合并回原订单,原履约订单会被多个新订单取代。建议先以 dry_run: true 运行,确认分组方案后再提交。
  • 确保 split_groups 中的所有 line_item_ids 都属于目标履约订单。
  • 建议确保 split_groups 覆盖履约订单中的所有行项目;任何未分配的项目将保留在原(剩余)履约订单中。
  • 对于商品需从不同仓库发货的订单,可在拆分后使用 fulfillment-location-routing 技能将拆分组移动到正确的地点。

错误处理

错误 原因 恢复方式
THROTTLED API 速率限制超出 等待 2 秒后重试
userErrors — invalid line item 行项目 ID 不在履约订单中 中止并报告不匹配
userErrors — quantity exceeds remaining 拆分数量大于剩余数量 中止并按行项目报告
Fulfillment order not OPEN 已履约或已取消 中止并报告状态

输出格式

人类可读的拆分摘要。无 CSV 输出——拆分结果可在 Shopify 后台订单的履约标签页中查看。