cbs-4px-merchant-cli 0.0.7 → 0.0.9

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.
Files changed (68) hide show
  1. package/README.4px.md +38 -5
  2. package/README.cainiao.md +38 -5
  3. package/README.md +38 -5
  4. package/dist/cli.js +269 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/address.js +6 -26
  7. package/dist/commands/address.js.map +1 -1
  8. package/dist/commands/claim.js +14 -34
  9. package/dist/commands/claim.js.map +1 -1
  10. package/dist/commands/config.d.ts +9 -2
  11. package/dist/commands/config.js +247 -0
  12. package/dist/commands/config.js.map +1 -1
  13. package/dist/commands/country.js +6 -26
  14. package/dist/commands/country.js.map +1 -1
  15. package/dist/commands/custody.d.ts +38 -0
  16. package/dist/commands/custody.js +176 -0
  17. package/dist/commands/custody.js.map +1 -0
  18. package/dist/commands/customs.js +17 -65
  19. package/dist/commands/customs.js.map +1 -1
  20. package/dist/commands/finance.js +56 -204
  21. package/dist/commands/finance.js.map +1 -1
  22. package/dist/commands/label.js +6 -26
  23. package/dist/commands/label.js.map +1 -1
  24. package/dist/commands/notice.js +22 -86
  25. package/dist/commands/notice.js.map +1 -1
  26. package/dist/commands/onboarding.d.ts +79 -0
  27. package/dist/commands/onboarding.js +384 -0
  28. package/dist/commands/onboarding.js.map +1 -0
  29. package/dist/commands/order.d.ts +26 -0
  30. package/dist/commands/order.js +254 -58
  31. package/dist/commands/order.js.map +1 -1
  32. package/dist/commands/pickup.js +29 -97
  33. package/dist/commands/pickup.js.map +1 -1
  34. package/dist/commands/platform.d.ts +26 -0
  35. package/dist/commands/platform.js +254 -0
  36. package/dist/commands/platform.js.map +1 -0
  37. package/dist/commands/problem.js +57 -171
  38. package/dist/commands/problem.js.map +1 -1
  39. package/dist/commands/product.js +52 -155
  40. package/dist/commands/product.js.map +1 -1
  41. package/dist/commands/service.js +64 -186
  42. package/dist/commands/service.js.map +1 -1
  43. package/dist/commands/skill.d.ts +1 -1
  44. package/dist/commands/skill.js +1 -1
  45. package/dist/commands/track.js +20 -74
  46. package/dist/commands/track.js.map +1 -1
  47. package/dist/commands/update.js +1 -1
  48. package/dist/index.js +0 -0
  49. package/dist/services/api-client.d.ts +60 -1
  50. package/dist/services/api-client.js +316 -14
  51. package/dist/services/api-client.js.map +1 -1
  52. package/dist/types/index.d.ts +338 -1
  53. package/dist/utils/confirm.d.ts +18 -0
  54. package/dist/utils/confirm.js +50 -0
  55. package/dist/utils/confirm.js.map +1 -0
  56. package/dist/utils/run-command.d.ts +24 -0
  57. package/dist/utils/run-command.js +58 -0
  58. package/dist/utils/run-command.js.map +1 -0
  59. package/package.json +2 -1
  60. package/scripts/postinstall.js +1 -1
  61. package/skill/SKILL.md +118 -4
  62. package/skill/package.json +4 -1
  63. package/skill/reference/custody.md +193 -0
  64. package/skill/reference/index.md +34 -3
  65. package/skill/reference/onboarding.md +573 -0
  66. package/skill/reference/order.md +194 -0
  67. package/skill/reference/platform.md +317 -0
  68. package/skill/reference/update.md +1 -1
package/skill/SKILL.md CHANGED
@@ -2,20 +2,22 @@
2
2
  name: cbs-4px-merchant-cli
3
3
  description: >-
4
4
  BPortal Merchant CLI (`fmc`) — 跨境物流商家命令行工具。
5
- 支持物流轨迹查询、面单打印、订单管理、产品推荐与报价、理赔查询、
6
- 异常件管理、服务中心、财务管理、揽收管理、系统公告。
5
+ 支持物流轨迹查询、面单打印、普通下单与订单管理、产品推荐与报价、理赔查询、
6
+ 异常件管理、服务中心、财务管理、揽收管理、系统公告、平台拉单、商家入驻。
7
7
  完整命令参考: `reference/index.md` + `reference/<group>.md`。
8
8
  ---
9
9
 
10
10
  # BPortal Merchant CLI (`fmc`)
11
11
 
12
- > 跨境物流商家命令行工具,提供物流轨迹查询、面单打印、订单管理、产品推荐与报价、理赔查询、异常件管理、服务中心、财务管理、揽收管理、系统公告等功能。
12
+ > 跨境物流商家命令行工具,提供物流轨迹查询、面单打印、普通下单与订单管理、产品推荐与报价、理赔查询、异常件管理、服务中心、财务管理、揽收管理、系统公告、平台拉单、商家入驻等功能。
13
13
 
14
14
  ## 严格禁止 (NEVER DO)
