@round2ai/r2-cli 1.0.9 → 1.0.11

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.
@@ -1,80 +1,148 @@
1
1
  ---
2
2
  name: r2-auth
3
- description: R2-CLI 认证登录专家。两步式扫码登录和闲鱼店铺授权。用于登录、login、auth、扫码、二维码、授权、xianyu、logout、登出、状态查询场景。Agent 生成二维码后同时展示 unicodeQR qrUrl 给用户。
3
+ description: R2-CLI 认证登录专家。扫码登录和闲鱼店铺授权。用于登录、login、auth、扫码、二维码、授权、xianyu、logout、登出、状态查询场景。Agent 使用 auth login --json 一步完成登录。Agent 必须先将 qrUrl 链接展示给用户,再等待扫码结果。
4
4
  ---
5
5
 
6
6
  # R2-Auth Skill
7
7
 
8
- 两步式扫码登录 + 闲鱼店铺授权,专为 AI Agent 设计。
8
+ 扫码登录 + 闲鱼店铺授权,专为 AI Agent 设计。
9
9
 
10
10
  ## 命令前缀
11
11
 
12
- 见 **r2-cli** skill 的"命令前缀自动检测"章节。
12
+ 见 **r2-cli** skill 的"命令前缀自动检测"章节。以下文档使用 `r2-cli` 作为前缀,根据检测结果替换。
13
13
 
14
- ## 扫码登录(两步)
14
+ ---
15
+
16
+ ## 扫码登录(一步式,推荐)
15
17
 
16
- ### 1 步:生成二维码
18
+ 一条命令完成:生成扫码页面 + 自动打开浏览器 + 自动轮询登录状态:
17
19
 
18
20
  ```bash
19
- r2-cli auth login qr
21
+ r2-cli auth login --json
20
22
  ```
21
23
 
22
- 输出 JSON:
24
+ 命令会依次输出两段 JSON:
25
+
26
+ ### 第 1 段:二维码信息(立即输出)
27
+
23
28
  ```json
24
29
  {
25
30
  "qrToken": "xxx",
26
31
  "expireTimeMs": 300000,
27
32
  "pollIntervalMs": 800,
28
- "unicodeQR": "█▀▀▀▀▀█ ...",
29
33
  "url": "https://m.puresnake.com/r2/auth/login?qrToken=xxx&from=wechat",
30
34
  "qrUrl": "http://127.0.0.1:52173/login/"
31
35
  }
32
36
  ```
33
37
 
34
- **Agent 必须同时展示以下两种方式**:
38
+ | 字段 | 说明 |
39
+ |------|------|
40
+ | `qrToken` | 二维码 token(轮询用,不需要手动使用) |
41
+ | `expireTimeMs` | 二维码过期时间(毫秒),默认 5 分钟 |
42
+ | `pollIntervalMs` | 轮询间隔(毫秒),不需要手动使用 |
43
+ | `url` | 扫码链接(用户也可手动访问) |
44
+ | `qrUrl` | 本地浏览器扫码页面链接 |
35
45
 
36
- 1. `unicodeQR` 直接输出到聊天窗口(unicode 半块字符 █▀▄ 可显示为 QR 码)
37
- 2. 输出 `qrUrl` 链接供用户点击在浏览器中打开
46
+ ### 2 段:登录结果(用户扫码确认后输出)
38
47
 
39
- 两种方式缺一不可。用户可使用**第二回合 APP / 微信 / 支付宝**扫码。
48
+ 成功:
40
49
 
41
- ### 第 2 步:立即轮询登录状态
50
+ ```json
51
+ { "success": true, "userInfo": { "nickname": "...", "mobile": "..." } }
52
+ ```
42
53
 
43
- **关键**:输出二维码后,Agent 必须立即在后台启动轮询,不要等待用户回复。
54
+ 失败:
44
55
 
