SuperAPI AI 工具集

shopify-admin-partial-refund-pattern-detector

安全与审计

查看项目

更新于 10-15 09:36

技能介绍

用途

扫描近期订单,提取每一笔退款,标记满足以下任一条件的订单:(a) 存在两笔或以上部分退款,或 (b) 部分退款占订单总额的比例超过可配置阈值。这些模式通常暗示友好欺诈(分次索赔)、不满的回头客模式,或员工工作流程缺口(零散退款而非一次性全额退款)。只读——不执行任何变更。

前置条件

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

参数

参数 类型 必填 默认值 说明
store string 是 — 店铺域名(例如 mystore.myshopify.com)
days_back integer 否 90 分析订单的回溯窗口
min_partials integer 否 2 标记订单所需的最少部分退款笔数
ratio_threshold float 否 0.5 当总退款额 / 订单总额超过此比例时标记(仍为部分退款,即低于 1.0)
min_order_value float 否 25 跳过低于此金额的低价值订单
format string 否 human 输出格式:human 或 json

安全性

ℹ️ 只读技能——不执行任何变更,可随时安全运行。被标记的订单仅为提示——在对客户账户采取行动前,请结合退款备注与客户历史进行确认。

工作流程

  1. 操作:orders — 查询
    • 输入:query: "created_at:>='<NOW - days_back days>' financial_status:partially_refunded",first: 250,select refunds { id, createdAt, totalRefundedSet, note }, totalPriceSet, customer, 分页游标
    • 预期输出:所有部分退款订单及其完整退款历史;分页直到 hasNextPage: false
  2. 对每个订单,统计退款笔数并汇总 totalRefundedSet.shopMoney.amount。计算比例 = 总退款额 / 订单总额。
  3. 标记满足任一条件的订单:refund_count >= min_partials 或 ratio >= ratio_threshold(且 ratio < 1.0,以排除已全额退款的订单)。
  4. 按 customer.id 对被标记订单分组,以发现重复出现的客户(窗口内有多于一个被标记订单)。

GraphQL 操作

# orders:query — validated against api_version 2025-01
query PartialRefundPatterns($query: String!, $after: String) {
  orders(first: 250, after: $after, query: $query) {
    edges {
      node {
        id
        name
        createdAt
        displayFinancialStatus
        totalPriceSet {
          shopMoney {
            amount
            currencyCode
          }
        }
        totalRefundedSet {
          shopMoney {
            amount
            currencyCode
          }
        }
        refunds {
          id
          createdAt
          note
          totalRefundedSet {
            shopMoney {
              amount
              currencyCode
            }
          }
          refundLineItems(first: 50) {
            edges {
              node {
                quantity
                lineItem {
                  id
                  title
                  sku
                }
              }
            }
          }
        }
        customer {
          id
          displayName
          defaultEmailAddress {
            emailAddress
          }
          numberOfOrders
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

会话跟踪

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

开始时输出:

╔══════════════════════════════════════════════╗
║  SKILL: Partial Refund Pattern Detector      ║
║  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(默认):

══════════════════════════════════════════════
PARTIAL REFUND PATTERN REPORT  (<days_back> days)
  Partially refunded orders:   <n>
  Flagged (multi-refund):      <n>
  Flagged (high ratio):        <n>
  Repeat-flagged customers:    <n>

  Top flagged customers by amount:
    <customer>  Orders: <n>  Refunded: $<n>  Ratio: <pct>%
  Output: partial_refund_patterns_<date>.csv
══════════════════════════════════════════════

对于 format: json,输出:

{
  "skill": "partial-refund-pattern-detector",
  "store": "<domain>",
  "period_days": 90,
  "partially_refunded_orders": 0,
  "flagged_multi_refund": 0,
  "flagged_high_ratio": 0,
  "repeat_flagged_customers": 0,
  "output_file": "partial_refund_patterns_<date>.csv"
}

输出格式

CSV 文件 partial_refund_patterns_<YYYY-MM-DD>.csv,包含列:

order_name, order_id, customer_email, customer_lifetime_orders, order_total, total_refunded, refund_ratio, refund_count, flag_reason, first_refund_at, last_refund_at

错误处理

错误 原因 恢复方式
THROTTLED 超出 API 速率限制 等待 2 秒,最多重试 3 次
订单有退款但 totalRefundedSet 为零 退款记录为 $0(仅备注,无资金流动) 从比例计算中跳过,仍计入退款笔数
客户为 null(访客订单) 未关联客户 改为按邮箱分组
无部分退款订单 窗口干净 以摘要退出:0 个被标记

最佳实践

  • 组合使用 min_partials: 2 与 ratio_threshold: 0.5 可获得最有用的信号——单笔小额部分退款通常是合法的。
  • 按 refund_ratio 降序排序:高价值订单上的高比例是最强的欺诈信号。
  • 重复被标记且 numberOfOrders > 5 的客户往往是长期投诉者,而非欺诈者——采取行动前请查看退款备注。
  • 每季度将此技能与 order-risk-report 配合使用,以发现结账时欺诈过滤器遗漏的购后欺诈。
  • 退款备注内容常能揭示模式(例如重复出现三次“商品缺失”)——在标记客户前请阅读备注。