15
15
 
16
16
  - 不要编造单号、API Key 等标识符,必须从用户输入或命令返回中获取
17
17
  - 不要猜测参数值,不确定时先查阅对应 reference 文件或执行 `fmc <command> --help`
18
18
  - 参数名不确定时禁止编造 flag,必须先确认
19
+ - **不要自行给写操作加 `-y`**(见下方「写操作」):下单预报、取消/拦截、推单履约、提交实名资料、开通品牌都有业务副作用,必须先向用户确认
20
+ - 不要编造身份证号、银行卡号、验证码;也不要把这些值写进总结、日志或回复里
19
21
 
20
22
  ## 核心流程(每次请求必须执行)
21
23
 
@@ -34,15 +36,20 @@ description: >-
34
36
  | 查询物流轨迹 | [`reference/track.md`](reference/track.md) | 确认参数格式 |
35
37
  | 获取面单 | [`reference/label.md`](reference/label.md) | 确认参数格式 |
36
38
  | 查看订单详情 | [`reference/order.md`](reference/order.md) | 确认参数和输出字段 |
39
+ | 下单 / 改单 / 预报 / 取消 / 拦截 | [`reference/order.md`](reference/order.md) | 含写操作,字段是嵌套 JSON,必须先读字段结构 |
37
40
  | 地址簿 | [`reference/order.md`](reference/order.md) | 确认参数格式 |
38
41
  | 国家查询 | [`reference/order.md`](reference/order.md) | 确认参数格式 |
39
42
  | 产品推荐 | [`reference/product.md`](reference/product.md) | 参数多(国家/重量/电池/邮编等),必须确认 |
40
43
  | 理赔查询 | [`reference/service.md`](reference/service.md) | 参数多(单号/时间/状态/分页),必须确认 |
41
44
  | 异常件管理 | [`reference/problem.md`](reference/problem.md) | 确认子命令和参数格式 |
45
+ | 异常托管(改带电/改产品) | [`reference/custody.md`](reference/custody.md) | 含写操作,必须确认参数和确认机制 |
42
46
  | 服务中心 | [`reference/service.md`](reference/service.md) | 确认子命令和参数格式 |
43
47
  | 财务管理 | [`reference/finance.md`](reference/finance.md) | 确认子命令和参数格式 |
44
48
  | 揽收管理 | [`reference/pickup.md`](reference/pickup.md) | 确认参数格式 |
45
49
  | 系统公告 | [`reference/notice.md`](reference/notice.md) | 确认参数格式 |
50
+ | 报关 / 商品备案 / HS 编码 | [`reference/customs.md`](reference/customs.md) | 确认子命令和参数格式 |
51
+ | 平台拉单 / 卖家账号 / 推单 | [`reference/platform.md`](reference/platform.md) | 含写操作,必须确认参数与确认机制 |
52
+ | 入驻 / 实名认证 / 开通品牌 / 合同 | [`reference/onboarding.md`](reference/onboarding.md) | 认证路径分大陆/港澳台/海外,走错就会失败 |
46
53
  | 认证相关 / 首次使用 | [`reference/auth.md`](reference/auth.md) | 了解认证方式和 API Key 获取地址 |
47
54
  | 配置管理 | [`reference/config.md`](reference/config.md) | 了解可配置项 |
48
55
  | 升级 CLI / skill | [`reference/update.md`](reference/update.md) | 了解升级流程和选项 |
@@ -59,14 +66,18 @@ description: >-
59
66
  | `config` | 配置管理:查看/设置配置项、导出 tool schema | [`reference/config.md`](reference/config.md) |
60
67
  | `track` | 物流轨迹:按单号查询物流全程轨迹、轨迹订阅管理 | [`reference/track.md`](reference/track.md) |
61
68
  | `label` | 面单打印:获取面单 PDF 链接 | [`reference/label.md`](reference/label.md) |
62
- | `order` | 订单管理:查看订单详情、订单列表、地址簿、目的国搜索 | [`reference/order.md`](reference/order.md) |
69
+ | `order` | 订单管理:下单/改单/预报/取消/拦截(**含写操作**)、订单详情、订单列表、地址簿、目的国搜索 | [`reference/order.md`](reference/order.md) |
63
70
  | `product` | 产品推荐:推荐产品、产品列表、产品详情、时效查询、搜索产品 | [`reference/product.md`](reference/product.md) |
64
71
  | `claim` | 理赔查询:按单号/时间/状态查询理赔列表(挂在 `service` 下,即 `fmc service claim ...`) | [`reference/service.md`](reference/service.md) |
65
72
  | `problem` | 异常件管理:问题件列表、AI处理建议、通知件、尾程异常、欠费件、拦截件 | [`reference/problem.md`](reference/problem.md) |
73
+ | `custody` | 异常托管:改带电产品查询、AI推荐改产品、批量提交改产品(写操作) | [`reference/custody.md`](reference/custody.md) |
66
74
  | `service` | 服务中心:售后工单、查件、投诉、服务单详情、处理记录、理赔详情 | [`reference/service.md`](reference/service.md) |