45
- ```bash
46
- r2-cli auth login poll --token <qrToken> --expire <expireTimeMs> --interval <pollIntervalMs>
56
+ ```json
57
+ { "success": false, "error": "二维码已过期" }
47
58
  ```
48
59
 
49
- 使用 Bash 工具的 `run_in_background: true` 启动,然后用 `TaskOutput` 阻塞等待。参数取自第 1 步返回的 JSON。
60
+ ### Agent 操作步骤
50
61
 
51
- 成功:`{ "success": true, "userInfo": { "nickname": "...", "mobile": "..." }, "token": "..." }`
52
- 失败:`{ "success": false, "error": "轮询超时 ..." }`
62
+ 1. Bash 工具 `run_in_background: true` 启动命令
63
+ 2. `TaskOutput(block=true, timeout=5000)` 获取第 1 段 JSON
64
+ 3. **必须先**将 `qrUrl` 以醒目格式单独一行展示给用户:
53
65
 
54
- ## 闲鱼店铺授权(两步)
66
+ ```
67
+ 扫码登录:http://127.0.0.1:PORT/login/
68
+ ```
55
69
 
56
- 流程与登录相同。
70
+ 4. 告知用户:浏览器会尝试自动打开扫码页面,如未打开请手动点击上方链接。用户可使用**第二回合 APP / 微信 / 支付宝**扫码。
71
+ 5. 用 `TaskOutput(block=true, timeout=300000)` 等待第 2 段 JSON(登录结果)
72
+ 6. 检查 `success` 字段判断登录是否成功
73
+
74
+ **为什么必须先展示链接**:自动打开浏览器在某些环境下可能失败(远程服务器、SSH、无头终端)。链接是用户扫码的唯一保障,必须优先展示。
75
+
76
+ > 旧版两步式流程(先 `auth login qr` 再 `auth login poll`)已废弃。如需手动轮询,可使用 `auth login poll --token <>`。
77
+
78
+ ---
79
+
80
+ ## 闲鱼店铺授权
81
+
82
+ 流程与登录类似,同样一步完成:
57
83
 
58
84
  ```bash
