siluzan-tso-cli 1.0.0-beta.39 → 1.0.0-beta.40

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/README.md CHANGED
@@ -20,7 +20,7 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
20
20
  siluzan-tso init --force # 强制覆盖已存在文件
21
21
  ```
22
22
 
23
- > **注意**:当前为测试版(1.0.0-beta.39),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
23
+ > **注意**:当前为测试版(1.0.0-beta.40),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
24
24
 
25
25
  | 助手 | 建议 `--ai` |
26
26
  |------|-------------|
package/dist/index.js CHANGED
@@ -911,6 +911,13 @@ function deriveWebUrl(apiBaseUrl) {
911
911
  return "https://www.siluzan.com";
912
912
  }
913
913
  }
914
+ var TSO_UMI_ROUTE_PREFIX = "/v3umijs/tso";
915
+ function buildTsoPageWebUrl(webUrl, tsoSubRoute) {
916
+ const path10 = tsoSubRoute.replace(/^\/+/, "");
917
+ const umiPath = `${TSO_UMI_ROUTE_PREFIX}/${path10}`;
918
+ const q = new URLSearchParams({ tso: umiPath });
919
+ return `${webUrl.replace(/\/+$/, "")}/v3/foreign_trade/tso/${path10}?${q.toString()}`;
920
+ }
914
921
  function cmdConfigShow() {
915
922
  const shared = readSharedConfig();
916
923
  const authToken = shared.authToken;
@@ -2436,7 +2443,7 @@ async function runReportList(opts) {
2436
2443
  const pathByType = { Hourly: "hour" };
2437
2444
  const itemsWithUrl = items.map((item) => ({
2438
2445
  ...item,
2439
- viewUrl: item.reportReady ? `${webUrl}/media-report/${pathByType[item.reportType ?? ""] ?? "publish"}/${item.entityId}?culture=zh-CN` : ""
2446
+ viewUrl: `${webUrl}/media-report/${pathByType[item.reportType ?? ""] ?? "publish"}/${item.entityId}?culture=zh-CN`
2440
2447
  }));
2441
2448
  const page = opts.page ?? 1;
2442
2449
  const pageSize = opts.pageSize ?? 20;
@@ -8705,6 +8712,12 @@ import * as fs7 from "fs";
8705
8712
  import * as path8 from "path";
8706
8713
  import * as readline from "readline/promises";
8707
8714
  import { stdin as stdinStream, stdout as stdoutStream } from "process";
8715
+ function logAccountOpeningHistoryWebUrl(apiBaseUrl) {
8716
+ const url = buildTsoPageWebUrl(deriveWebUrl(apiBaseUrl), "accountOpeningHistory");
8717
+ console.log(` \u5982\u9700\u5728\u7F51\u9875\u67E5\u770B\u6216\u786E\u8BA4\uFF0C\u8BF7\u6253\u5F00\u300C\u5F00\u6237\u8BB0\u5F55\u300D\uFF1A
8718
+ ${url}
8719
+ `);
8720
+ }
8708
8721
  async function runListAdvertiserGroups(opts) {
8709
8722
  const config = loadConfig(opts.token);
8710
8723
  let data;
@@ -8939,6 +8952,7 @@ async function runOpenAccountYandex(opts) {
8939
8952
  opts.verbose
8940
8953
  );
8941
8954
  console.log("\n\u2705 Yandex \u5F00\u6237\u7533\u8BF7\u5DF2\u63D0\u4EA4\u6210\u529F\uFF0C\u8BF7\u5728\u300C\u5F00\u6237\u8BB0\u5F55\u300D\u9875\u9762\u67E5\u770B\u5BA1\u6838\u72B6\u6001\u3002\n");
8955
+ logAccountOpeningHistoryWebUrl(config.apiBaseUrl);
8942
8956
  if (opts.verbose && res != null) {
8943
8957
  console.log("\u54CD\u5E94\uFF1A", JSON.stringify(res, null, 2));
8944
8958
  }
@@ -9064,6 +9078,7 @@ async function runOpenAccountBing(opts) {
9064
9078
  opts.verbose
9065
9079
  );
9066
9080
  console.log("\n\u2705 Bing \u5F00\u6237\u7533\u8BF7\u5DF2\u63D0\u4EA4\u6210\u529F\uFF0C\u8BF7\u5728\u300C\u5F00\u6237\u8BB0\u5F55\u300D\u9875\u9762\u67E5\u770B\u5BA1\u6838\u72B6\u6001\u3002\n");
9081
+ logAccountOpeningHistoryWebUrl(config.apiBaseUrl);
9067
9082
  } catch (err) {
9068
9083
  console.error(`
9069
9084
  \u274C \u63D0\u4EA4\u5931\u8D25\uFF1A${err instanceof Error ? err.message : String(err)}
@@ -9151,6 +9166,7 @@ async function runOpenAccountKwai(opts) {
9151
9166
  opts.verbose
9152
9167
  );