67
75
  | `finance` | 财务管理:账户余额、账单、每日费用、未出账汇总及明细、充值记录(在线及线下)、计费明细 | [`reference/finance.md`](reference/finance.md) |
68
76
  | `pickup` | 揽收管理:物料申请单查询 | [`reference/pickup.md`](reference/pickup.md) |
69
77
  | `notice` | 系统公告:公告列表、公告详情 | [`reference/notice.md`](reference/notice.md) |
78
+ | `customs` | 报关合规:申报品、商品备案列表与详情、HS 编码查询、客户备案信息 | [`reference/customs.md`](reference/customs.md) |
79
+ | `platform` | 平台拉单:卖家账号、拉取平台订单、拉单记录、平台订单列表/详情/推送(**含写操作**) | [`reference/platform.md`](reference/platform.md) |
80
+ | `onboarding` | 商家入驻:入驻进度、实名认证(个人/企业/港澳台海外)、开通品牌、合同申请与签署(**含写操作**) | [`reference/onboarding.md`](reference/onboarding.md) |
70
81
  | `update` | 升级:检查并升级 CLI 及 skill 到最新版本 | [`reference/update.md`](reference/update.md) |
71
82
 
72
83
  运行 `fmc <command> --help` 查看命令帮助。
@@ -93,6 +104,9 @@ description: >-
93
104
  用户提到"尾程异常" → `fmc problem lastmile`
94
105
  用户提到"欠费/欠费件" → `fmc problem arrear`
95
106
  用户提到"拦截/拦截件" → `fmc problem intercepted`
107
+ 用户提到"改带电/换带电产品" → `fmc custody electric`
108
+ 用户提到"改产品/换产品/推荐异常产品" → `fmc custody recommend`
109
+ 用户提到"批量处理异常/托管处理" → 参考跟单助理角色 SOP
96
110
  用户提到"工单/售后/报修" → `fmc service repair`
97
111
  用户提到"查件/查件进度" → `fmc service check`
98
112
  用户提到"投诉" → `fmc service complaint`
@@ -105,8 +119,33 @@ description: >-
105
119
  用户提到"计费明细" → `fmc finance fee-detail`
106
120
  用户提到"地址簿/地址列表" → `fmc order address-book`
107
121
  用户提到"目的国/国家查询/搜索国家" → `fmc order country`
122
+ 用户提到"下单/开单/建单/寄一个包裹" → `fmc order create --draft`(**写**,先建草稿让用户核对)
123
+ 用户提到"改单/修改订单/改地址改重量" → `fmc order edit`(**写**,仅草稿与已取消单可改)
124
+ 用户提到"提交预报/发出去/确认发货" → `fmc order forecast`(**写**)
125
+ 用户提到"取消订单/不寄了/作废" → `fmc order cancel`(**写**)
126
+ 用户提到"拦截/拦下来/别发了"(已预报) → `fmc order intercept`(**写**)
108
127
  用户提到"物料/物料申请" → `fmc pickup material`
109
128
  用户提到"公告/通知/系统公告" → `fmc notice list`
129
+ 用户提到"申报品/报关品名" → `fmc customs cargo list`
130
+ 用户提到"商品备案/备案列表" → `fmc customs commodity list`
131
+ 用户提到"HS编码/海关编码/税号" → `fmc customs hscode search`
132
+ 用户提到"客户备案/海关备案信息" → `fmc customs registration info`
133
+ 用户提到"卖家账号/店铺授权" → `fmc platform account list`
134
+ 用户提到"拉单/同步平台订单/拉亚马逊订单" → `fmc platform sync`(**写**)
135
+ 用户提到"拉单结果/同步记录/拉到多少单" → `fmc platform sync-record list`
136
+ 用户提到"平台订单/待推送订单" → `fmc platform order list`
137
+ 用户提到"推单/推送订单/交给物流" → `fmc platform order push`(**写**)
138
+ 用户提到"入驻进度/卡在哪一步/开通到哪了" → `fmc onboarding progress`
139
+ 用户提到"实名认证进度/认证状态" → `fmc onboarding auth schedule`
140
+ 用户提到"个人实名/实名认证(大陆)" → `fmc onboarding auth indiv`(**写**)
141
+ 用户提到"验证码/收到短信了" → `fmc onboarding auth code`(**写**)
142
+ 用户提到"企业实名/公司认证" → `fmc onboarding auth organ`(**写**)
143
+ 用户提到"港澳台/海外客户认证" → `fmc onboarding auth gat`(**写**)
144
+ 用户提到"对公打款/打款金额验证" → `fmc onboarding auth remit`(**写**)
145
+ 用户提到"可开通品牌/有哪些品牌" → `fmc onboarding brand list`
146
+ 用户提到"开通品牌/申请合同" → `fmc onboarding brand open`(**写**)
147
+ 用户提到"合同/我的合同" → `fmc onboarding contract list`
148
+ 用户提到"签合同/签署链接/下载合同" → `fmc onboarding contract url`
110
149
  用户提到"登录/配置key/认证" → `fmc auth login`
111
150
  用户提到"升级/更新/新版本" → `fmc update`
