用途
该技能从待履约或履约中的订单中提取礼品留言、礼品收件人姓名以及 is_gift 标记,信息来源为订单的自定义属性(custom attributes)和订单备注(order notes)。最终生成一张汇总表,供履约团队打印礼品卡/插页,并正确分拣礼品订单。整个过程为只读操作,不执行任何数据变更。
主要能力
- 扫描指定天数窗口内的订单,支持按履约状态过滤(unfulfilled、partial、any)。
- 从订单级和行项目级的自定义属性中,按可配置的键名列表识别礼品留言、收件人姓名和礼品标记。
- 可选扫描订单级备注字段,匹配 gift、recipient、deliver to、message: 等关键词,捕获为 note_hint。
- 订单满足以下任一条件即纳入报告:is_gift 为 true、捕获到礼品留言、或捕获到礼品收件人。
- 输出 CSV 文件,包含订单名、创建时间、礼品标记、收件人、留言、备注提示、收货人姓名与地址、行项目摘要、客户邮箱等列。
- 支持 human 和 json 两种输出格式。
使用方式
前置条件:已认证的 Shopify CLI 会话,命令为 shopify store auth --store <domain> --scopes read_orders,API 权限范围为 read_orders。
主要参数:
- store(字符串,必填):店铺域名,例如 mystore.myshopify.com。
- days_back(整数,可选,默认 7):扫描订单的回溯窗口天数。
- status(字符串,可选,默认 unfulfilled):订单状态过滤,可选 unfulfilled、partial、any。
- message_keys(数组,可选):可能包含礼品留言的自定义属性键名,默认包含 gift_message、gift_note、Gift Message、Gift Note、message、note_to_recipient。
- recipient_keys(数组,可选):可能包含收件人姓名的自定义属性键名,默认包含 gift_recipient、recipient_name、Gift Recipient、To。
- flag_keys(数组,可选):用于标记订单为礼品的自定义属性键名,默认包含 is_gift、gift、Gift Wrap、gift_wrap。
- include_order_note(布尔,可选,默认 true):是否同时扫描订单级备注字段。
- format(字符串,可选,默认 human):输出格式,human 或 json。
工作流程:先计算过滤条件(created_at 大于等于当前时间减去 days_back 天,并将 status 转换为对应的 fulfillment_status 过滤),然后通过 GraphQL 查询订单(每次 250 条,使用游标分页),对每个订单应用检测规则,最后构建报告行并输出。
检测规则:对每个订单的 lineItem.customAttributes 和 order.customAttributes,若键名(不区分大小写)属于 message_keys 则捕获为 gift_message;若属于 recipient_keys 则捕获为 gift_recipient;若属于 flag_keys 且值为真值(true、yes、1、非空字符串)则设置 is_gift 为 true。若 include_order_note 为 true 且订单备注匹配 /gift|recipient|deliver to|message:/i,则捕获为 note_hint。
输出:CSV 文件名为 gift_messages_<YYYY-MM-DD>.csv,列包括 order_name、created_at、is_gift、gift_recipient、gift_message、note_hint、ship_to_name、ship_to_address、line_items_summary、customer_email。line_items_summary 为数量 × 标题的列表,以分号连接。
适用场景
- 履约团队在打印装箱单和礼品卡时,需要集中查看所有礼品订单的留言和收件人信息。
- 礼品订单分拣,按收货地址排序后便于打包人员集中处理同一地址的礼品订单。
- 在礼品高峰期(母亲节、情人节、十二月)扩大扫描窗口并调整状态过滤,以覆盖已进入履约流程的订单。
限制
- 只读技能,不执行任何写操作。
- 输出可能包含客户撰写的个人文本,需按客户数据导出的同等标准处理 CSV。
- 自定义属性键名在不同主题间可能不一致,调用方可扩展 message_keys、recipient_keys、flag_keys。
- 留言中可能包含 HTML 实体,打印前需解码 &、'、"。
- 多行留言在导出 CSV 时需正确引用,因为单元格可能包含换行符。
- 遇到 THROTTLED 错误时,等待 2 秒后重试,最多 3 次。
- 建议每天在上午和下午拣货波次各运行一次,礼品留言时效性强。
- 建议将 CSV 视为 PII,限制仅履约人员访问。
- 建议按 ship_to_address 排序输出,便于打包人员集中处理同一地址的礼品订单。