9153
9168
  console.log("\n\u2705 Kwai \u5F00\u6237\u7533\u8BF7\u5DF2\u63D0\u4EA4\u6210\u529F\uFF0C\u8BF7\u5728\u300C\u5F00\u6237\u8BB0\u5F55\u300D\u9875\u9762\u67E5\u770B\u5BA1\u6838\u72B6\u6001\u3002\n");
9169
+ logAccountOpeningHistoryWebUrl(config.apiBaseUrl);
9154
9170
  } catch (err) {
9155
9171
  console.error(`
9156
9172
  \u274C \u63D0\u4EA4\u5931\u8D25\uFF1A${err instanceof Error ? err.message : String(err)}
@@ -9408,6 +9424,7 @@ async function runOpenAccountGoogle(opts) {
9408
9424
  \u2705 Google \u5F00\u6237\u7533\u8BF7\u5DF2\u63D0\u4EA4\uFF08\u5171 ${counts} \u4E2A\uFF09\uFF0C\u9080\u8BF7\u90AE\u4EF6\u5C06\u53D1\u9001\u5230 ${inviteEmail}\u3002
9409
9425
  \u8BF7\u5728\u300C\u5F00\u6237\u8BB0\u5F55\u300D\u9875\u9762\u67E5\u770B\u5BA1\u6838\u72B6\u6001\u3002
9410
9426
  `);
9427
+ logAccountOpeningHistoryWebUrl(config.apiBaseUrl);
9411
9428
  } catch (err) {
9412
9429
  console.error(`
9413
9430
  \u274C \u63D0\u4EA4\u5931\u8D25\uFF1A${err instanceof Error ? err.message : String(err)}
@@ -9537,6 +9554,7 @@ async function runOpenAccountTikTok(opts) {
9537
9554
  \u2705 TikTok \u5F00\u6237\u7533\u8BF7\u5DF2\u63D0\u4EA4\uFF08\u5171 ${counts} \u4E2A\uFF09\u3002
9538
9555
  \u8BF7\u5728\u300C\u5F00\u6237\u8BB0\u5F55\u300D\u9875\u9762\u67E5\u770B\u5BA1\u6838\u72B6\u6001\u3002
9539
9556
  `);
9557
+ logAccountOpeningHistoryWebUrl(config.apiBaseUrl);
9540
9558
  } catch (err) {
9541
9559
  console.error(`
9542
9560
  \u274C \u63D0\u4EA4\u5931\u8D25\uFF1A${err instanceof Error ? err.message : String(err)}
@@ -101,6 +101,7 @@ description: >-
101
101
  | 查广告主组(TikTok 等取 magKey) | `siluzan-tso open-account list-groups` |
102
102
  | Google 开户(脚本) | `siluzan-tso open-account google --company "…" --promotion-link "…" --promotion-type b2c ...`(**无需 magKey**) |
103
103
  | Google 开户时区列表 | `siluzan-tso open-account google-timezones`(可加 `--keyword`) |
104
+ | 开户记录(网页,提交开户后确认/查进度;**勿用** `manageAccounts`) | `config show` 取 `webUrl` → `{webUrl}/v3/foreign_trade/tso/accountOpeningHistory` |
104
105
  | TikTok 开户时区列表 | `siluzan-tso open-account tiktok-timezones`(可加 `--keyword`) |
105
106
  | TikTok 行业列表 | `siluzan-tso open-account tiktok-industries`(两级结构,传叶子节点 ID) |
106
107
  | TikTok 注册地列表 | `siluzan-tso open-account tiktok-areas`(`--registered-area` 的合法值) |
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.0.0-beta.39",
4
- "publishedAt": 1774597461344
3
+ "version": "1.0.0-beta.40",
4
+ "publishedAt": 1774602245330
5
5
  }
@@ -90,6 +90,10 @@ siluzan-tso open-account google-wizard
90
90
  # 轮询审核进度
91
91
  siluzan-tso account-history -m Google
92
92
 
93
+ # 提交后需在网页查看/确认:开户记录(勿用 manageAccounts)
94
+ # {webUrl}/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory
95
+ # (非交互 `open-account google` 成功时 CLI 也会打印该链接)
96
+
93
97
  # 审核通过后,充值激活(必须网页完成)
94
98
  # siluzan-tso config show 取 webUrl,打开:{webUrl}/v3/foreign_trade/tso/recharge
95
99
  # 美元账户最低约 100 USD,人民币账户约 700 CNY
@@ -9,6 +9,8 @@
9
9
 
10
10
  对应页面:`/accountOpeningHistory`
11
11
 
12
+ > **网页完整链接(微前端)**:`{webUrl}/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`(与 CLI `account-history` 同源数据)。开户提交后若需用户在网页确认,应打开此「开户记录」页,**不要**误链到「媒体账户」`manageAccounts`。
13
+
12
14
  ### 业务背景
13
15
 
14
16
  用户在丝路赞上还没有某媒体账户时,需要提交开户申请并跟踪审核进度。**各媒体所需资料和命令参数完全不同,不要混用。**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-tso-cli",
3
- "version": "1.0.0-beta.39",
3
+ "version": "1.0.0-beta.40",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "type": "module",
6
6
  "bin": {