112
151
 
@@ -122,6 +161,9 @@ description: >-
122
161
  | "查理赔" | `service claim list` | `service claim detail` | 前者查列表,后者按理赔单号查详情 |
123
162
  | "我的订单" | `order list` | `order get` | 前者是列表,后者按单号查详情 |
124
163
  | "运费/多少钱" | `product recommend`(发货前询价) | `order get`(已发货查费用) | 发货前用 product recommend 试算;已发货查费用用 order get |
164
+ | "同步订单/拉单" | `platform sync` | `order list` | `platform` 是从电商平台拉取;`order` 是已下单的物流单 |
165
+ | "平台订单 vs 物流订单" | `platform order list`(拉回来未推送的) | `order list`(已下单的物流单) | 两者是推单前后两个阶段 |
166
+ | "实名认证" | 先 `onboarding progress` 确认客户类型,再选 `auth indiv` / `auth organ` / `auth gat` | 直接猜一个 | 大陆走 indiv/organ,港澳台与海外走 gat |
125
167
 
126
168
  ---
127
169
 
@@ -153,6 +195,46 @@ export BPORTAL_API_KEY=sk-xxxxx
153
195
 
154
196
  ---
155
197
 
198
+ ## 写操作(需用户确认)
199
+
200
+ 以下命令会真实改变商家数据,必须按「后果」列判断可逆性并取得用户确认:
201
+
202
+ | 命令 | 后果 |
203
+ | --- | --- |
204
+ | `order create`(不带 `--draft`) | 直接建单并提交预报,进入履约 |
205
+ | `order edit`(不带 `--draft`) | 改完立即提交预报 |
206
+ | `order forecast` | 草稿转预报,进入履约 |
207
+ | `order cancel` | 取消订单 |
208
+ | `order intercept` | 向承运商申请拦截 |
209
+ | `platform sync` | 提交拉单任务(异步) |
210
+ | `platform order push` | 订单进入物流履约流程 |
211
+ | `onboarding auth indiv` / `auth code` / `auth organ` / `auth gat` | 提交实名认证资料 |
212
+ | `onboarding auth remit` | 消耗打款校验重试次数 |
213
+ | `onboarding brand open` | 开通品牌并发起合同申请 |
214
+
215
+ 执行规则:
216
+
217
+ 1. **先向用户展示完整命令并得到明确确认**,不要把确认省掉
218
+ 2. 不确定参数是否正确时,先加 `--dry-run` 看请求内容(不会发送)
219
+ 3. 用户确认后才加 `-y` 执行(AI 工具非 TTY,不加 `-y` 会直接报错退出)
220
+ 4. 输出中的敏感参数(身份证号、银行卡号、验证码、手机号)已遮蔽为 `****`,但**真实值仍会发送**;不要在回复里重复这些值
221
+
222
+ ### 下单必须走草稿确认
223
+
224
+ **默认用 `order create --draft` 建草稿,不要直接提交预报。** 草稿已落库、可查、可改、可取消,是唯一能让用户核对后再发货的方式:
225
+
226
+ 1. `order create --file <json> --draft -y` → 拿到 `orderId`
227
+ 2. `order get <orderNo>` 把收件人、重量、申报品念给用户核对
228
+ 3. 有错就 `order edit --order-id <id> --file <json> --draft -y` 改,改到对
229
+ 4. 用户明确同意后 `order forecast --ids <id> -y` 提交预报
230
+ 5. `label get <orderNo>` 取面单
231
+
232
+ 只有用户明确说"直接下单/不用确认"时,才允许省掉 `--draft`。
233
+
234
+ `order create` 会对缺失字段发 `⚠` 告警(收件人、重量、申报品等)。**告警不等于可以忽略** —— 后端只校验 `productCode` 和 `destinationCountry`,其余字段缺失要到清关或派送环节才报错,届时已不可撤回。有告警就先补齐再提交。
235
+
236
+ ---
237
+
156
238
  ## Quick examples
157
239
 
158
240
  ```bash
@@ -168,6 +250,17 @@ fmc order get FPX12345678
168
250
  # 查询订单列表
169
251
  fmc order list --status IN_TRANSIT
170
252
 
253
+ # 下单(写操作)—— 先建草稿,用户核对无误后再预报
254
+ fmc order create --file ./order.json --draft -y
255
+ fmc order forecast --ids 1001 -y
256
+
257
+ # 改草稿(写操作,只传要改的字段)
258
+ fmc order edit --order-id 1001 --file ./patch.json --draft -y
259
+
260
+ # 取消 / 拦截(写操作)
261
+ fmc order cancel --ids 1001 --reason "客户取消" -y
262
+ fmc order intercept --ids 1001 -y
263
+
171
264
  # 获取推荐产品(寄美国)
172
265
  fmc product recommend --country US
173
266
 
@@ -185,6 +278,23 @@ fmc order country 美国
185
278
 
186
279
  # JSON 格式输出
187
280
  fmc track get FPX12345678 --output json
281
+
282
+ # 查询已授权的卖家账号
283
+ fmc platform account list
284
+
285
+ # 查询待推送的平台订单
286
+ fmc platform order list --status 0
287
+
288
+ # 拉单(写操作,用户确认后才加 -y)
289
+ fmc platform sync --seller-account-id 10086 \
290
+ --time-from "2026-08-01 00:00:00" --time-to "2026-08-31 23:59:59" -y
291
+
292
+ # 查询入驻进度
293
+ fmc onboarding progress
294
+
295
+ # 查询合同并获取签署链接
296
+ fmc onboarding contract list
297
+ fmc onboarding contract url CT20260801001
188
298
  ```
