用途
high-risk-order-tagger 是面向 Shopify 电商后台的自动化技能。它查询近期被标记为高风险的订单,并执行两种保护性操作:给订单打标签以供员工查看,以及(可选)设置履约保留,使订单在人工审核前无法发货。该技能通过写入操作创建可审核的队列,可作为只读的 order-risk-report 的补充。其设计参考了 Shopify 的 Fraud Filter 和 Flow 欺诈预防自动化机制。
主要能力
- 按时间窗口(默认最近 24 小时)查询高风险订单。
- 为被标记的订单添加自定义标签(默认 fraud-review)。
- 可选地设置履约保留,防止订单发货,并指定保留原因(默认 UNKNOWN_PAYMENT_RISK)。
- 支持 dry_run 预览模式,默认开启,可在真正执行前确认订单列表。
- 支持 human 或 json 输出格式。
- 输出 CSV 文件,包含订单名称、订单 ID、风险级别、总价、货币、已应用标签、是否设置保留、客户名称等字段。
使用方式
前置条件:需要已认证的 Shopify CLI 会话,命令为:
shopify store auth --store <domain> --scopes read_orders,write_orders,write_fulfillments
所需 API 权限范围:read_orders、write_orders、write_fulfillments。
参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| store | string | 是 | — | 店铺域名(如 mystore.myshopify.com) |
| days_back | integer | 否 | 1 | 回看窗口,默认最近 24 小时 |
| min_order_value | float | 否 | 0 | 只标记高于此金额的订单 |
| tag | string | 否 | fraud-review | 应用于被标记订单的标签 |
| hold_fulfillment | bool | 否 | true | 是否同时对被标记订单设置履约保留 |
| hold_reason | string | 否 | UNKNOWN_PAYMENT_RISK | 履约保留原因 |
| dry_run | bool | 否 | true | 预览而不执行变更 |
| format | string | 否 | human | 输出格式:human 或 json |
工作流程包含三个操作:
- orders 查询:使用查询条件
risk_level:high created_at:>='<NOW - days_back days>',返回高风险订单,选取 riskLevel、fulfillmentOrders、totalPriceSet 等字段。 - tagsAdd 变更:为订单添加指定标签。
- fulfillmentOrderHold 变更(当 hold_fulfillment 为 true 时):对履约订单设置保留,原因为指定值,备注为 "High-risk order — awaiting fraud review"。
技能执行过程中会输出会话跟踪信息,包括开始横幅、每步操作的结果,以及完成后的摘要。当 dry_run 为 true 时,每个变更步骤会加上 [DRY RUN] 前缀且不会实际执行。
完成后的 human 格式摘要示例:
══════════════════════════════════════════════
OUTCOME SUMMARY
High-risk orders found: <n>
Orders tagged: <n>
Fulfillment holds placed: <n>
Errors: <n>
Output: risk_tagging_<date>.csv
══════════════════════════════════════════════
JSON 格式输出包含 skill、store、started_at、dry_run 以及 outcome 对象。
生成的 CSV 文件名为 risk_tagging_<YYYY-MM-DD>.csv,列为:order_name, order_id, risk_level, total_price, currency, tag_applied, hold_placed, customer_name。
适用场景
- 在订单下达后 1–2 小时内运行,因为大多数欺诈订单会在当天发货。
- 需要在人工审核前阻止高风险订单发货的电商运营场景。
- 需要为客服或风控团队创建待审核订单队列的团队。
限制与安全注意事项
- 履约保留会阻止订单在明确解除前被履约,客户会经历发货延迟。如只想打标签而不阻止履约,应将 hold_fulfillment 设为 false。
- 建议先使用 dry_run: true 确认订单列表再执行。
- 审核后可使用 order-hold-and-release 技能释放保留。
- 遇到 THROTTLED 错误时等待 2 秒并最多重试 3 次;若保留操作返回 userErrors(如订单已履约或保留已存在),记录为跳过并继续。
- 若没有高风险订单,则以 0 标记退出。
- 重复客户(numberOfOrders > 3)不太可能是欺诈,可考虑通过 min_order_value 或单独查询过滤。