59
- # 1
60
- r2-cli auth xianyu qr
61
- # → { "state": "xxx", "expireTimeMs": 300000, "pollIntervalMs": 1000, "unicodeQR": "...", "qrUrl": "..." }
85
+ r2-cli auth xianyu --json
86
+ ```
87
+
88
+ ### 第 1 段:授权二维码信息(立即输出)
89
+
90
+ ```json
91
+ {
92
+ "state": "xxx",
93
+ "expireTimeMs": 300000,
94
+ "pollIntervalMs": 1000,
95
+ "qrUrl": "http://127.0.0.1:PORT/login-xianyu/"
96
+ }
97
+ ```
98
+
99
+ | 字段 | 说明 |
100
+ |------|------|
101
+ | `state` | 授权状态 token(轮询用) |
102
+ | `expireTimeMs` | 过期时间(毫秒),默认 5 分钟 |
103
+ | `pollIntervalMs` | 轮询间隔(毫秒) |
104
+ | `qrUrl` | 本地浏览器授权页面链接 |
105
+
106
+ ### 第 2 段:授权结果(用户扫码确认后输出)
107
+
108
+ 成功:
62
109
 
63
- # 第 2 步
64
- r2-cli auth xianyu poll --state <state> --expire <expireTimeMs> --interval <pollIntervalMs>
65
- # → 成功:{ "success": true, "shopId": "...", "shopName": "..." }
110
+ ```json
111
+ { "success": true, "shopId": "...", "shopName": "..." }
112
+ ```
113
+
114
+ 失败:
115
+
116
+ ```json
117
+ { "success": false, "error": "授权链接已过期" }
66
118
  ```
67
119
 
68
- Agent 同样必须同时展示 `unicodeQR` 和 `qrUrl`。
120
+ Agent 操作步骤与登录相同:
121
+ 1. 获取第 1 段 JSON
122
+ 2. **先展示 `qrUrl` 链接给用户**(单独一行,醒目格式)
123
+ 3. 告知用户浏览器会尝试自动打开,如未打开请手动点击链接
124
+ 4. 等待第 2 段 JSON
125
+
126
+ ---
69
127
 
70
128
  ## 其他命令
71
129
 
72
130
  | 命令 | 说明 |
73
131
  |------|------|
132
+ | `r2-cli auth login` | 扫码登录(自动打开浏览器,人类使用) |
133
+ | `r2-cli auth login --json` | 扫码登录(输出 JSON + 自动打开浏览器,Agent 推荐) |
134
+ | `r2-cli auth login poll --token <>` | 手动轮询登录状态(备选,不推荐) |
135
+ | `r2-cli auth xianyu` | 闲鱼店铺授权(自动打开浏览器,人类使用) |
136
+ | `r2-cli auth xianyu --json` | 闲鱼店铺授权(输出 JSON + 自动打开浏览器,Agent 推荐) |
137
+ | `r2-cli auth xianyu poll --state <>` | 手动轮询授权状态(备选,不推荐) |
74
138
  | `r2-cli auth status` | 查看登录状态 |
75
139
  | `r2-cli auth logout` | 退出登录 |
76
140
 
141
+ ---
142
+
77
143
  ## 注意事项
78
144
 
79
- - 二维码默认 5 分钟过期,超时需重新执行第 1 步
80
- - 登录成功后,后续 goods 等命令可直接使用
145
+ - 命令会尝试自动打开浏览器展示扫码页面,但链接始终会输出到终端,确保即使浏览器未打开用户也能手动访问
146
+ - 二维码默认 5 分钟过期,超时需重新执行命令
147
+ - 登录成功后 Token 存储在 `~/.r2-cli/config.json`(原子写入,防止中断导致丢失),后续 `goods` 等命令可直接使用
148
+ - 内存缓存的 Token 带过期检查(5 分钟安全边际),过期自动重新读取
@@ -5,7 +5,7 @@ description: R2-CLI 二手潮奢交易 CLI 工具。用于认证登录、商品
5
5
 
6
6
  # R2-CLI Skill
7
7
 
8
- 二手潮奢交易命令行工具。
8
+ 二手潮奢交易命令行工具,由 Round2AI 团队维护。覆盖商品上架、认证登录等核心业务域。
9
9
 
10
10
  ## 安装
11
11
 
@@ -34,37 +34,37 @@ npm install -g @round2ai/r2-cli@latest
34
34
 
35
35
  | 命令 | 说明 |
36
36
  |------|------|
37
- | `r2-cli auth login` | 扫码登录(交互式,人类用) |
38
- | `r2-cli auth login qr` | 生成登录二维码 JSONAgent 第1步) |
39
- | `r2-cli auth login poll --token <>` | 轮询登录状态 JSON(Agent 第2步) |
40
- | `r2-cli auth xianyu` | 闲鱼店铺授权(交互式) |
41
- | `r2-cli auth xianyu qr` | 获取授权二维码 JSONAgent 第1步) |
42
- | `r2-cli auth xianyu poll --state <>` | 轮询授权状态 JSON(Agent 第2步) |
37
+ | `r2-cli auth login` | 扫码登录(自动打开浏览器,人类使用) |
38
+ | `r2-cli auth login --json` | 扫码登录(自动打开浏览器 + JSON 输出,Agent 推荐) |
39
+ | `r2-cli auth login poll --token <>` | 手动轮询登录状态(备选方案,不推荐) |
40
+ | `r2-cli auth xianyu` | 闲鱼店铺授权(自动打开浏览器,人类使用) |
41
+ | `r2-cli auth xianyu --json` | 闲鱼店铺授权(自动打开浏览器 + JSON 输出,Agent 推荐) |
42
+ | `r2-cli auth xianyu poll --state <>` | 手动轮询授权状态(备选方案,不推荐) |
43
43
  | `r2-cli auth status` | 查看登录状态 |
44
44
  | `r2-cli auth logout` | 退出登录 |
45
45
 
46
- > 认证登录的 Agent 两步式流程见 **r2-auth** skill。
46
+ > 认证登录的详细 Agent 操作流程见 **r2-auth** skill。
47
47
 
48
48
  ## 商品管理命令
49
49
 
50
50
  | 命令 | 说明 |
51
51
  |------|------|
52
- | `r2-cli goods shops [--json]` | 查看所有已授权店铺 |
52
+ | `r2-cli goods shops [--json]` | 查看所有已授权店铺(跨平台) |
53
53
  | `r2-cli goods stocks [--json]` | 查看所有仓库 |
54
- | `r2-cli goods list --stock-id <id> [--json]` | 查看仓库中的选品商品 |
55
- | `r2-cli goods listing [--json]` | 查询上架列表(支持 --id/--shop-id/--status 过滤) |
56
- | `r2-cli goods up` | 交互式上架 |
57
- | `r2-cli goods up --stock-goods-id <id> --shop-id <id> --price <amount> --json` | Agent 直接上架(自动轮询结果) |
58
- | `r2-cli goods down --id <id> [--json]` | 下架商品(**必须先确认**) |
59
- | `r2-cli goods price --id <id> --price <amount> [--json]` | 修改上架价格(**必须先询问用户新价格**) |
54
+ | `r2-cli goods list [--stock-id <id>] [--stock-goods-id <id>] [--json]` | 查看选品商品(两个过滤参数均为可选,支持 `--page` 和 `--size`) |
55
+ | `r2-cli goods listing [--json]` | 查询上架列表(支持 `--id` / `--shop-id` / `--stock-goods-id` / `--stock-id` / `--status` / `--platform` 过滤) |
56
+ | `r2-cli goods up` | 交互式上架(自动轮询上架结果) |
57
+ | `r2-cli goods up --stock-goods-id <id> --shop-id <id> --price <amount> --json` | Agent 直接上架(自动轮询上架结果) |
58
+ | `r2-cli goods down --id <id> [--json]` | 下架商品(也可用 `--stock-goods-id <id> --shop-id <id>`) |
59
+ | `r2-cli goods price --id <id> --price <amount> [--json]` | 修改上架价格(也可用 `--stock-goods-id <id> --shop-id <id>`) |
60
60
 
61
- ### Agent 上架 4 步流程
61
+ ## Agent 上架 4 步流程
62
62
 
63
- **核心理念:Agent 获取数据后展示给用户选择,不要让用户自己提供 ID。**
63
+ **核心原则:Agent 获取数据后展示给用户选择,不要让用户自己提供 ID。**
64
64
 
65
- 1. `r2-cli goods shops --json` → 展示店铺(shopIdshopNameplatform)→ 用户选择
66
- 2. `r2-cli goods stocks --json` → 展示仓库(stockIdstockName)→ 用户选择
67
- 3. `r2-cli goods list --stock-id <id> --json` → 展示商品(stockGoodsIdgoodsNamebrandsizesalePrice)→ 用户选择
65
+ 1. `r2-cli goods shops --json` → 展示店铺(`shopId`、`shopName`、`platform`)→ 用户选择
66
+ 2. `r2-cli goods stocks --json` → 展示仓库(`stockId`、`stockName`)→ 用户选择
67
+ 3. `r2-cli goods list --stock-id <id> --json` → 展示商品(`stockGoodsId`、`goodsName`、`brand`、`size`、`salePrice`)→ 用户选择(也可用 `--stock-goods-id <id>` 查询单个商品)
68
68
  4. `r2-cli goods up --stock-goods-id <id> --shop-id <id> --price <amount> --json` → 提交上架(自动轮询结果)
69
69
 
70
- > 完整流程和参数说明见 **r2-goods** skill。
70
+ > 完整流程、参数说明和注意事项见 **r2-goods** skill。
@@ -15,20 +15,20 @@ description: R2-CLI 商品管理专家。用于商品上架/下架/改价、查
15
15
 
16
16
  | 命令 | 说明 |
17
17
  |------|------|
18
- | `r2-cli goods shops [--json]` | 查看所有已授权店铺 |
18
+ | `r2-cli goods shops [--json]` | 查看所有已授权店铺(跨平台) |
19
19
  | `r2-cli goods stocks [--json]` | 查看所有仓库 |
20
- | `r2-cli goods list --stock-id <id> [--json]` | 查看仓库中的选品商品 |
21
- | `r2-cli goods listing [--json]` | 查询上架列表(支持 --id/--shop-id/--status 过滤) |
22
- | `r2-cli goods up` | 交互式上架 |
23
- | `r2-cli goods up --stock-goods-id <id> --shop-id <id> --price <amount> --json` | Agent 直接上架(自动轮询结果) |
24
- | `r2-cli goods down --id <id> [--json]` | 下架商品(**必须先确认**) |
25
- | `r2-cli goods price --id <id> --price <amount> [--json]` | 修改上架价格(**必须先询问用户新价格**) |
20
+ | `r2-cli goods list [--stock-id <id>] [--stock-goods-id <id>] [--json]` | 查看选品商品(两个过滤参数均为可选,支持 `--page <n>` 和 `--size <n>`) |
21
+ | `r2-cli goods listing [--json]` | 查询上架列表(支持多种过滤参数,见下方详细说明) |
22
+ | `r2-cli goods up` | 交互式上架(人类使用,自动轮询上架结果) |
23
+ | `r2-cli goods up --stock-goods-id <id> --shop-id <id> --price <amount> --json` | Agent 直接上架(自动轮询上架结果) |
24
+ | `r2-cli goods down --id <id> [--json]` | 下架商品(也可用 `--stock-goods-id <id> --shop-id <id>`) |
25
+ | `r2-cli goods price --id <id> --price <amount> [--json]` | 修改上架价格(也可用 `--stock-goods-id <id> --shop-id <id>`) |
26
26
 
27
27
  ---
28
28
 
29
29
  ## Agent 上架流程(4 步)
30
30
 
31
- **每一步 Agent 获取数据后,必须展示给用户让用户做选择。** 不要让用户自己提供 ID
31
+ **每一步 Agent 获取数据后,必须展示给用户让用户做选择。不要让用户自己提供 ID。**
32
32
 
33
33
  ### 第 1 步:获取店铺 → 用户选择
34
34
 
@@ -36,7 +36,15 @@ description: R2-CLI 商品管理专家。用于商品上架/下架/改价、查
36
36
  r2-cli goods shops --json
37
37
  ```
