@round2ai/r2-cli 1.0.15 → 1.0.16
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/LICENSE +21 -0
- package/README.md +77 -7
- package/dist/r2-cli.js +37 -41
- package/package.json +4 -1
- package/skills/r2-auth/SKILL.md +10 -8
- package/skills/r2-auth/_meta.json +1 -1
- package/skills/r2-auth/references/r2-auth-login.md +68 -0
- package/skills/r2-auth/references/r2-auth-logout.md +29 -0
- package/skills/r2-auth/references/r2-auth-status.md +27 -0
- package/skills/r2-goods/SKILL.md +14 -2
- package/skills/r2-goods/_meta.json +1 -1
- package/skills/r2-goods/references/r2-goods-hangup.md +29 -81
- package/skills/r2-goods/references/r2-goods-listing.md +80 -26
- package/skills/r2-goods/references/r2-goods-query.md +31 -0
- package/skills/r2-goods/scenes/r2-scene-batch-operations.md +78 -0
- package/skills/r2-goods/scenes/r2-scene-edit-with-images.md +47 -0
- package/skills/r2-goods/scenes/r2-scene-hangup-fashion.md +32 -0
- package/skills/r2-shared/SKILL.md +78 -34
- package/skills/r2-shared/_meta.json +2 -2
- package/skills/r2-workflow-batch-up/SKILL.md +77 -0
- package/skills/r2-workflow-batch-up/_meta.json +5 -0
- package/skills/r2-workflow-goods-audit/SKILL.md +79 -0
- package/skills/r2-workflow-goods-audit/_meta.json +5 -0
- package/dist/README.md +0 -246
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# 批量操作场景指南
|
|
2
|
+
|
|
3
|
+
## 适用场景
|
|
4
|
+
|
|
5
|
+
- 将同一商品上架到多个店铺
|
|
6
|
+
- 查询全部上架商品
|
|
7
|
+
- 批量下架/改价
|
|
8
|
+
|
|
9
|
+
## 分页策略
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 获取全部上架商品(分页遍历)
|
|
13
|
+
r2-cli goods listing --page 1 --size 50 --json
|
|
14
|
+
r2-cli goods listing --page 2 --size 50 --json
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- 默认 `--size 50`(最大值),减少请求次数
|
|
18
|
+
- 用 `--status` 过滤特定状态的商品(up/down/sold)
|
|
19
|
+
- 用 `--shop-id` 限定店铺范围
|
|
20
|
+
|
|
21
|
+
## 跨店铺操作
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# 查看所有店铺
|
|
25
|
+
r2-cli goods shops --json
|
|
26
|
+
|
|
27
|
+
# 切换到另一个店铺的库存
|
|
28
|
+
r2-cli goods list --stock-id <stockId> --json
|
|
29
|
+
|
|
30
|
+
# 上架到不同店铺
|
|
31
|
+
r2-cli goods up --stock-goods-id <id> --shop-id <shopA> --price <n> --json
|
|
32
|
+
r2-cli goods up --stock-goods-id <id> --shop-id <shopB> --price <n> --json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 注意事项
|
|
36
|
+
|
|
37
|
+
- 每个操作独立执行,一个失败不影响其他
|
|
38
|
+
- 批量提交时间隔至少 1 秒
|
|
39
|
+
- Token 过期时停止工作流,重新登录后从断点继续
|
|
40
|
+
|
|
41
|
+
## 汇总展示格式
|
|
42
|
+
|
|
43
|
+
操作完成后,按以下格式展示结果:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
批量上架完成!
|
|
47
|
+
✅ 成功:N 个商品
|
|
48
|
+
- [商品名] → ¥[价格] → [店铺名]
|
|
49
|
+
- [商品名] → ¥[价格] → [店铺名]
|
|
50
|
+
❌ 失败:N 个商品
|
|
51
|
+
- [商品名] → 错误:[错误信息]
|
|
52
|
+
- [商品名] → 错误:[错误信息]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 友好输出指引
|
|
56
|
+
|
|
57
|
+
每个批量操作命令的 JSON 响应结构不同,Agent 统一按以下方式处理:
|
|
58
|
+
|
|
59
|
+
**批量上架**:每个 `goods up --json` 返回 `{ success, data: { listing: { id, goodsName, price, shopName, status } } }`。逐个提取,累积汇总。
|
|
60
|
+
|
|
61
|
+
**批量下架**:每个 `goods down --json` 返回 `{ success, data: "下架成功" }`。Agent 从流程参数中提取商品信息展示:
|
|
62
|
+
```
|
|
63
|
+
[1/2] Nike 运动鞋 → ✅ 已下架
|
|
64
|
+
[2/2] Adidas T恤 → ✅ 已下架
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**批量改价**:每个 `goods price --json` 返回 `{ success, data: "修改成功" }`。从流程参数中提取信息展示:
|
|
68
|
+
```
|
|
69
|
+
[1/3] Nike 运动鞋 → ¥299 → ¥249 ✅
|
|
70
|
+
[2/3] Adidas T恤 → ¥199 → ¥149 ✅
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
> 即使某个操作失败(`success: false`),也不影响其他商品继续执行。每完成一个商品就反馈进度,全部完成后展示汇总。
|
|
74
|
+
|
|
75
|
+
## 参考
|
|
76
|
+
|
|
77
|
+
- [../SKILL.md](../SKILL.md) — 商品管理概览
|
|
78
|
+
- [../references/r2-goods-query.md](../references/r2-goods-query.md) — 查询命令
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# 带图片修改商品信息
|
|
2
|
+
|
|
3
|
+
用户提供了图片文件时,**Agent 自动完成所有步骤,用户只需确认**。
|
|
4
|
+
|
|
5
|
+
## 全自动流程
|
|
6
|
+
|
|
7
|
+
1. **展示列表**:`r2-cli goods listing --json` → 展示给用户选择要修改的商品
|
|
8
|
+
2. **上传图片**:`r2-cli goods hang-up upload-images --shop-id <shopId> --files <paths> --json`
|
|
9
|
+
3. **AI 读图识别**:Agent 用 Read 工具查看图片,识别品牌/类目/成色/描述/材质等
|
|
10
|
+
4. **自动匹配类目**:`r2-cli goods hang-up categories --json` → 根据识别结果匹配 catId + channelCatId
|
|
11
|
+
5. **自动查询属性**:`r2-cli goods hang-up props --channel-cat-id <id> --json` → 根据识别结果匹配成色/尺码/季节等
|
|
12
|
+
6. **自动搜索品牌**:`r2-cli goods hang-up brands --channel-cat-id <> --prop-id <> --key <品牌名> --json`
|
|
13
|
+
7. **汇总确认**:展示「当前值 vs 变更值」对比表,让用户确认
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
┌──────────┬──────────────────┬──────────────────┐
|
|
17
|
+
│ 字段 │ 当前值 │ 变更值 │
|
|
18
|
+
├──────────┼──────────────────┼──────────────────┤
|
|
19
|
+
│ 标题 │ Nike 运动鞋 白 42 │ Nike 运动鞋 黑 42 │
|
|
20
|
+
│ 图片 │ img1.jpg │ img1.jpg,img2.jpg │
|
|
21
|
+
│ 成色 │ 95新 │ 全新 │
|
|
22
|
+
│ 价格 │ ¥299(不改价) │ — │
|
|
23
|
+
└──────────┴──────────────────┴──────────────────┘
|
|
24
|
+
```
|
|
25
|
+
8. **提交**:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
r2-cli goods edit \
|
|
29
|
+
--id <goodsListingId> \
|
|
30
|
+
--category-id <catId> --channel-cat-id <channelCatId> \
|
|
31
|
+
--image-ids "id1,id2,id3" \
|
|
32
|
+
--item-attrs '[{...品牌...},{...成色...},{...尺码...},{...季节...}]' \
|
|
33
|
+
--brand-name "品牌名" \
|
|
34
|
+
--json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 约束
|
|
38
|
+
|
|
39
|
+
- `--category-id` 和 `--channel-cat-id` 后端必填,即使不改类目也要传当前值
|
|
40
|
+
- `--item-attrs` 必须包含 props 中所有属性,不只是修改的那一个
|
|
41
|
+
- `--image-ids` 保持字符串,不要转数字
|
|
42
|
+
- `--item-attrs` 传 JSON 字符串(`JSON.stringify()` 后)
|
|
43
|
+
|
|
44
|
+
## 参考
|
|
45
|
+
|
|
46
|
+
- [../references/r2-goods-listing.md](../references/r2-goods-listing.md) — edit 命令参数
|
|
47
|
+
- [../references/r2-goods-hangup.md](../references/r2-goods-hangup.md) — 图片上传和属性查询
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# 服装/鞋包挂售场景指南
|
|
2
|
+
|
|
3
|
+
## 季节推断
|
|
4
|
+
|
|
5
|
+
| 商品类型 | 适用季节 |
|
|
6
|
+
|----------|----------|
|
|
7
|
+
| 夹克、风衣、卫衣、针织衫 | 春秋季 |
|
|
8
|
+
| 羽绒服、棉衣、毛呢大衣 | 秋冬季 |
|
|
9
|
+
| T恤、短裤、背心、凉鞋 | 夏季 |
|
|
10
|
+
| 基础款衬衫、休闲裤 | 四季 |
|
|
11
|
+
|
|
12
|
+
## 图片识别字段
|
|
13
|
+
|
|
14
|
+
| 字段 | 可识别性 | 说明 |
|
|
15
|
+
|------|---------|------|
|
|
16
|
+
| 品牌 | ✅ | 从 Logo/标签读取,调 brands 搜索确认 |
|
|
17
|
+
| 款式 | ✅ | 从整体外观判断 |
|
|
18
|
+
| 成色 | ✅ | 根据磨损/污渍/起球程度判断 |
|
|
19
|
+
| 尺码 | ⚠️ | 从标签/吊牌/水洗标读取 |
|
|
20
|
+
| 货号 | ⚠️ | 从标签/吊牌读取 |
|
|
21
|
+
| 颜色/材质 | ⚠️ | 能识别则识别,否则汇总时问 |
|
|
22
|
+
|
|
23
|
+
## 品牌搜索建议
|
|
24
|
+
|
|
25
|
+
- 奢侈品(LV、Gucci、Chanel 等):搜完整英文名
|
|
26
|
+
- 运动品牌(Nike、Adidas 等):搜英文名,小写即可
|
|
27
|
+
- 国内品牌:搜中文名
|
|
28
|
+
|
|
29
|
+
## 参考
|
|
30
|
+
|
|
31
|
+
- [../SKILL.md](../SKILL.md) — 挂售流程
|
|
32
|
+
- [../references/r2-goods-hangup.md](../references/r2-goods-hangup.md) — 挂售参数详解
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: r2-shared
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.2.0
|
|
4
4
|
description: "R2-CLI 共享基础技能。安装、版本检查、统一错误格式、命令概览。r2-auth 和 r2-goods 的前置依赖。触发词:r2-cli、安装、install、错误格式。"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
@@ -15,7 +15,7 @@ metadata:
|
|
|
15
15
|
action: "已更名为 r2-shared,请删除旧 skill:rm -rf ~/.agents/skills/r2-cli"
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
# R2-Shared (v1.
|
|
18
|
+
# R2-Shared (v1.2)
|
|
19
19
|
|
|
20
20
|
> **Tip**: 始终使用 `--json` 获取结构化输出。所有 `--json` 命令统一错误格式 `{ success: false, error: "..." [, status: number] }`,检查 `success` 判断成败。`status` 字段在 HTTP 错误(ApiError)和参数校验失败(400)时包含。
|
|
21
21
|
> **Tip**: Agent 获取数据后展示给用户选择,不要让用户自己提供 ID。
|
|
@@ -34,6 +34,33 @@ metadata:
|
|
|
34
34
|
- 首次使用时,Agent 应运行 `r2-cli --version` 检查当前版本
|
|
35
35
|
- 最低要求版本:`1.0.12`,低于此版本提示用户更新:`npm install -g @round2ai/r2-cli@latest`
|
|
36
36
|
|
|
37
|
+
**更新通知(`_notice.update`)**:
|
|
38
|
+
`_notice.update` 会出现在所有 `--json` 命令的输出中(包含成功和失败输出),格式如下:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"success": true,
|
|
43
|
+
"data": { ... },
|
|
44
|
+
"_notice": {
|
|
45
|
+
"update": {
|
|
46
|
+
"message": "Update available: 1.0.15 → 1.0.16",
|
|
47
|
+
"command": "npm update -g @round2ai/r2-cli && npx skills add Round2AI/r2-cli --all -y"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**当你在输出中看到 `_notice.update` 时,完成用户当前请求后,主动提议帮用户更新**:
|
|
54
|
+
|
|
55
|
+
1. 告知用户当前版本和最新版本号
|
|
56
|
+
2. 提议执行更新(CLI 和 Skills 需要同时更新):
|
|
57
|
+
```bash
|
|
58
|
+
npm update -g @round2ai/r2-cli && npx skills add Round2AI/r2-cli --all -y
|
|
59
|
+
```
|
|
60
|
+
3. 更新完成后提醒用户:**退出并重新打开 AI Agent** 以加载最新 Skills
|
|
61
|
+
|
|
62
|
+
**规则**:不要静默忽略更新提示。即使当前任务与更新无关,也应在完成用户请求后补充告知。
|
|
63
|
+
|
|
37
64
|
**旧 Skill 清理**:
|
|
38
65
|
- 如果发现 `~/.agents/skills/r2-cli/`(已废弃的旧名称),提示用户删除:`rm -rf ~/.agents/skills/r2-cli`
|
|
39
66
|
- 当前正确的 skill 名称:`r2-shared`、`r2-auth`、`r2-goods`
|
|
@@ -51,32 +78,13 @@ npm install -g @round2ai/r2-cli@latest
|
|
|
51
78
|
- 先登录:`r2-cli auth login`(支持第二回合 APP / 微信 / 支付宝扫码)
|
|
52
79
|
- 检查状态:`r2-cli auth status`
|
|
53
80
|
|
|
54
|
-
##
|
|
81
|
+
## 认证命令
|
|
55
82
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
| `r2-cli auth logout` | 退出登录 |
|
|
62
|
-
|
|
63
|
-
## 商品管理命令(详见 r2-goods skill)
|
|
64
|
-
|
|
65
|
-
| 分类 | 命令 | 说明 |
|
|
66
|
-
|------|------|------|
|
|
67
|
-
| 查询 | `r2-cli goods shops [--json]` | 查看已授权店铺 |
|
|
68
|
-
| | `r2-cli goods stocks [--json]` | 查看仓库 |
|
|
69
|
-
| | `r2-cli goods list [--stock-id <id>] [--json]` | 查看选品商品 |
|
|
70
|
-
| | `r2-cli goods listing [--status <up/down/sold>] [--json]` | 查询上架列表 |
|
|
71
|
-
| 上架 | `r2-cli goods up --stock-goods-id <> --shop-id <> --price <> --json` | 普通上架(选品商品) |
|
|
72
|
-
| | `r2-cli goods down --id <id> [--json]` | 下架商品 |
|
|
73
|
-
| | `r2-cli goods price --id <id> --price <amount> [--json]` | 修改价格 |
|
|
74
|
-
| 修改 | `r2-cli goods edit --id <> --category-id <> --channel-cat-id <> ... --json` | 修改商品信息(定位推荐 `--id`) |
|
|
75
|
-
| 挂售 | `r2-cli goods hang-up categories [--json]` | 获取闲鱼类目 |
|
|
76
|
-
| | `r2-cli goods hang-up props --channel-cat-id <id> [--json]` | 获取属性列表 |
|
|
77
|
-
| | `r2-cli goods hang-up brands --channel-cat-id <> --prop-id <> --key <> [--json]` | 品牌搜索 |
|
|
78
|
-
| | `r2-cli goods hang-up upload-images --shop-id <> --files <> --json` | 上传图片 |
|
|
79
|
-
| | `r2-cli goods hang-up submit --shop-id <> --title <> ... --json` | 提交挂售上架 |
|
|
83
|
+
认证登录和闲鱼店铺授权的完整流程与参数详见 **r2-auth** skill。
|
|
84
|
+
|
|
85
|
+
## 商品管理命令
|
|
86
|
+
|
|
87
|
+
商品上架、下架、改价、修改、挂售以及查询的完整流程与参数详见 **r2-goods** skill。
|
|
80
88
|
|
|
81
89
|
## 其他命令
|
|
82
90
|
|
|
@@ -85,15 +93,51 @@ npm install -g @round2ai/r2-cli@latest
|
|
|
85
93
|
| `r2-cli update` | 一键更新 CLI 和技能 |
|
|
86
94
|
| `r2-cli uninstall` | 卸载并清除配置 |
|
|
87
95
|
|
|
88
|
-
##
|
|
96
|
+
## 上架路由
|
|
97
|
+
|
|
98
|
+
详见 **r2-goods** skill 的「上架路由决策」章节。
|
|
99
|
+
|
|
100
|
+
## Network & Retry
|
|
101
|
+
|
|
102
|
+
Agent 处理命令失败时的策略:
|
|
103
|
+
|
|
104
|
+
- **网络错误**(`TypeError`、`fetch failed`):最多自动重试 2 次,间隔 3 秒。连续失败则提示用户检查网络
|
|
105
|
+
- **超时错误**(`timeout`):重试 1 次。仍超时则建议检查网络或 SERVER_BASEURL 配置
|
|
106
|
+
- **认证错误**(`请先运行 r2-cli auth login 登录`、`401`):**不重试**,直接引导用户重新登录(见下方 Token Expiry Recovery)
|
|
107
|
+
- **轮询超时**(`轮询超时`):说明提交已接受但结果未回,建议稍后用 `goods listing` 查看
|
|
108
|
+
|
|
109
|
+
## Token Expiry Recovery
|
|
110
|
+
|
|
111
|
+
当命令返回认证错误时:
|
|
112
|
+
|
|
113
|
+
1. **立即停止当前工作流**,不要继续执行其他命令
|
|
114
|
+
2. 告知用户 Token 已过期,引导重新登录:`r2-cli auth login --json`
|
|
115
|
+
3. 重新登录成功后,**从上次成功的步骤继续**(不要从头开始)
|
|
116
|
+
|
|
117
|
+
## 友好输出原则
|
|
118
|
+
|
|
119
|
+
Agent 执行 `--json` 命令后,**不要直接把原始 JSON 丢给用户**。应从 JSON 中提取关键字段,整理为易读格式:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
❌ 错误:直接把 JSON 丢给用户
|
|
123
|
+
{ "success": true, "data": [{ "shopId": "10086", "shopName": "xxx", "platform": "xianyu" }] }
|
|
124
|
+
|
|
125
|
+
✅ 正确:提取关键字段,整理展示
|
|
126
|
+
店铺列表:
|
|
127
|
+
1. xxx(xianyu)— shopId: 10086
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
具体规则:
|
|
131
|
+
- **查询结果**:用编号列表展示(参见各 reference 的"Agent 展示格式"模板),末尾提示用户选择
|
|
132
|
+
- **操作结果**:提取关键字段(listing ID、价格、状态等),一行一个字段简洁展示
|
|
133
|
+
- **错误信息**:直接展示 `error` 字段内容,不展示整个 JSON 结构
|
|
134
|
+
- **确认提示**:展示商品关键信息(名称/价格/店铺)后,引导用户输入 yes/no
|
|
135
|
+
|
|
136
|
+
始终遵守:**Agent 看 JSON,用户看友好文本。**
|
|
89
137
|
|
|
90
|
-
|
|
91
|
-
- **用户明确指定方式或提供了图片** → 直接走对应流程
|
|
92
|
-
- **未指定方式** → **必须询问用户**:"选品上架还是挂售上架?"
|
|
93
|
-
- 选品上架 → `goods up`(店铺 → 仓库 → 选品商品 → 提交价格)
|
|
94
|
-
- 挂售上架 → `goods hang-up`(上传图片 → AI 读图识别 → 类目/属性 → 提交)
|
|
138
|
+
## 分页建议
|
|
95
139
|
|
|
96
|
-
|
|
140
|
+
查询类命令(`goods list`、`goods listing`)建议使用 `--page 1 --size 50`。如果响应包含分页信息,继续翻页直到数据取完。在查询前提醒用户可以通过 `--status` 或 `--stock-id` 缩小范围提高效率。
|
|
97
141
|
|
|
98
142
|
## 统一错误格式
|
|
99
143
|
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: r2-workflow-batch-up
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "批量上架工作流。将选品库中多个商品批量上架到闲鱼,支持同商品多店铺上架。触发词:批量上架、全部上架、都上架。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["r2-cli"]
|
|
8
|
+
related:
|
|
9
|
+
- "r2-shared"
|
|
10
|
+
- "r2-auth"
|
|
11
|
+
- "r2-goods"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# 批量上架工作流
|
|
15
|
+
|
|
16
|
+
**CRITICAL -- 开始前 MUST 先用 Read 工具读取 [../r2-shared/SKILL.md](../r2-shared/SKILL.md) 和 [../r2-auth/SKILL.md](../r2-auth/SKILL.md),确保已登录并了解执行规则。商品命令详细用法见 [../r2-goods/SKILL.md](../r2-goods/SKILL.md)。**
|
|
17
|
+
|
|
18
|
+
## 适用场景
|
|
19
|
+
|
|
20
|
+
- "帮我把这些商品都上架"
|
|
21
|
+
- "选品库全部上架到店铺"
|
|
22
|
+
- "这几件都上架了吧"
|
|
23
|
+
|
|
24
|
+
## 工作流
|
|
25
|
+
|
|
26
|
+
1. **确认店铺**:`r2-cli goods shops --json` → 展示店铺让用户选择
|
|
27
|
+
2. **确认仓库**:`r2-cli goods stocks --json` → 用户选择仓库
|
|
28
|
+
3. **展示待上架商品**:`r2-cli goods list --stock-id <id> --json`
|
|
29
|
+
4. **用户选择要上架的商品**(可多选)
|
|
30
|
+
5. **逐商品询问价格** → 逐个执行 `goods up`
|
|
31
|
+
6. **汇总结果展示**
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
批量上架结果:
|
|
35
|
+
✅ [商品A] → ¥[价格] → 成功(listing id: [id])
|
|
36
|
+
✅ [商品B] → ¥[价格] → 成功(listing id: [id])
|
|
37
|
+
❌ [商品C] → 失败:[错误原因]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 友好输出指引
|
|
41
|
+
|
|
42
|
+
批量上架过程中,每个商品独立执行 `goods up --json`,Agent 需要逐个处理响应:
|
|
43
|
+
|
|
44
|
+
**每上架一个商品,及时反馈进度**:
|
|
45
|
+
```
|
|
46
|
+
[1/3] Nike 运动鞋 → 上架中...
|
|
47
|
+
[1/3] Nike 运动鞋 → ✅ 成功(id: 12345)
|
|
48
|
+
[2/3] Adidas T恤 → 上架中...
|
|
49
|
+
[2/3] Adidas T恤 → ❌ 失败:商家编码重复
|
|
50
|
+
...
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**全部完成后展示汇总**:
|
|
54
|
+
```
|
|
55
|
+
批量上架完成!
|
|
56
|
+
✅ 成功:2 个商品
|
|
57
|
+
- Nike 运动鞋 → ¥299 → 店铺A(id: 12345)
|
|
58
|
+
- LV 包 → ¥9999 → 店铺B(id: 12346)
|
|
59
|
+
❌ 失败:1 个商品
|
|
60
|
+
- Adidas T恤 → 错误:商家编码重复
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
> 每个 `goods up --json` 返回 `{ success, data: { listing: { id, goodsName, price, shopName, status } } }`。Agent 从每个响应中提取 `success` 和 `data.listing` 字段,累加后汇总展示。
|
|
64
|
+
>
|
|
65
|
+
> 中途 Token 过期时:停止工作流,告知用户已完成的商品数,引导重新登录后从断点继续。**不要丢弃已完成的结果**。
|
|
66
|
+
|
|
67
|
+
## 规则
|
|
68
|
+
|
|
69
|
+
- **每个商品独立提交**:一个失败不影响其他商品
|
|
70
|
+
- **批量上架间隔至少 1 秒**,避免触发限流
|
|
71
|
+
- **中途 Token 过期**:停止工作流,引导重新登录后从当前商品继续
|
|
72
|
+
- **提交失败 ≠ 已下架**:可能只是轮询超时,稍后用 `goods listing` 确认
|
|
73
|
+
|
|
74
|
+
## 参考
|
|
75
|
+
|
|
76
|
+
- [r2-goods/SKILL.md](../r2-goods/SKILL.md) — goods up 详细参数
|
|
77
|
+
- [r2-shared/SKILL.md](../r2-shared/SKILL.md) — 执行规则、Token Expiry Recovery
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: r2-workflow-goods-audit
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "商品审核上架工作流。检查待上架商品的信息完整性后批量提交。触发词:审核上架、审核通过后上架、批量上架审核。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["r2-cli"]
|
|
8
|
+
related:
|
|
9
|
+
- "r2-shared"
|
|
10
|
+
- "r2-auth"
|
|
11
|
+
- "r2-goods"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# 商品审核上架工作流
|
|
15
|
+
|
|
16
|
+
**CRITICAL -- 开始前 MUST 先用 Read 工具读取 [../r2-shared/SKILL.md](../r2-shared/SKILL.md) 和 [../r2-auth/SKILL.md](../r2-auth/SKILL.md),确保已登录并了解执行规则。商品命令详细用法见 [../r2-goods/SKILL.md](../r2-goods/SKILL.md)。**
|
|
17
|
+
|
|
18
|
+
## 适用场景
|
|
19
|
+
|
|
20
|
+
- "审核通过的商品可以上架了"
|
|
21
|
+
- "帮我检查一下这些商品信息有没有问题"
|
|
22
|
+
|
|
23
|
+
## 工作流
|
|
24
|
+
|
|
25
|
+
1. **查询待审核商品**:`r2-cli goods list --json`
|
|
26
|
+
2. **AI 校验信息完整性**:检查每个商品是否具备上架所需信息
|
|
27
|
+
3. **标记问题商品**:展示有问题的商品和具体缺失项
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
商品完整性检查结果:
|
|
31
|
+
✅ [商品A] — 信息完整
|
|
32
|
+
❌ [商品B] — 缺少:价格、图片
|
|
33
|
+
❌ [商品C] — 缺少:类目
|
|
34
|
+
```
|
|
35
|
+
4. **用户确认**:用户确认后进入批量上架
|
|
36
|
+
5. **批量提交**:逐个执行 `goods up`
|
|
37
|
+
|
|
38
|
+
## 友好输出指引
|
|
39
|
+
|
|
40
|
+
**审核结果展示**:从 `goods list --json` 返回的 JSON 中提取每个商品的字段,逐一校验。展示时不展示原始 JSON,直接输出浓缩的审核结果:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
正在审核 5 个商品...
|
|
44
|
+
─────────────────────
|
|
45
|
+
✅ 商品A — 信息完整
|
|
46
|
+
❌ 商品B — 缺少:价格、图片
|
|
47
|
+
→ 请补充 salePrice 和图片后再上架
|
|
48
|
+
❌ 商品C — 缺少:类目
|
|
49
|
+
→ 请分配类目后再上架
|
|
50
|
+
─────────────────────
|
|
51
|
+
结果:2 个通过,1 个缺项跳过(2 个无需处理)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**批量提交进度**:逐个执行 `goods up --json` 时,实时反馈进度:
|
|
55
|
+
```
|
|
56
|
+
正在上架通过审核的商品...
|
|
57
|
+
[1/2] 商品A → ✅ 成功(listing id: 12345)
|
|
58
|
+
[2/2] 商品D → ✅ 成功(listing id: 12346)
|
|
59
|
+
全部上架完成!
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> `goods list --json` 返回 `{ success, data: { list: SelectGoodsItem[], pagination: { total, pageNum, pageSize } } }`。Agent 从 `data.list` 中遍历,检查每个商品的 `goodsName`(标题)、`salePrice`(价格 > 0)、`cate1Name/cate2Name/cate3Name`(类目)、`img`(图片)。
|
|
63
|
+
>
|
|
64
|
+
> 缺项商品标记后**跳过不上架**,只上架信息完整的商品。结束后汇总告知用户哪些商品因缺项被跳过。
|
|
65
|
+
|
|
66
|
+
## 完整性校验规则
|
|
67
|
+
|
|
68
|
+
| 检查项 | 要求 |
|
|
69
|
+
|--------|------|
|
|
70
|
+
| 标题 | 非空,包含品牌+款式+颜色+尺码 |
|
|
71
|
+
| 价格 | `salePrice > 0` |
|
|
72
|
+
| 类目 | 已分配有效类目 |
|
|
73
|
+
| 图片 | 至少 1 张 |
|
|
74
|
+
|
|
75
|
+
## 参考
|
|
76
|
+
|
|
77
|
+
- [r2-goods/SKILL.md](../r2-goods/SKILL.md) — 商品管理命令
|
|
78
|
+
- [r2-goods/scenes/r2-scene-batch-operations.md](../r2-goods/scenes/r2-scene-batch-operations.md) — 批量操作指南
|
|
79
|
+
- [r2-shared/SKILL.md](../r2-shared/SKILL.md) — 执行规则
|