@optima-chat/optima-agent 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +83 -0
- package/.claude/skills/ads/SKILL.md +0 -0
- package/.claude/skills/bi/SKILL.md +71 -42
- package/.claude/skills/collection/SKILL.md +88 -0
- package/.claude/skills/comfy/SKILL.md +138 -122
- package/.claude/skills/ffmpeg/SKILL.md +164 -0
- package/.claude/skills/homepage/SKILL.md +324 -0
- package/.claude/skills/i18n/SKILL.md +0 -0
- package/.claude/skills/inventory/SKILL.md +90 -79
- package/.claude/skills/markdown-pdf/SKILL.md +72 -0
- package/.claude/skills/merchant/SKILL.md +71 -68
- package/.claude/skills/order/SKILL.md +193 -21
- package/.claude/skills/product/SKILL.md +51 -6
- package/.claude/skills/product-page/SKILL.md +200 -0
- package/.claude/skills/review/SKILL.md +234 -0
- package/.claude/skills/scout/SKILL.md +116 -1
- package/.claude/skills/shipping/SKILL.md +193 -0
- package/README.md +5 -1
- package/dist/bin/bi-cli.d.ts +0 -0
- package/dist/bin/bi-cli.d.ts.map +0 -0
- package/dist/bin/bi-cli.js.map +0 -0
- package/dist/bin/comfy.d.ts +0 -0
- package/dist/bin/comfy.d.ts.map +0 -0
- package/dist/bin/comfy.js.map +0 -0
- package/dist/bin/commerce.d.ts +0 -0
- package/dist/bin/commerce.d.ts.map +0 -0
- package/dist/bin/commerce.js.map +0 -0
- package/dist/bin/google-ads.d.ts +0 -0
- package/dist/bin/google-ads.d.ts.map +0 -0
- package/dist/bin/google-ads.js.map +0 -0
- package/dist/bin/optima.d.ts +0 -0
- package/dist/bin/optima.d.ts.map +0 -0
- package/dist/bin/optima.js +3 -3
- package/dist/bin/optima.js.map +1 -1
- package/dist/bin/scout.d.ts +0 -0
- package/dist/bin/scout.d.ts.map +0 -0
- package/dist/bin/scout.js.map +0 -0
- package/dist/bin/serve.d.ts +0 -0
- package/dist/bin/serve.d.ts.map +0 -0
- package/dist/bin/serve.js +0 -0
- package/dist/bin/serve.js.map +0 -0
- package/dist/src/agent.d.ts +0 -48
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +3 -98
- package/dist/src/agent.js.map +1 -1
- package/dist/src/auth/device-flow.d.ts +0 -0
- package/dist/src/auth/device-flow.d.ts.map +0 -0
- package/dist/src/auth/device-flow.js +0 -0
- package/dist/src/auth/device-flow.js.map +0 -0
- package/dist/src/auth/index.d.ts +0 -0
- package/dist/src/auth/index.d.ts.map +0 -0
- package/dist/src/auth/index.js +0 -0
- package/dist/src/auth/index.js.map +0 -0
- package/dist/src/auth/token.d.ts +0 -0
- package/dist/src/auth/token.d.ts.map +0 -0
- package/dist/src/auth/token.js +0 -0
- package/dist/src/auth/token.js.map +0 -0
- package/dist/src/auth/types.d.ts +0 -0
- package/dist/src/auth/types.d.ts.map +0 -0
- package/dist/src/auth/types.js +0 -0
- package/dist/src/auth/types.js.map +0 -0
- package/dist/src/config.d.ts +0 -0
- package/dist/src/config.d.ts.map +0 -0
- package/dist/src/config.js +0 -0
- package/dist/src/config.js.map +0 -0
- package/dist/src/hooks-loader.d.ts +6 -0
- package/dist/src/hooks-loader.d.ts.map +1 -0
- package/dist/src/hooks-loader.js +215 -0
- package/dist/src/hooks-loader.js.map +1 -0
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/index.d.ts +0 -0
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +23 -6
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/types.d.ts +15 -0
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/server/types.js +0 -0
- package/dist/src/server/types.js.map +0 -0
- package/dist/src/system-prompt.d.ts +0 -0
- package/dist/src/system-prompt.d.ts.map +1 -1
- package/dist/src/system-prompt.js +10 -3
- package/dist/src/system-prompt.js.map +1 -1
- package/dist/src/tools/memory.d.ts +0 -0
- package/dist/src/tools/memory.d.ts.map +0 -0
- package/dist/src/tools/memory.js +0 -0
- package/dist/src/tools/memory.js.map +0 -0
- package/dist/src/types.d.ts +1 -11
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +0 -0
- package/dist/src/types.js.map +0 -0
- package/dist/src/ui/App.d.ts +6 -0
- package/dist/src/ui/App.d.ts.map +1 -0
- package/dist/src/ui/App.js +164 -0
- package/dist/src/ui/App.js.map +1 -0
- package/dist/src/ui/components/Composer.d.ts +10 -0
- package/dist/src/ui/components/Composer.d.ts.map +1 -0
- package/dist/src/ui/components/Composer.js +13 -0
- package/dist/src/ui/components/Composer.js.map +1 -0
- package/dist/src/ui/components/Header.d.ts +7 -0
- package/dist/src/ui/components/Header.d.ts.map +1 -0
- package/dist/src/ui/components/Header.js +7 -0
- package/dist/src/ui/components/Header.js.map +1 -0
- package/dist/src/ui/components/Message.d.ts +12 -0
- package/dist/src/ui/components/Message.d.ts.map +1 -0
- package/dist/src/ui/components/Message.js +21 -0
- package/dist/src/ui/components/Message.js.map +1 -0
- package/dist/src/ui/components/MessageList.d.ts +9 -0
- package/dist/src/ui/components/MessageList.d.ts.map +1 -0
- package/dist/src/ui/components/MessageList.js +18 -0
- package/dist/src/ui/components/MessageList.js.map +1 -0
- package/dist/src/ui/components/Spinner.d.ts +6 -0
- package/dist/src/ui/components/Spinner.d.ts.map +1 -0
- package/dist/src/ui/components/Spinner.js +7 -0
- package/dist/src/ui/components/Spinner.js.map +1 -0
- package/dist/src/ui/components/StatusBar.d.ts +11 -0
- package/dist/src/ui/components/StatusBar.d.ts.map +1 -0
- package/dist/src/ui/components/StatusBar.js +7 -0
- package/dist/src/ui/components/StatusBar.js.map +1 -0
- package/dist/src/ui/components/index.d.ts +7 -0
- package/dist/src/ui/components/index.d.ts.map +1 -0
- package/dist/src/ui/components/index.js +7 -0
- package/dist/src/ui/components/index.js.map +1 -0
- package/dist/src/ui/conversation-manager.d.ts +10 -9
- package/dist/src/ui/conversation-manager.d.ts.map +1 -1
- package/dist/src/ui/conversation-manager.js +35 -2
- package/dist/src/ui/conversation-manager.js.map +1 -1
- package/dist/src/ui/headless-types.d.ts +85 -4
- package/dist/src/ui/headless-types.d.ts.map +1 -1
- package/dist/src/ui/headless-types.js +0 -0
- package/dist/src/ui/headless-types.js.map +0 -0
- package/dist/src/ui/headless.d.ts +14 -4
- package/dist/src/ui/headless.d.ts.map +1 -1
- package/dist/src/ui/headless.js +311 -139
- package/dist/src/ui/headless.js.map +1 -1
- package/dist/src/ui/index.d.ts +0 -0
- package/dist/src/ui/index.d.ts.map +0 -0
- package/dist/src/ui/index.js +0 -0
- package/dist/src/ui/index.js.map +0 -0
- package/dist/src/ui/stream.d.ts +0 -0
- package/dist/src/ui/stream.d.ts.map +1 -1
- package/dist/src/ui/stream.js +27 -5
- package/dist/src/ui/stream.js.map +1 -1
- package/dist/src/validation/error-formatter.d.ts +21 -0
- package/dist/src/validation/error-formatter.d.ts.map +1 -0
- package/dist/src/validation/error-formatter.js +98 -0
- package/dist/src/validation/error-formatter.js.map +1 -0
- package/dist/src/validation/index.d.ts +10 -0
- package/dist/src/validation/index.d.ts.map +1 -0
- package/dist/src/validation/index.js +10 -0
- package/dist/src/validation/index.js.map +1 -0
- package/dist/src/validation/json-validator.d.ts +25 -0
- package/dist/src/validation/json-validator.d.ts.map +1 -0
- package/dist/src/validation/json-validator.js +173 -0
- package/dist/src/validation/json-validator.js.map +1 -0
- package/dist/src/validation/schema.d.ts +353 -0
- package/dist/src/validation/schema.d.ts.map +1 -0
- package/dist/src/validation/schema.js +57 -0
- package/dist/src/validation/schema.js.map +1 -0
- package/dist/src/validation/suggestions.d.ts +25 -0
- package/dist/src/validation/suggestions.d.ts.map +1 -0
- package/dist/src/validation/suggestions.js +144 -0
- package/dist/src/validation/suggestions.js.map +1 -0
- package/dist/src/validation/types.d.ts +40 -0
- package/dist/src/validation/types.d.ts.map +1 -0
- package/dist/src/validation/types.js +5 -0
- package/dist/src/validation/types.js.map +1 -0
- package/dist/src/validation/yaml-validator.d.ts +25 -0
- package/dist/src/validation/yaml-validator.d.ts.map +1 -0
- package/dist/src/validation/yaml-validator.js +177 -0
- package/dist/src/validation/yaml-validator.js.map +1 -0
- package/dist/src/version.d.ts +0 -0
- package/dist/src/version.d.ts.map +0 -0
- package/dist/src/version.js +0 -0
- package/dist/src/version.js.map +0 -0
- package/package.json +1 -1
- package/.claude/skills/storefront/SKILL.md +0 -532
|
@@ -11,10 +11,10 @@ description: Order fulfillment and shipping management. Process orders, ship pac
|
|
|
11
11
|
|
|
12
12
|
当用户说:
|
|
13
13
|
- "查看待发货订单" → `commerce order list --status paid`
|
|
14
|
-
- "订单XX发货" →
|
|
14
|
+
- "订单XX发货" → 先查订单详情,根据 shipping_mode_used 决定发货方式(见下方流程)
|
|
15
|
+
- "查询订单物流" / "运单标签好了吗" → `commerce order tracking --id XX`
|
|
15
16
|
- "取消订单XX" → `commerce order cancel --id XX --yes`
|
|
16
17
|
- "标记订单已送达" → `commerce order mark-delivered --id XX`
|
|
17
|
-
- "查询运费" → `commerce shipping calculate --country XX --weight YY`
|
|
18
18
|
- "处理退款" → `commerce refund create --order-id XX --amount YY`
|
|
19
19
|
|
|
20
20
|
### 场景决策表
|
|
@@ -25,17 +25,182 @@ description: Order fulfillment and shipping management. Process orders, ship pac
|
|
|
25
25
|
| 批量发货 | 循环 `order ship` | 必须有真实tracking号,避免虚假发货 |
|
|
26
26
|
| 取消订单 | `order cancel --yes` | 检查是否已发货,避免错误取消 |
|
|
27
27
|
| 处理退款 | `refund create` → `refund approve` | 先创建后审批,保留审计记录 |
|
|
28
|
-
|
|
|
29
|
-
| 物流异常 | `shipping track` → `shipping update-status` | 主动更新状态,及时通知客户 |
|
|
28
|
+
| 物流异常 | `order tracking` → `order update-shipping-status` | 主动更新状态,及时通知客户 |
|
|
30
29
|
|
|
31
30
|
### 标准订单履行流程
|
|
32
31
|
1. **查看待发货** - `commerce order list --status paid` 按时间升序
|
|
33
32
|
2. **验证订单** - 检查库存、地址、特殊要求
|
|
34
33
|
3. **批量打包** - 准备商品、包装材料、打印面单
|
|
35
34
|
4. **标记发货** - 循环 `commerce order ship --id XX --tracking YY --carrier ZZ`
|
|
36
|
-
5. **物流跟踪** - 定期 `commerce
|
|
35
|
+
5. **物流跟踪** - 定期 `commerce order tracking` 或 `commerce easyship track` 监控异常
|
|
37
36
|
6. **确认送达** - 签收后 `commerce order mark-delivered --id XX`
|
|
38
37
|
|
|
38
|
+
### 发货流程详解(重要)
|
|
39
|
+
|
|
40
|
+
订单发货需要根据 `shipping_mode_used` 字段选择正确的发货方式。
|
|
41
|
+
|
|
42
|
+
#### 运费模式说明
|
|
43
|
+
|
|
44
|
+
| shipping_mode_used | 含义 | 发货方式 |
|
|
45
|
+
|--------------------|------|----------|
|
|
46
|
+
| `easyship` | 买家选择了 Easyship 快递 | 可选 Easyship 自动发货 或 手动发货 |
|
|
47
|
+
| `fixed` | 买家使用固定运费 | 只能手动发货 |
|
|
48
|
+
| 空/null | 历史订单 | 只能手动发货 |
|
|
49
|
+
|
|
50
|
+
#### 发货决策规则(必须严格遵守)
|
|
51
|
+
|
|
52
|
+
当用户说"订单XXX发货"时,按以下步骤执行:
|
|
53
|
+
|
|
54
|
+
**步骤1**:执行 `commerce order get --id XXX` 获取订单详情
|
|
55
|
+
|
|
56
|
+
**步骤2**:在返回结果中找到 `shipping_mode_used` 字段的值
|
|
57
|
+
|
|
58
|
+
**步骤3**:根据字段值决定下一步操作:
|
|
59
|
+
|
|
60
|
+
- **如果 `shipping_mode_used = "easyship"`**:
|
|
61
|
+
1. **必须**使用 AskUserQuestion 工具询问用户
|
|
62
|
+
2. 提供两个选项让用户选择
|
|
63
|
+
3. **禁止**直接询问运单号
|
|
64
|
+
4. 等待用户选择后再执行对应命令
|
|
65
|
+
|
|
66
|
+
- **如果 `shipping_mode_used = "fixed"` 或字段为空**:
|
|
67
|
+
1. 直接询问用户提供运单号和快递公司名称
|
|
68
|
+
2. 收集信息后执行手动发货命令
|
|
69
|
+
|
|
70
|
+
#### Easyship 自动发货
|
|
71
|
+
|
|
72
|
+
**适用场景**:`shipping_mode_used = "easyship"` 且用户选择使用 Easyship
|
|
73
|
+
|
|
74
|
+
**命令**:
|
|
75
|
+
```bash
|
|
76
|
+
# 使用买家选择的快递(推荐)
|
|
77
|
+
commerce order ship --id <order-id> --easyship
|
|
78
|
+
|
|
79
|
+
# 或指定其他 Easyship 支持的快递
|
|
80
|
+
commerce order ship --id <order-id> --easyship --courier-id <courier-id>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**返回结果包含**:
|
|
84
|
+
- `tracking_number`: 自动生成的运单号
|
|
85
|
+
- `tracking_url`: 快递跟踪链接
|
|
86
|
+
- `label_url`: 运单标签下载链接(可能为空)
|
|
87
|
+
- `label_state`: 标签状态
|
|
88
|
+
- `carrier`: 快递公司名称
|
|
89
|
+
|
|
90
|
+
**运单标签处理(重要)**:
|
|
91
|
+
|
|
92
|
+
运单标签是用户必须打印并贴在包裹上的快递单。Easyship 生成标签需要几秒到几分钟。
|
|
93
|
+
|
|
94
|
+
**发货后根据 label_state 处理**:
|
|
95
|
+
|
|
96
|
+
| label_state | 含义 | 处理方式 |
|
|
97
|
+
|-------------|------|----------|
|
|
98
|
+
| `generated` / `printed` | 标签已生成 | 提供 `label_url` 让用户下载打印 |
|
|
99
|
+
| `pending` / `generating` | 标签生成中 | 告知用户「标签正在生成,稍后可以让我帮你查询」 |
|
|
100
|
+
| `failed` / `technical_failed` | 生成失败 | 告知用户需要检查 EasyShip 后台或重新发货 |
|
|
101
|
+
|
|
102
|
+
**查询标签状态**:
|
|
103
|
+
```bash
|
|
104
|
+
commerce order tracking --id <order-id>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**查看可用快递**:
|
|
108
|
+
```bash
|
|
109
|
+
commerce easyship couriers
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### 手动发货
|
|
113
|
+
|
|
114
|
+
**适用场景**:
|
|
115
|
+
- `shipping_mode_used = "fixed"` 或为空
|
|
116
|
+
- 或用户选择不使用 Easyship
|
|
117
|
+
|
|
118
|
+
**命令**:
|
|
119
|
+
```bash
|
|
120
|
+
commerce order ship --id <order-id> \
|
|
121
|
+
--tracking <运单号> \
|
|
122
|
+
--carrier <快递公司名称> \
|
|
123
|
+
--tracking-url <跟踪链接> # 可选
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**示例**:
|
|
127
|
+
```bash
|
|
128
|
+
# 顺丰快递
|
|
129
|
+
commerce order ship --id order_123 \
|
|
130
|
+
--tracking SF1234567890 \
|
|
131
|
+
--carrier "顺丰速运"
|
|
132
|
+
|
|
133
|
+
# DHL(带跟踪链接)
|
|
134
|
+
commerce order ship --id order_123 \
|
|
135
|
+
--tracking DHL9876543210 \
|
|
136
|
+
--carrier "DHL Express" \
|
|
137
|
+
--tracking-url "https://www.dhl.com/track?num=DHL9876543210"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### 物流状态更新(手动发货后)
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# 更新为运输中
|
|
144
|
+
commerce order update-shipping-status --id <order-id> --status in_transit
|
|
145
|
+
|
|
146
|
+
# 更新为派送中
|
|
147
|
+
commerce order update-shipping-status --id <order-id> --status out_for_delivery
|
|
148
|
+
|
|
149
|
+
# 标记已送达
|
|
150
|
+
commerce order mark-delivered --id <order-id>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### 发货场景示例对话
|
|
154
|
+
|
|
155
|
+
**场景1:Easyship 订单**
|
|
156
|
+
```
|
|
157
|
+
用户:订单 order_abc 发货
|
|
158
|
+
|
|
159
|
+
助手:[执行 Bash: commerce order get --id order_abc]
|
|
160
|
+
[发现 shipping_mode_used = "easyship"]
|
|
161
|
+
[使用 AskUserQuestion 工具]
|
|
162
|
+
|
|
163
|
+
AskUserQuestion:
|
|
164
|
+
question: "该订单使用 Easyship 运费模式,请选择发货方式"
|
|
165
|
+
options:
|
|
166
|
+
- label: "Easyship 自动发货(推荐)"
|
|
167
|
+
description: "自动生成运单号和标签,使用买家选择的快递"
|
|
168
|
+
- label: "手动填写运单号"
|
|
169
|
+
description: "使用其他快递公司,需要提供运单号"
|
|
170
|
+
|
|
171
|
+
用户:[选择 Easyship 自动发货]
|
|
172
|
+
|
|
173
|
+
助手:[执行 Bash: commerce order ship --id order_abc --easyship]
|
|
174
|
+
[检查返回结果中的 label_state]
|
|
175
|
+
|
|
176
|
+
[情况A:label_state = "generated",有 label_url]
|
|
177
|
+
发货成功!运单号 ES123456789,快递公司 FedEx。
|
|
178
|
+
运单标签已生成,请下载打印后贴在包裹上:https://...
|
|
179
|
+
|
|
180
|
+
[情况B:label_state = "pending" 或 "generating"]
|
|
181
|
+
发货成功!运单号 ES123456789,快递公司 FedEx。
|
|
182
|
+
运单标签正在生成中,稍后可以让我帮你查询。
|
|
183
|
+
|
|
184
|
+
用户:查一下标签好了没
|
|
185
|
+
|
|
186
|
+
助手:[执行 Bash: commerce order tracking --id order_abc]
|
|
187
|
+
运单标签已生成,请下载打印后贴在包裹上:https://...
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**场景2:固定运费订单**
|
|
191
|
+
```
|
|
192
|
+
用户:订单 order_xyz 发货
|
|
193
|
+
|
|
194
|
+
助手:[执行 Bash: commerce order get --id order_xyz]
|
|
195
|
+
[发现 shipping_mode_used = "fixed"]
|
|
196
|
+
该订单使用固定运费,请提供运单号和快递公司名称。
|
|
197
|
+
|
|
198
|
+
用户:顺丰,单号 SF123456
|
|
199
|
+
|
|
200
|
+
助手:[执行 Bash: commerce order ship --id order_xyz --tracking SF123456 --carrier 顺丰速运]
|
|
201
|
+
发货成功!
|
|
202
|
+
```
|
|
203
|
+
|
|
39
204
|
### 退款处理流程
|
|
40
205
|
1. **创建退款** - `commerce refund create` 填写详细原因
|
|
41
206
|
2. **审核评估** - 检查商品状态、退货凭证、历史记录
|
|
@@ -116,6 +281,7 @@ commerce order ship --id order_789 --tracking DHL123458 --carrier DHL
|
|
|
116
281
|
- `commerce order list` - 查看订单列表
|
|
117
282
|
- `commerce order get` - 查看订单详情
|
|
118
283
|
- `commerce order ship` - 标记订单发货
|
|
284
|
+
- `commerce order tracking` - 查询物流跟踪和标签状态
|
|
119
285
|
- `commerce order cancel` - 取消订单
|
|
120
286
|
- `commerce order complete` - 完成订单
|
|
121
287
|
- `commerce order mark-delivered` - 标记已送达
|
|
@@ -127,10 +293,15 @@ commerce order ship --id order_789 --tracking DHL123458 --carrier DHL
|
|
|
127
293
|
- `commerce refund approve` - 批准退款
|
|
128
294
|
- `commerce refund reject` - 拒绝退款
|
|
129
295
|
|
|
130
|
-
###
|
|
131
|
-
- `commerce
|
|
132
|
-
- `commerce shipping
|
|
133
|
-
- `commerce
|
|
296
|
+
### 物流状态
|
|
297
|
+
- `commerce order tracking` - 查询物流跟踪和标签状态
|
|
298
|
+
- `commerce order update-shipping-status` - 更新物流状态
|
|
299
|
+
- `commerce easyship track` - 查询 Easyship 详细物流轨迹
|
|
300
|
+
|
|
301
|
+
### Easyship 集成
|
|
302
|
+
- `commerce easyship couriers` - 查看可用快递公司
|
|
303
|
+
- `commerce easyship rates --order-id <id>` - 获取订单运费报价
|
|
304
|
+
- `commerce easyship track --order-id <id>` - 跟踪 Easyship 运单
|
|
134
305
|
|
|
135
306
|
## 详细示例
|
|
136
307
|
|
|
@@ -142,7 +313,14 @@ commerce order list --status paid --limit 50
|
|
|
142
313
|
|
|
143
314
|
### 订单发货
|
|
144
315
|
```bash
|
|
145
|
-
#
|
|
316
|
+
# 步骤1:先获取订单信息,检查 shipping_mode_used
|
|
317
|
+
commerce order get --id order_123
|
|
318
|
+
|
|
319
|
+
# 步骤2a:如果 shipping_mode_used = "easyship",询问用户选择后
|
|
320
|
+
# 用户选择 Easyship 自动发货
|
|
321
|
+
commerce order ship --id order_123 --easyship
|
|
322
|
+
|
|
323
|
+
# 步骤2b:如果用户选择手动发货,或 shipping_mode_used = "fixed"
|
|
146
324
|
commerce order ship \
|
|
147
325
|
--id order_123 \
|
|
148
326
|
--tracking DHL123456 \
|
|
@@ -164,15 +342,6 @@ commerce order cancel \
|
|
|
164
342
|
commerce order mark-delivered --id order_789
|
|
165
343
|
```
|
|
166
344
|
|
|
167
|
-
### 计算运费
|
|
168
|
-
```bash
|
|
169
|
-
# 用户说:"计算寄到美国纽约10001的运费,重量0.5kg"
|
|
170
|
-
commerce shipping calculate \
|
|
171
|
-
--country US \
|
|
172
|
-
--postal-code 10001 \
|
|
173
|
-
--weight 0.5
|
|
174
|
-
```
|
|
175
|
-
|
|
176
345
|
### 处理退款
|
|
177
346
|
```bash
|
|
178
347
|
# 用户说:"订单order_123要退款150美元"
|
|
@@ -187,8 +356,11 @@ commerce refund approve --id refund_456
|
|
|
187
356
|
|
|
188
357
|
### 物流追踪
|
|
189
358
|
```bash
|
|
190
|
-
# 用户说:"
|
|
191
|
-
commerce
|
|
359
|
+
# 用户说:"查询订单order_123的物流信息"
|
|
360
|
+
commerce order tracking --id order_123
|
|
361
|
+
|
|
362
|
+
# 或查询 Easyship 详细轨迹
|
|
363
|
+
commerce easyship track --order-id order_123
|
|
192
364
|
```
|
|
193
365
|
|
|
194
366
|
## 重要提示
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: product
|
|
3
|
-
description: Product catalog management for e-commerce stores. Create and update products, manage variants/SKUs, upload product images, organize tags. Use when user needs to add new products, update pricing,
|
|
3
|
+
description: Product catalog management for e-commerce stores. Create and update products, manage variants/SKUs, upload product images, organize tags. Use when user needs to add new products, update pricing, upload photos, or organize product catalog. NOTE - For inventory/stock management, use the inventory skill instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Commerce CLI - Product Management
|
|
@@ -58,9 +58,9 @@ done
|
|
|
58
58
|
# 1. 查找目标商品
|
|
59
59
|
commerce product list --query "T恤" --limit 50
|
|
60
60
|
|
|
61
|
-
# 2.
|
|
62
|
-
commerce product update --id prod_123 --price 79 --tags "featured,sale"
|
|
63
|
-
commerce product update --id prod_456 --price 79 --tags "featured,sale"
|
|
61
|
+
# 2. 批量更新价格和促销标签(设置原价显示折扣)
|
|
62
|
+
commerce product update --id prod_123 --price 79 --original-price 99 --tags "featured,sale"
|
|
63
|
+
commerce product update --id prod_456 --price 79 --original-price 99 --tags "featured,sale"
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
### 场景5:商品图片更新
|
|
@@ -73,6 +73,18 @@ commerce upload image --path ./new-photo.jpg # 获得 media_new
|
|
|
73
73
|
commerce product add-images --id prod_123 --media-id media_new
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
+
### 场景6:创建促销商品
|
|
77
|
+
**任务**: 创建带折扣显示的商品(显示划线价)
|
|
78
|
+
```bash
|
|
79
|
+
# 创建促销商品:售价79,原价99(显示划线价)
|
|
80
|
+
commerce product create \
|
|
81
|
+
--title "夏日特惠T恤" \
|
|
82
|
+
--price 79 \
|
|
83
|
+
--original-price 99 \
|
|
84
|
+
--stock 100 \
|
|
85
|
+
--tags "sale"
|
|
86
|
+
```
|
|
87
|
+
|
|
76
88
|
### 场景决策表
|
|
77
89
|
|
|
78
90
|
| 用户需求 | 推荐命令 | 关键注意点 |
|
|
@@ -81,8 +93,24 @@ commerce product add-images --id prod_123 --media-id media_new
|
|
|
81
93
|
| 多规格商品 | `product create` + `variant create` | 主商品设置基础价格,变体设置差异价 |
|
|
82
94
|
| 批量上架 | 脚本循环 `product create` | 复用共享图片的media_id,避免重复上传 |
|
|
83
95
|
| 更新价格 | `product update --price` | 如有变体,需逐个更新变体价格 |
|
|
96
|
+
| 促销商品 | `product create --original-price` | `--original-price` 必须大于 `--price` |
|
|
84
97
|
| 促销标签 | `product update --tags` | 用逗号分隔,保留原有标签 |
|
|
85
98
|
| 图片更新 | `upload` + `add-images` | 先上传再关联,不要直接删除旧图 |
|
|
99
|
+
| 删除商品 | `product delete` | **软删除**,商品状态变为 archived |
|
|
100
|
+
| 下架商品 | `product update --status inactive` | 暂时隐藏,可随时恢复 |
|
|
101
|
+
|
|
102
|
+
## 商品状态说明(重要)
|
|
103
|
+
|
|
104
|
+
| 状态 | 含义 | 用户可能说 |
|
|
105
|
+
|------|------|-----------|
|
|
106
|
+
| `active` | 正常上架,买家可见 | "上架"、"发布" |
|
|
107
|
+
| `inactive` | 暂时下架,买家不可见 | "下架"、"隐藏" |
|
|
108
|
+
| `draft` | 草稿,未发布 | "草稿"、"暂存" |
|
|
109
|
+
| `archived` | **已删除(软删除)**,数据保留 | "删除"、"移除" |
|
|
110
|
+
|
|
111
|
+
**`product delete` = 软删除**:删除商品会将状态设为 `archived`,数据保留但不再显示。
|
|
112
|
+
|
|
113
|
+
**已归档商品不需要再删除**:如果商品状态已经是 `archived`,告诉用户"商品已删除"。
|
|
86
114
|
|
|
87
115
|
## 卓越标准
|
|
88
116
|
|
|
@@ -184,10 +212,14 @@ commerce product create --title "T恤" --price 99 --stock 50 # 确保真实有5
|
|
|
184
212
|
|
|
185
213
|
当用户说:
|
|
186
214
|
- "创建XX商品,价格YY" → `commerce product create --title XX --price YY`
|
|
215
|
+
- "创建XX商品,售价YY,原价ZZ" → `commerce product create --title XX --price YY --original-price ZZ`
|
|
216
|
+
- "创建促销商品,价格79,划线价99" → `commerce product create --title XX --price 79 --original-price 99`
|
|
187
217
|
- "上传商品图片" → `commerce upload image --path ./photo.jpg`
|
|
188
218
|
- "添加商品变体" → `commerce variant create --product-id XX --sku YY`
|
|
189
219
|
- "更新商品价格" → `commerce product update --id XX --price YY`
|
|
220
|
+
- "设置商品原价/划线价" → `commerce product update --id XX --original-price YY`
|
|
190
221
|
- "给商品打标签" → `commerce product update --id XX --tags "featured,new"`
|
|
222
|
+
- "设置商品重量和尺寸" → `commerce product update --id XX --weight 0.5 --length 10 --width 8 --height 5`
|
|
191
223
|
- "查看所有商品" → `commerce product list`
|
|
192
224
|
|
|
193
225
|
### 核心功能
|
|
@@ -215,11 +247,18 @@ commerce product create --title "T恤" --price 99 --stock 50 # 确保真实有5
|
|
|
215
247
|
### 示例1:创建单个商品
|
|
216
248
|
```bash
|
|
217
249
|
# 用户说:"创建T恤商品,99美元,库存20"
|
|
250
|
+
# 描述支持 Markdown 格式
|
|
218
251
|
commerce product create \
|
|
219
252
|
--title "T恤" \
|
|
220
253
|
--price 99 \
|
|
221
254
|
--stock 20 \
|
|
222
|
-
--description "
|
|
255
|
+
--description "## 产品特点
|
|
256
|
+
|
|
257
|
+
- **材质**:100% 纯棉
|
|
258
|
+
- **特性**:透气舒适,不易起球
|
|
259
|
+
- **适合人群**:日常休闲、运动
|
|
260
|
+
|
|
261
|
+
> 机洗建议:30°C 以下冷水洗涤"
|
|
223
262
|
```
|
|
224
263
|
|
|
225
264
|
### 示例2:上传商品图片
|
|
@@ -297,11 +336,17 @@ commerce product get --id prod_123
|
|
|
297
336
|
|
|
298
337
|
## 重要提示
|
|
299
338
|
|
|
339
|
+
- **库存管理请使用 inventory skill** - 如果用户要求更新库存、设置库存数量、补货等,请加载 `/inventory` skill。特别是有变体的产品,必须通过 inventory skill 更新变体库存,不能直接更新产品库存。
|
|
340
|
+
- **商品描述支持 Markdown 格式**,可以使用标题、列表、加粗、链接等排版
|
|
300
341
|
- 所有命令默认 JSON 输出,便于 AI 解析
|
|
301
342
|
- 图片需要先上传获取 `media_id`,再关联到商品
|
|
302
343
|
- 变体的 `attributes` 使用 JSON 格式
|
|
303
344
|
- 标签使用逗号分隔的字符串
|
|
304
|
-
- 支持的图片格式:JPG, PNG, WebP
|
|
345
|
+
- 支持的图片格式:JPG, PNG, WebP(最大 10MB)
|
|
305
346
|
- 使用 `--help` 查看命令详细参数
|
|
306
347
|
- 删除商品会同时删除所有变体和图片关联
|
|
307
348
|
- 价格单位默认为美元(USD),可通过后台配置修改
|
|
349
|
+
- **重量单位:kg**(如 0.5 表示 500g)
|
|
350
|
+
- **尺寸单位:cm**(length/width/height)
|
|
351
|
+
- 集合 slug 必须唯一,用于 URL,使用英文和连字符
|
|
352
|
+
- 集合封面支持三种方式:`--media-id`(推荐)、`--url`、`--path`
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-page
|
|
3
|
+
description: 商品详情页配置。自定义商品详情页的可折叠区块内容(如护理说明、退货政策)。当用户需要编辑商品页信息区块、隐藏某些区块、或添加自定义区块时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 概念
|
|
7
|
+
|
|
8
|
+
Product Page Section(商品页区块)是商品详情页上的信息模块,采用三层继承机制:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
System(系统默认)
|
|
12
|
+
↓ 可被覆盖
|
|
13
|
+
Merchant(商户级自定义)
|
|
14
|
+
↓ 可被覆盖
|
|
15
|
+
Product(商品级覆盖)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
- **System**:系统预设的区块(如退货政策、发货说明)
|
|
19
|
+
- **Merchant**:商户对系统区块的自定义(适用于所有商品)
|
|
20
|
+
- **Product**:单个商品对上层区块的覆盖(仅影响该商品)
|
|
21
|
+
|
|
22
|
+
每层都可以执行三种操作:
|
|
23
|
+
- `override`:覆盖上层的内容
|
|
24
|
+
- `new`:创建全新的区块
|
|
25
|
+
- `hidden`:隐藏某个区块
|
|
26
|
+
|
|
27
|
+
## 结构
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
ProductPageSection
|
|
31
|
+
├── 基本信息
|
|
32
|
+
│ ├── handle: 区块标识符(唯一)
|
|
33
|
+
│ ├── operation_type: override | new | hidden
|
|
34
|
+
│ ├── type: collapsible(可折叠)| static(静态)
|
|
35
|
+
│ └── position: 显示位置(1-10)
|
|
36
|
+
│
|
|
37
|
+
├── 内容
|
|
38
|
+
│ ├── content: Markdown 内容(支持模板变量)
|
|
39
|
+
│ └── tab_group: Tab 分组(可选)
|
|
40
|
+
│
|
|
41
|
+
└── 翻译
|
|
42
|
+
└── translations: 多语言翻译
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 系统默认区块
|
|
46
|
+
|
|
47
|
+
| handle | 说明 | 默认类型 |
|
|
48
|
+
|--------|------|----------|
|
|
49
|
+
| `highlights` | 产品亮点 | static |
|
|
50
|
+
| `details` | 产品详情 | collapsible |
|
|
51
|
+
| `guarantee` | 品质保证 | collapsible |
|
|
52
|
+
| `care` | 护理说明 | collapsible |
|
|
53
|
+
| `shipping-policies` | 发货政策 | collapsible |
|
|
54
|
+
| `return` | 退换政策 | collapsible |
|
|
55
|
+
| `eco-friendly` | 环保说明 | collapsible |
|
|
56
|
+
|
|
57
|
+
### 模板变量
|
|
58
|
+
|
|
59
|
+
content 支持模板变量,在前端渲染时自动替换:
|
|
60
|
+
|
|
61
|
+
| 变量 | 说明 |
|
|
62
|
+
|------|------|
|
|
63
|
+
| `{{product.name}}` | 商品名称 |
|
|
64
|
+
| `{{product.description}}` | 商品描述 |
|
|
65
|
+
| `{{variant.sku}}` | 当前变体 SKU |
|
|
66
|
+
| `{{merchant.name}}` | 店铺名称 |
|
|
67
|
+
|
|
68
|
+
## 典型场景
|
|
69
|
+
|
|
70
|
+
当用户说:
|
|
71
|
+
- "查看所有区块" → `commerce product-page list --resolved`
|
|
72
|
+
- "覆盖护理说明" → `commerce product-page create --handle care --operation-type override ...`
|
|
73
|
+
- "隐藏环保说明" → `commerce product-page hide --handle eco-friendly`
|
|
74
|
+
- "添加品牌故事区块" → `commerce product-page create --handle brand-story --operation-type new ...`
|
|
75
|
+
- "调整区块顺序" → `commerce product-page reorder --sections '[{"handle":"h1","position":1},{"handle":"h2","position":2}]'`
|
|
76
|
+
- "给某商品单独设置" → `commerce product-page product create --product-handle xxx ...`
|
|
77
|
+
|
|
78
|
+
## 命令参考
|
|
79
|
+
|
|
80
|
+
### 商户级命令(影响所有商品)
|
|
81
|
+
|
|
82
|
+
- `commerce product-page list` - 列出商户自定义
|
|
83
|
+
- `commerce product-page list --resolved` - 列出合并后的完整视图(推荐)
|
|
84
|
+
- `commerce product-page create` - 创建/覆盖区块
|
|
85
|
+
- `commerce product-page update --handle <handle>` - 更新区块
|
|
86
|
+
- `commerce product-page delete --handle <handle> --yes` - 删除自定义
|
|
87
|
+
- `commerce product-page hide --handle <handle>` - 隐藏区块(快捷方式)
|
|
88
|
+
- `commerce product-page reorder --sections <json>` - 重新排序(JSON 格式:`[{"handle":"xx","position":1}]`)
|
|
89
|
+
|
|
90
|
+
### 商品级命令(仅影响单个商品)
|
|
91
|
+
|
|
92
|
+
- `commerce product-page product list --product-handle <handle>` - 列出商品级覆盖
|
|
93
|
+
- `commerce product-page product list --product-handle <handle> --resolved` - 列出合并视图
|
|
94
|
+
- `commerce product-page product create --product-handle <handle> ...` - 创建商品级覆盖
|
|
95
|
+
- `commerce product-page product update --product-handle <handle> --handle <section> ...` - 更新
|
|
96
|
+
- `commerce product-page product delete --product-handle <handle> --handle <section> --yes` - 删除
|
|
97
|
+
- `commerce product-page product hide --product-handle <handle> --handle <section>` - 隐藏
|
|
98
|
+
|
|
99
|
+
### 翻译命令
|
|
100
|
+
|
|
101
|
+
- `commerce product-page translation list --handle <handle>` - 查看区块翻译
|
|
102
|
+
- `commerce product-page translation set --handle <handle> --lang <code>` - 设置翻译
|
|
103
|
+
- `commerce product-page translation delete --handle <handle> --lang <code> --yes` - 删除翻译
|
|
104
|
+
|
|
105
|
+
## 典型操作示例
|
|
106
|
+
|
|
107
|
+
### 查看所有区块
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# 查看合并后的完整视图(System + Merchant)
|
|
111
|
+
commerce product-page list --resolved
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 覆盖系统默认区块
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# 覆盖护理说明内容
|
|
118
|
+
commerce product-page create \
|
|
119
|
+
--handle care \
|
|
120
|
+
--operation-type override \
|
|
121
|
+
--type collapsible \
|
|
122
|
+
--position 4 \
|
|
123
|
+
--content "## 洗涤说明\n\n- 可机洗,30°C\n- 请勿漂白\n- 低温烘干"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 隐藏某个区块
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# 快捷方式:隐藏环保说明区块
|
|
130
|
+
commerce product-page hide --handle eco-friendly
|
|
131
|
+
|
|
132
|
+
# 完整方式
|
|
133
|
+
commerce product-page create --handle eco-friendly --operation-type hidden
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 创建自定义区块
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# 添加品牌故事区块
|
|
140
|
+
commerce product-page create \
|
|
141
|
+
--handle brand-story \
|
|
142
|
+
--operation-type new \
|
|
143
|
+
--type collapsible \
|
|
144
|
+
--position 8 \
|
|
145
|
+
--content "## 关于 {{merchant.name}}\n\n创立于2020年..."
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 使用 Tab 分组
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# 创建属于同一 Tab 组的多个区块
|
|
152
|
+
commerce product-page create \
|
|
153
|
+
--handle ingredients \
|
|
154
|
+
--operation-type new \
|
|
155
|
+
--type collapsible \
|
|
156
|
+
--position 5 \
|
|
157
|
+
--content "## 成分\n\n100% 有机棉" \
|
|
158
|
+
--tab-group product-info
|
|
159
|
+
|
|
160
|
+
commerce product-page create \
|
|
161
|
+
--handle materials \
|
|
162
|
+
--operation-type new \
|
|
163
|
+
--type collapsible \
|
|
164
|
+
--position 6 \
|
|
165
|
+
--content "## 材质\n\n天然环保材料" \
|
|
166
|
+
--tab-group product-info
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### 为单个商品设置不同内容
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# 给某商品的护理说明设置特殊内容
|
|
173
|
+
commerce product-page product create \
|
|
174
|
+
--product-handle ceramic-cup-white \
|
|
175
|
+
--handle care \
|
|
176
|
+
--operation-type override \
|
|
177
|
+
--type collapsible \
|
|
178
|
+
--position 4 \
|
|
179
|
+
--content "## 陶瓷护理\n\n- 可用洗碗机\n- 避免剧烈温度变化"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 添加翻译
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# 为护理说明添加英文翻译
|
|
186
|
+
commerce product-page translation set \
|
|
187
|
+
--handle care \
|
|
188
|
+
--lang en-US \
|
|
189
|
+
--title "Care Instructions" \
|
|
190
|
+
--content "## Washing Instructions\n\n- Machine wash, 30°C\n- Do not bleach"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 注意事项
|
|
194
|
+
|
|
195
|
+
- **--resolved 参数**:查看列表时建议使用 `--resolved`,显示完整的合并视图
|
|
196
|
+
- **handle 唯一性**:同一层级内 handle 必须唯一
|
|
197
|
+
- **隐藏 vs 删除**:`hide` 是标记隐藏,`delete` 是删除自定义(恢复为上层默认)
|
|
198
|
+
- **position 冲突**:不同区块可以有相同 position,显示时按 position 排序
|
|
199
|
+
- **内容格式**:content 支持 Markdown,可使用模板变量
|
|
200
|
+
- **Tab 分组**:tab_group 相同的区块会在前端合并为标签页显示
|