38
38
 
39
- 展示 `shopId`(第三方店铺 ID,**上架参数取这个,不是 `id`**)、`shopName`、`platform`。
39
+ 返回店铺列表,每个店铺包含:
40
+
41
+ | 字段 | 说明 |
42
+ |------|------|
43
+ | `shopId` | 第三方店铺 ID(**上架参数取这个,不是 `id`**) |
44
+ | `shopName` | 店铺名称 |
45
+ | `platform` | 平台(xianyu / douyin 等) |
46
+
47
+ 展示给用户选择后记录 `shopId`。
40
48
 
41
49
  ### 第 2 步:获取仓库 → 用户选择
42
50
 
@@ -44,15 +52,36 @@ r2-cli goods shops --json
44
52
  r2-cli goods stocks --json
45
53
  ```
46
54
 
47
- 展示 `stockId`、`stockName`。`stockId` 用于第 3 步过滤商品。
55
+ 返回仓库列表,每个仓库包含:
56
+
57
+ | 字段 | 说明 |
58
+ |------|------|
59
+ | `stockId` | 仓库 ID(用于第 3 步过滤商品) |
60
+ | `stockName` | 仓库名称 |
48
61
 
49
62
  ### 第 3 步:获取选品商品 → 用户选择
50
63
 
51
64
  ```bash