189
299
 
190
300
  ---
@@ -218,8 +328,12 @@ fmc config set baseUrl https://b.4px.com
218
328
  - [`reference/order.md`](reference/order.md) — 订单管理详细参数
219
329
  - [`reference/product.md`](reference/product.md) — 产品推荐与查询详细参数
220
330
  - [`reference/problem.md`](reference/problem.md) — 异常件管理详细参数
331
+ - [`reference/custody.md`](reference/custody.md) — 异常托管(改带电/改产品)详细参数
221
332
  - [`reference/service.md`](reference/service.md) — 服务中心与理赔查询详细参数
222
333
  - [`reference/finance.md`](reference/finance.md) — 财务管理详细参数
223
334
  - [`reference/pickup.md`](reference/pickup.md) — 揽收管理详细参数
224
335
  - [`reference/notice.md`](reference/notice.md) — 系统公告详细参数
336
+ - [`reference/customs.md`](reference/customs.md) — 报关、商品备案与 HS 编码详细参数
337
+ - [`reference/platform.md`](reference/platform.md) — 平台拉单与推单详细参数
338
+ - [`reference/onboarding.md`](reference/onboarding.md) — 入驻、实名认证、品牌与合同详细参数
225
339
  - [`reference/update.md`](reference/update.md) — CLI / skill 升级详细参数
