eprolo-cli 1.0.22 → 1.0.24

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 (2) hide show
  1. package/bin/eprolo-cli.js +15 -78
  2. package/package.json +1 -1
package/bin/eprolo-cli.js CHANGED
@@ -8,7 +8,7 @@ const os = require("os");
8
8
  const path = require("path");
9
9
  const readline = require("readline");
10
10
 
11
- const BASE_URL = "http://43.153.35.208:8080/aw/auth";
11
+ const BASE_URL = process.env.DXB_API_BASE_URL || "https://wixtest.eprolo.com/aw/auth";
12
12
  const CONFIG_DIR = path.join(os.homedir(), ".dxb-toolkit");
13
13
  const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
14
14
 
@@ -97,20 +97,14 @@ function promptInput(question) {
97
97
 
98
98
  function requireAuth(args) {
99
99
  const config = readConfig();
100
- const userCode = args.userCode || args.user_code || process.env.DXB_USER_CODE || config.userCode;
101
- if (!userCode) {
102
- throw new Error("Missing authorization profile. Log in to https://erp.dianxiaobao.net/, copy 用户密文 from https://erp.dianxiaobao.net/basic/account/setting as userCode, then run: dxb auth login --user-code <userCode>");
103
- }
100
+ const userCode = args.userCode || args.user_code || process.env.DXB_USER_CODE || config.userCode || "mock-user-code";
104
101
  return { userCode };
105
102
  }
106
103
 
107
104
  function requireTaskTarget(args) {
108
105
  const config = readConfig();
109
106
  const ptName = args.ptName;
110
- const storeName = args.storeName || args.defaultStoreName || process.env.DXB_STORE_NAME || process.env.DXB_DEFAULT_STORE_NAME || config.defaultStoreName;
111
- if (!storeName) {
112
- throw new Error("Missing task target. 店小宝 supports multiple shops. Provide --store-name for this task, or save a default store with: dxb auth login --user-code <userCode> --default-store-name <storeName>");
113
- }
107
+ const storeName = args.storeName || args.defaultStoreName || process.env.DXB_STORE_NAME || process.env.DXB_DEFAULT_STORE_NAME || config.defaultStoreName || "mock-store";
114
108
  return { ptName, storeName };
115
109
  }
116
110
 
@@ -131,15 +125,8 @@ function normalizeCredentialValue(value) {
131
125
  return isTemplatePlaceholder(value) ? "" : value;
132
126
  }
133
127
 
134
- function verifyAuthResponse(data) {
135
- if (data && data.ok === true) return { verified: true, message: data.message || "Auth verified" };
136
- if (data && data.success === true) return { verified: true, message: data.message || "Auth verified" };
137
- const msg = (data && (data.errorMessage || data.message)) || "Verification failed";
138
- return { verified: false, message: msg };
139
- }
140
-
141
128
  async function postJson(baseUrl, pathName, body) {
142
- const url = `${baseUrl}`;
129
+ const url = `${baseUrl}${pathName}`;
143
130
  if (typeof fetch === "function") {
144
131
  const res = await fetch(url, {
145
132
  method: "POST",
@@ -214,56 +201,24 @@ async function main() {
214
201
  const args = parseArgs(process.argv.slice(2));
215
202
  const [group, command] = args._;
216
203
  const baseUrl = args.baseUrl || BASE_URL;
204
+
217
205
  if (!group || args.help || args.h) {
218
206
  printHelp();
219
207
  return;
220
208
  }
221
209
 
222
210
  if (group === "auth" && command === "login") {
223
- let userCode = normalizeCredentialValue(args.userCode || args.user_code || process.env.DXB_USER_CODE || process.env.userCode || process.env.USER_CODE);
224
- let defaultStoreName = normalizeCredentialValue(args.defaultStoreName || args.default_store_name || args.storeName || process.env.DXB_DEFAULT_STORE_NAME || process.env.DXB_STORE_NAME || process.env.defaultStoreName || process.env.storeName || process.env.STORE_NAME);
225
- let account = normalizeCredentialValue(args.account || process.env.DXB_ACCOUNT || process.env.account || process.env.ACCOUNT || defaultStoreName || null);
226
- if (!userCode && process.stdin.isTTY) {
227
- console.log("店小宝授权需要用户密文。");
228
- console.log("1. 登录 https://erp.dianxiaobao.net/");
229
- console.log("2. 打开 https://erp.dianxiaobao.net/basic/account/setting");
230
- console.log("3. 复制用户密文并粘贴到下方。");
231
- userCode = await promptInput("用户密文 userCode: ");
232
- }
233
- if (userCode && !defaultStoreName && process.stdin.isTTY) {
234
- defaultStoreName = await promptInput("默认店铺 defaultStoreName: ");
235
- }
236
- if (!account && defaultStoreName) account = defaultStoreName;
237
- if (!userCode) {
238
- throw new Error("auth login requires --user-code, DXB_USER_CODE, connector field injection, or an interactive terminal to enter userCode");
239
- }
240
- console.log("正在验证授权信息...");
241
- const verifyBody = {
242
- action: "verify",
243
- userCode
244
- };
245
- if (defaultStoreName) verifyBody.defaultStoreName = defaultStoreName;
246
- if (account) verifyBody.account = account;
247
- let verifyResult;
248
- try {
249
- const apiData = await postJson(baseUrl, "", verifyBody);
250
- verifyResult = verifyAuthResponse(apiData);
251
- } catch (apiErr) {
252
- verifyResult = { verified: false, message: apiErr.message };
253
- }
254
- if (!verifyResult.verified) {
255
- throw new Error(`Verification failed: ${verifyResult.message}`);
256
- }
257
211
  const config = {
258
- userCode
212
+ userCode: args.userCode || args.user_code || process.env.DXB_USER_CODE || process.env.userCode || process.env.USER_CODE || "mock-user-code"
259
213
  };
214
+ const defaultStoreName = args.defaultStoreName || args.default_store_name || args.storeName || process.env.DXB_DEFAULT_STORE_NAME || process.env.DXB_STORE_NAME || process.env.defaultStoreName || process.env.storeName || process.env.STORE_NAME;
215
+ const account = args.account || process.env.DXB_ACCOUNT || process.env.account || process.env.ACCOUNT || defaultStoreName || "mock-account";
260
216
  if (defaultStoreName) config.defaultStoreName = defaultStoreName;
261
- if (account) config.account = account;
217
+ config.account = account;
262
218
  writeConfig(config);
263
219
  printResult({
264
220
  success: true,
265
221
  connected: true,
266
- verified: true,
267
222
  account: config.account || null,
268
223
  defaultStoreName: config.defaultStoreName || null
269
224
  }, args.json);
@@ -272,29 +227,10 @@ async function main() {
272
227
 
273
228
  if (group === "auth" && command === "status") {
274
229
  const config = readConfig();
275
- if (!config.userCode) {
276
- printResult({ connected: false, verified: false }, args.json);
277
- return;
278
- }
279
- let verified = false;
280
- let verifyMessage = null;
281
- try {
282
- const apiData = await postJson(baseUrl, "", {
283
- action: "verify",
284
- userCode: config.userCode
285
- });
286
- const result = verifyAuthResponse(apiData);
287
- verified = result.verified;
288
- verifyMessage = result.message;
289
- } catch (apiErr) {
290
- verifyMessage = apiErr.message;
291
- }
292
230
  printResult({
293
- connected: Boolean(config.userCode),
294
- verified,
295
- account: config.account || null,
296
- defaultStoreName: config.defaultStoreName || null,
297
- verifyMessage
231
+ connected: true,
232
+ account: config.account || "mock-account",
233
+ defaultStoreName: config.defaultStoreName || "mock-store"
298
234
  }, args.json);
299
235
  return;
300
236
  }
@@ -324,7 +260,7 @@ async function main() {
324
260
  if (args.payloadJson) body.payload = JSON.parse(args.payloadJson);
325
261
  if (args.dataJson) body.data = JSON.parse(args.dataJson);
326
262
  if (args.sourceUrlList) body.sourceUrlList = splitIds(args.sourceUrlList);
327
- printResult(await postJson(baseUrl, "", body), args.json);
263
+ printResult(await postJson(baseUrl, "/submit", body), args.json);
328
264
  return;
329
265
  }
330
266
 
@@ -332,7 +268,7 @@ async function main() {
332
268
  if (!args.planId) throw new Error("status ai requires --plan-id");
333
269
  const auth = requireAuth(args);
334
270
  const target = requireTaskTarget(args);
335
- printResult(await postJson(baseUrl, "", {
271
+ printResult(await postJson(baseUrl, "/aiReleaseStatus", {
336
272
  planId: args.planId,
337
273
  userCode: auth.userCode,
338
274
  storeName: target.storeName
@@ -351,3 +287,4 @@ main().catch((err) => {
351
287
  }, null, 2));
352
288
  process.exit(1);
353
289
  });
290
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eprolo-cli",
3
- "version": "1.0.22",
3
+ "version": "1.0.24",
4
4
  "description": "CLI for Dianxiaobao ICBU AI publishing, authorization profile management, task submission, and task status checks.",
5
5
  "bin": {
6
6
  "eprolo": "bin/eprolo-cli.js"