65
+ # 按仓库过滤(推荐,展示该仓库下所有可选商品)
52
66
  r2-cli goods list --stock-id <stockId> --json
67
+
68
+ # 按商品 ID 精确查询单个商品
69
+ r2-cli goods list --stock-goods-id <id> --json
70
+
71
+ # 翻页查看更多商品
72
+ r2-cli goods list --stock-id <stockId> --page 2 --size 20 --json
53
73
  ```
54
74
 
55
- 展示 `stockGoodsId`(**上架参数取这个**)、`goodsName`、`brand`、`size`、`salePrice`。支持翻页(`--page 2`)。
75
+ 返回商品列表,每个商品包含:
76
+
77
+ | 字段 | 说明 |
78
+ |------|------|
79
+ | `stockGoodsId` | 库存商品 ID(**上架参数取这个**) |
80
+ | `goodsName` | 商品名称 |
81
+ | `brand` | 品牌 |
82
+ | `size` | 尺码 |
83
+ | `salePrice` | 建议售价 |
84
+ | `cate1Name` / `cate2Name` / `cate3Name` | 分类 |
56
85
 
57
86
  ### 第 4 步:提交上架
58
87
 
@@ -60,47 +89,118 @@ r2-cli goods list --stock-id <stockId> --json
60
89
  r2-cli goods up --stock-goods-id <stockGoodsId> --shop-id <shopId> --price <amount> --json
61
90
  ```