@@ -1,19 +1,22 @@
1
1
  {
2
2
  "name": "cbs-4px-merchant-cli",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "BPortal Merchant CLI (fmc) skill — BPortal",
5
5
  "files": [
6
6
  "SKILL.md",
7
7
  "package.json",
8
8
  "reference/auth.md",
9
9
  "reference/config.md",
10
+ "reference/custody.md",
10
11
  "reference/customs.md",
11
12
  "reference/finance.md",
12
13
  "reference/index.md",
13
14
  "reference/label.md",
14
15
  "reference/notice.md",
16
+ "reference/onboarding.md",
15
17
  "reference/order.md",
16
18
  "reference/pickup.md",
19
+ "reference/platform.md",
17
20
  "reference/problem.md",
18
21
  "reference/product.md",
19
22
  "reference/service.md",
@@ -0,0 +1,193 @@
1
+ # `fmc custody` command
2
+
3
+ > 异常托管 — 改带电 / 改产品。配合 `fmc problem list` 使用。
4
+
5
+ ## 背景
6
+
7
+ 当订单在仓库上架时出现异常(如内置电池、磁性物品、无渠道等),商家可通过以下命令将订单
8
+ 改换为支持带电的物流产品或替换为有渠道的产品,从而让异常单恢复正常走货。
9
+
10
+ ### 异常原因编码速查
11
+
12
+ | abnormalReasonName | reasonCode | 处理流程 |
13
+ | --- | --- | --- |
14
+ | 内电 | NZDC | 改带电 → `custody electric` |
15
+ | 磁性物品 | CXW | 改带电 → `custody electric` |
16
+ | 无渠道 | NC | 改产品 → `custody recommend` |
17
+
18
+ `problem list --output json` 返回的 `abnormalProblems[].abnormalReasonName` 即为上表中文列。
19
+
20
+ ---
21
+
22
+ ## Command details
23
+
24
+ ### `fmc custody electric`
25
+
26
+ | Field | Value |
27
+ | --- | --- |
28
+ | **Name** | `custody electric` |
29
+ | **Description** | 查询指定异常单可更换的带电产品列表及差价 |
30
+ | **Usage** | `fmc custody electric <orderNo> [flags]` |
31
+
32
+ 需要 API Key 认证。
33
+
34
+ #### Arguments
35
+
36
+ | Argument | Type | Required | Description |
37
+ | --- | --- | --- | --- |
38
+ | `<orderNo>` | string | yes | 物流单号 |
39
+
40
+ 支持全局选项: `--output`, `--verbose`, `--dry-run`
41
+
42
+ #### Examples
43
+
44
+ ```bash
45
+ fmc custody electric FPX12345678
46
+ ```
47
+
48
+ ```bash
49
+ fmc custody electric FPX12345678 --output json
50
+ ```
51
+
52
+ #### Output (text mode)
53
+
54
+ ```
55
+ 可改带电产品
56
+ ──────────────────────────────────────────────────
57
+
58
+ ECO-PKG-BAT 经济小包带电版
59
+ 差价(RMB) +5.00
60
+
61
+ STD-EXP-BAT 标准快递带电版
62
+ 差价(RMB) +12.00
63
+ ```
64
+
65
+ ---
66
+
67
+ ### `fmc custody recommend`
68
+
69
+ | Field | Value |
70
+ | --- | --- |
71
+ | **Name** | `custody recommend` |
72
+ | **Description** | 获取 AI 推荐的改产品方案(含推荐产品及预估差价) |
73
+ | **Usage** | `fmc custody recommend <orderNo> --reason <code> [flags]` |
74
+
75
+ 需要 API Key 认证。
76
+
77
+ #### Arguments
78
+
79
+ | Argument | Type | Required | Description |
80
+ | --- | --- | --- | --- |
81
+ | `<orderNo>` | string | yes | 物流单号 |
82
+
83
+ #### Options
84
+
85
+ | Flag | Type | Required | Description |
86
+ | --- | --- | --- | --- |
87
+ | `--reason <code>` | string | yes | 异常原因编码,如 NC(无渠道) |
88
+
89
+ 支持全局选项: `--output`, `--verbose`, `--dry-run`
90
+
91
+ #### Examples
92
+
93
+ ```bash
94
+ fmc custody recommend FPX12345678 --reason NC
95
+ ```
96
+
97
+ ```bash
98
+ fmc custody recommend FPX12345678 --reason NC --output json
99
+ ```
100
+
101
+ #### Output (text mode)
102
+
103
+ ```
104
+ AI 推荐改产品方案
105
+ ──────────────────────────────────────────────────
106
+ 方案类型 改产品
107
+ 方案说明 该订单无渠道,推荐更换为有渠道的产品
108
+ 预估差价 +3.50
109
+
110
+ 推荐产品
111
+ ECO-PKG 4PX经济小包
112
+ STD-EXP 4PX标准快递
113
+ ```
114
+
115
+ ---
116
+
117
+ ### `fmc custody change`
118
+
119
+ | Field | Value |
120
+ | --- | --- |
121
+ | **Name** | `custody change` |
122
+ | **Description** | 批量提交改带电/改产品方案(写操作,会真实改变订单的物流产品) |
123
+ | **Usage** | `fmc custody change [flags]` |
124
+
125
+ 需要 API Key 认证。**这是写操作**,默认在终端二次确认;非交互环境必须加 `-y`。
126
+
127
+ #### Options
128
+
129
+ | Flag | Type | Required | Description |
130
+ | --- | --- | --- | --- |
131
+ | `--order-nos <nos>` | string | yes | 物流单号,多个用逗号分隔 |
132
+ | `--pk-code <code>` | string | yes | 目标产品编码 |
133
+ | `--reason <code>` | string | yes | 异常原因编码:NZDC(内电)/CXW(磁性物品)/NC(无渠道) |
134
+ | `-y, --yes` | boolean | no | 跳过确认 |
135
+
136
+ 支持全局选项: `--output`, `--verbose`, `--dry-run`
137
+
138
+ #### Examples
139
+
140
+ ```bash
141
+ # 改带电:将内电异常单改为带电产品
142
+ fmc custody change --order-nos FPX12345678 --pk-code ECO-PKG-BAT --reason NZDC
143
+ ```
144
+
145
+ ```bash
146
+ # 批量改产品:将多条无渠道异常单改为有渠道产品
147
+ fmc custody change --order-nos FPX001,FPX002,FPX003 --pk-code ECO-PKG --reason NC -y
148
+ ```
149
+
150
+ ```bash
151
+ # 先 dry-run 查看将发送的请求
152
+ fmc custody change --order-nos FPX12345678 --pk-code ECO-PKG-BAT --reason NZDC --dry-run
153
+ ```
154
+
155
+ #### Output (text mode)
156
+
157
+ ```
158
+ 改带电批量执行结果
159
+ ──────────────────────────────────────────────────
160
+ 总计 3 条
161
+ 成功 2
162
+ 失败 1
163
+
164
+ 失败明细
165
+ FPX003 pkCode[ECO-PKG-BAT]不在该异常单可选的改带电产品列表中
166
+ ```
167
+
168
+ ---
169
+
170
+ ## 典型工作流
171
+
172
+ ### A. 内电/磁性物品 → 改带电
173
+
174
+ 1. `fmc problem list --abnormal-status unresolved --output json`
175
+ → 从结果中找到 `abnormalReasonName` 为 "内电" 或 "磁性物品" 的订单
176
+ 2. `fmc custody electric <orderNo>` → 查看可改的带电产品及差价
177
+ 3. 选择合适的产品后:`fmc custody change --order-nos <no> --pk-code <code> --reason NZDC`
178
+
179
+ ### B. 无渠道 → 改产品
180
+
181
+ 1. `fmc problem list --abnormal-status unresolved --output json`
182
+ → 从结果中找到 `abnormalReasonName` 为 "无渠道" 的订单
183
+ 2. `fmc custody recommend <orderNo> --reason NC` → 查看 AI 推荐产品
184
+ 3. 选择合适的产品后:`fmc custody change --order-nos <no> --pk-code <code> --reason NC`
185
+
186
+ ### C. 批量托管处理
187
+
188
+ 1. `fmc problem list --abnormal-status unresolved --size 100 --output json`
189
+ 2. 按 `abnormalReasonName` 分类订单
190
+ 3. 内电/磁性类 → 逐单 `custody electric` 查产品 → 汇总后一次 `custody change`
191
+ 4. 无渠道类 → 逐单 `custody recommend` 查推荐 → 汇总后一次 `custody change`
192
+ 5. 首次执行前向用户确认,确认后加 `-y` 批量执行
193
+ 6. 执行完毕后向用户报告成功/失败/差价
@@ -21,6 +21,11 @@ Command **details** are in sibling `<group>.md` files in this directory.
21
21
  | `fmc order list` | 查询订单列表 | [order.md](order.md) |
22
22
  | `fmc order address-book` | 查询地址簿列表 | [order.md](order.md) |
23
23
  | `fmc order country` | 模糊搜索目的国家 | [order.md](order.md) |
24
+ | `fmc order create` | 创建物流订单(写) | [order.md](order.md) |
25
+ | `fmc order edit` | 编辑草稿/已取消订单(写) | [order.md](order.md) |
26
+ | `fmc order forecast` | 草稿提交为预报(写) | [order.md](order.md) |
27
+ | `fmc order cancel` | 取消订单(写) | [order.md](order.md) |
28
+ | `fmc order intercept` | 申请拦截订单(写) | [order.md](order.md) |
24
29
  | `fmc product recommend` | 获取推荐物流产品及报价 | [product.md](product.md) |
25
30
  | `fmc product list` | 查询可用产品列表 | [product.md](product.md) |
26
31
  | `fmc product detail` | 查询产品详情 | [product.md](product.md) |
@@ -33,6 +38,9 @@ Command **details** are in sibling `<group>.md` files in this directory.
33
38
  | `fmc problem lastmile list` | 查询尾程异常列表 | [problem.md](problem.md) |
34
39
  | `fmc problem arrear list` | 查询欠费件列表 | [problem.md](problem.md) |
35
40
  | `fmc problem intercepted list` | 查询拦截件列表 | [problem.md](problem.md) |
41
+ | `fmc custody electric` | 查询可改带电产品列表 | [custody.md](custody.md) |
42
+ | `fmc custody recommend` | 获取 AI 推荐改产品方案 | [custody.md](custody.md) |
43
+ | `fmc custody change` | 批量提交改带电/改产品(写) | [custody.md](custody.md) |
36
44
  | `fmc service repair list` | 查询售后工单列表 | [service.md](service.md) |
37
45
  | `fmc service check list` | 查询查件列表 | [service.md](service.md) |
38
46
  | `fmc service complaint list` | 查询投诉列表 | [service.md](service.md) |
@@ -62,6 +70,24 @@ Command **details** are in sibling `<group>.md` files in this directory.
62
70
  | `fmc customs commodity detail` | 查询商品备案详情 | [customs.md](customs.md) |
63
71
  | `fmc customs hscode search` | 查询海关编码 | [customs.md](customs.md) |
64
72
  | `fmc customs registration info` | 查询客户备案信息 | [customs.md](customs.md) |
73
+ | `fmc platform account list` | 查询已授权的卖家账号列表 | [platform.md](platform.md) |
74
+ | `fmc platform sync` | 拉取平台订单(写) | [platform.md](platform.md) |
75
+ | `fmc platform sync-record list` | 查询拉单记录 | [platform.md](platform.md) |
76
+ | `fmc platform order list` | 查询平台订单列表 | [platform.md](platform.md) |
77
+ | `fmc platform order detail` | 查询平台订单详情 | [platform.md](platform.md) |
78
+ | `fmc platform order push` | 推送平台订单履约(写) | [platform.md](platform.md) |
79
+ | `fmc onboarding progress` | 查询入驻进度 | [onboarding.md](onboarding.md) |
80
+ | `fmc onboarding customer-type` | 查询可选客户类型 | [onboarding.md](onboarding.md) |
81
+ | `fmc onboarding auth schedule` | 查询实名认证进度 | [onboarding.md](onboarding.md) |
82
+ | `fmc onboarding auth indiv` | 发起个人实名认证(写) | [onboarding.md](onboarding.md) |
83
+ | `fmc onboarding auth code` | 提交验证码完成实名认证(写) | [onboarding.md](onboarding.md) |
84
+ | `fmc onboarding auth organ` | 发起企业实名认证(写) | [onboarding.md](onboarding.md) |
85
+ | `fmc onboarding auth gat` | 提交港澳台/海外实名资料(写) | [onboarding.md](onboarding.md) |
86
+ | `fmc onboarding auth remit` | 校验对公打款金额(写) | [onboarding.md](onboarding.md) |
87
+ | `fmc onboarding brand list` | 查询可开通品牌 | [onboarding.md](onboarding.md) |
88
+ | `fmc onboarding brand open` | 开通品牌并申请合同(写) | [onboarding.md](onboarding.md) |
89
+ | `fmc onboarding contract list` | 查询合同列表 | [onboarding.md](onboarding.md) |
90
+ | `fmc onboarding contract url` | 获取合同签署/下载链接 | [onboarding.md](onboarding.md) |
65
91
  | `fmc update` | 升级 CLI 及对应 skill 到最新版本 | [update.md](update.md) |
66
92
  | `fmc skill install` | 把当前版本的 skill 同步到本机 AI 工具 | [update.md](update.md) |
67
93
  | `fmc skill status` | 查看各 AI 工具的 skill 安装与版本状态 | [update.md](update.md) |
@@ -75,14 +101,17 @@ Command **details** are in sibling `<group>.md` files in this directory.
75
101
  | `config` | `set`, `list`, `export-schema` | [config.md](config.md) |
76
102
  | `track` | `get`, `sub order`, `sub product` | [track.md](track.md) |
77
103
  | `label` | `get` | [label.md](label.md) |
78
- | `order` | `get`, `list`, `address-book`, `country` | [order.md](order.md) |
104
+ | `order` | `get`, `list`, `address-book`, `country`, `create`, `edit`, `forecast`, `cancel`, `intercept` | [order.md](order.md) |
79
105
  | `product` | `recommend`, `list`, `detail`, `eta`, `search` | [product.md](product.md) |
80
106
  | `problem` | `list`, `suggest`, `notify list`, `notify type`, `lastmile list`, `arrear list`, `intercepted list` | [problem.md](problem.md) |
107
+ | `custody` | `electric`, `recommend`, `change` | [custody.md](custody.md) |
81
108
  | `service` | `repair list`, `check list`, `complaint list`, `detail`, `record`, `claim list`, `claim detail`, `claim reason` | [service.md](service.md) |
82
109
  | `finance` | `balance`, `bill list`, `daily-fee list`, `unbilled list`, `recharge list`, `fee detail`, `frozen list` | [finance.md](finance.md) |
83
110
  | `pickup` | `material list`, `material detail`, `material quota`, `address list` | [pickup.md](pickup.md) |
84
111
  | `notice` | `list`, `detail`, `message list`, `message detail`, `message unread` | [notice.md](notice.md) |
85
112
  | `customs` | `cargo list`, `commodity list`, `commodity detail`, `hscode search`, `registration info` | [customs.md](customs.md) |
113
+ | `platform` | `account list`, `sync`, `sync-record list`, `order list`, `order detail`, `order push` | [platform.md](platform.md) |
114
+ | `onboarding` | `progress`, `customer-type`, `auth schedule`, `auth indiv`, `auth code`, `auth organ`, `auth gat`, `auth remit`, `brand list`, `brand open`, `contract list`, `contract url` | [onboarding.md](onboarding.md) |
86
115
  | `update` | (no subcommand) | [update.md](update.md) |
87
116
  | `skill` | `install`, `status`, `uninstall` | [update.md](update.md) |
88
117
 
@@ -100,8 +129,10 @@ Command **details** are in sibling `<group>.md` files in this directory.
100
129
 
101
130
  - `track get` 命令无需认证即可使用。
102
131
  - 其余大部分命令需要先配置 API Key:`fmc auth login --api-key <key>`。Key 是控制台生成的原串(常见前缀 `SK_` 或 `sk-`),原样传入,不要校验或改写。
103
- - 新增的 `problem`、`service`、`finance`、`pickup`、`notice`、`customs` 模块均需要 API Key 认证。`order` 模块下的 `address-book`、`country` 子命令也需要认证。
132
+ - 新增的 `problem`、`service`、`finance`、`pickup`、`notice`、`customs`、`platform`、`onboarding` 模块均需要 API Key 认证。`order` 模块下的 `address-book`、`country` 子命令也需要认证。
133
+ - **写操作**(`platform sync`、`platform order push`、`onboarding auth *`、`onboarding brand open`)默认在终端二次确认;非交互环境(管道、CI、AI Agent)必须显式加 `-y`,否则命令会拒绝执行并以退出码 1 结束。先用 `--dry-run` 可查看将发送的请求。
134
+ - 实名认证会提交身份证号、银行卡号、验证码、手机号等敏感信息。这些参数在 `--verbose` / `--dry-run` 的**打印**里被遮蔽为 `****`,但真实值仍会随请求发送。
104
135
  - 配置文件位于 `~/.bportal/config.json`;升级状态缓存位于 `~/.bportal/update-state.json`。
105
136
  - 当检测到新版本可用时,stderr 会输出 `{"_notice":{"type":"update",...}}`;设置环境变量 `BPORTAL_NO_UPDATE_NOTIFIER=1` 可关闭。
106
137
  - 当已安装的 skill 版本与 CLI 不一致时,stderr 会输出 `{"_notice":{"type":"skills",...}}`;执行 `fmc skill install` 即可同步。
107
- - `npm install -g cbs-4px-merchant-cli` **不保证**会自动注册 skill(npm 11 默认拦截安装期脚本,且仍退出 0),安装后应显式执行 `fmc skill install`。
138
+ - `npm install -g cbs-4px-merchant-cli` **不保证**会自动注册 skill(npm 12 默认拦截安装期脚本,且仍退出 0),安装后应显式执行 `fmc skill install`。