62
91
 
63
- 命令自动轮询上架进度(每 2 秒,最多 10 秒),返回 `{ success, data: { submit, listing } }`。检查 `data.listing.status` 判断最终状态(init/up/down/fail)。
92
+ 命令会自动轮询上架进度(每 2 秒查询一次,最多 10 秒),最终返回:
93
+
94
+ ```json
95
+ {
96
+ "success": true,
97
+ "data": {
98
+ "submit": { "...提交结果..." },
99
+ "listing": {
100
+ "id": "上架记录ID",
101
+ "status": "up",
102
+ "goodsName": "...",
103
+ "price": 299,
104
+ "...": "..."
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ 检查 `data.listing.status` 判断最终状态:
111
+
112
+ | status | 含义 |
113
+ |--------|------|
114
+ | `init` | 待上架(处理中,正常不应出现在最终结果) |
115
+ | `up` | 已上架成功 |
116
+ | `down` | 已下架 |
117
+ | `fail` | 上架失败,查看 `errorMsg` 了解原因 |
64
118
 
65
- ### 上架参数
119
+ ### 上架参数说明
66
120
 
67
- | 参数 | 必填 | 来源 |
121
+ | 参数 | 必填 | 说明 |
68
122
  |------|------|------|
69
- | `--stock-goods-id <id>` | 是 | 3 `stockGoodsId` |
70
- | `--shop-id <id>` | 是 | 1 `shopId`(不是 `id`) |
71
- | `--price <amount>` | 是 | 用户输入 |
72
- | `-p, --platform` | 否 | 默认 xianyu |
73
- | `--json` | 否 | Agent 推荐 |
123
+ | `--stock-goods-id <id>` | 是 | 库存商品 ID(来自第 3 步的 `stockGoodsId`) |
124
+ | `--shop-id <id>` | 是 | 第三方店铺 ID(来自第 1 步的 `shopId`,**不是 `id`**) |
125
+ | `--price <amount>` | 是 | 上架价格(正数) |
126
+ | `-p, --platform <platform>` | 否 | 平台,默认 xianyu |
127
+ | `--json` | 否 | JSON 输出(Agent 推荐使用) |
74
128
 
75
129
  ---
76
130
 
77
131
  ## 下架商品
78
132
 
79
- **Agent 必须先向用户确认后再下架。**
133
+ **Agent 必须先向用户确认后再执行下架操作。**
134
+
135
+ 支持两种方式指定商品(二选一):
80
136
 
81
137
  ```bash
138
+ # 方式 1:通过上架记录 ID(来自 listing 列表的 id 字段)
82
139
  r2-cli goods down --id <goodsListingId> --json
83
- # 或 --stock-goods-id <id> --shop-id <id>
140
+
141
+ # 方式 2:通过库存商品 ID + 店铺 ID
142
+ r2-cli goods down --stock-goods-id <id> --shop-id <id> --json
84
143
  ```
85
144
 
145
+ 参数校验:必须提供 `--id` 或同时提供 `--stock-goods-id` 和 `--shop-id`,否则返回错误。
146
+
147
+ ---
148
+
86
149
  ## 修改价格
87
150
 
88
- **Agent 必须先询问用户新价格,不能自行决定。** 用户说"修改价格"时,先问"要改成多少?"。
151
+ **Agent 必须先询问用户新价格,不能自行决定价格。** 用户说"修改价格"时,先问"要改成多少?"。
89
152
 
90
153
  ```bash
154
+ # 方式 1:通过上架记录 ID
91
155
  r2-cli goods price --id <goodsListingId> --price <新价格> --json
92
- # 或 --stock-goods-id <id> --shop-id <id>
156
+
157
+ # 方式 2:通过库存商品 ID + 店铺 ID
158
+ r2-cli goods price --stock-goods-id <id> --shop-id <id> --price <新价格> --json
93
159
  ```
94
160
 
161
+ `--price` 为必填参数。同样需要提供 `--id` 或 `--stock-goods-id + --shop-id`。
162
+
163
+ ---
164
+
95
165
  ## 查询上架列表
96
166
 
97
167
  ```bash
168
+ # 查看所有上架记录
98
169
  r2-cli goods listing --json
99
- # 支持 --id / --shop-id / --stock-goods-id / --status <init|up|down|fail> / --platform 过滤
170
+
171
+ # 过滤查询
172
+ r2-cli goods listing --status up --json # 只看已上架
173
+ r2-cli goods listing --shop-id <id> --json # 按店铺过滤
174
+ r2-cli goods listing --stock-goods-id <id> --json # 按商品过滤
175
+ r2-cli goods listing --id <id> --json # 精确查询
100
176
  ```
101
177
 
178
+ 支持的过滤参数:
179
+
180
+ | 参数 | 说明 |
181
+ |------|------|
182
+ | `--id <id>` | 上架记录 ID |
183
+ | `--stock-goods-id <id>` | 库存商品 ID |
184
+ | `--shop-id <id>` | 店铺 ID |
185
+ | `--stock-id <id>` | 仓库 ID |
186
+ | `-s, --status <status>` | 状态过滤:`init` / `up` / `down` / `fail` |
187
+ | `-p, --platform <platform>` | 平台,默认 xianyu |
188
+
102
189
  ---
103
190
 
104
191
  ## 错误处理
105
192
 
106
- 所有命令统一格式:`{ "success": false, "error": "错误信息" }`。检查 `success` 判断成败。
193
+ 所有 `--json` 命令统一错误格式:
194
+
195
+ ```json
196
+ { "success": false, "error": "错误信息" }
197
+ ```
198
+
199
+ 检查 `success` 字段判断成败。常见错误:
200
+
201
+ | 错误信息 | 原因 | 解决方法 |
202
+ |----------|------|----------|
203
+ | `请先运行 r2-cli auth login 登录` | 未登录或 Token 过期 | 执行 `r2-cli auth login --json` |
204
+ | `请指定下架条件:--id 或 --stock-goods-id + --shop-id` | 缺少必要参数 | 补充参数 |
205
+ | `--price <amount> 为必填参数` | 改价时未提供价格 | 询问用户新价格后传入 |
206
+ | `轮询超时` | 上架结果查询超时 | 建议用户稍后用 `goods listing` 查看 |