bfi-cli 0.1.65 → 0.1.68

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/dist/cli.mjs +33 -11
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -8216,7 +8216,8 @@ async function runYmc(args, globalOpts) {
8216
8216
  }
8217
8217
  emit(await api.call("trace", {
8218
8218
  trace_id: id,
8219
- ...requireEnv(rest)
8219
+ ...requireEnv(rest),
8220
+ ...opt(rest, "--ts") ? { ts: Number(opt(rest, "--ts")) } : {}
8220
8221
  }), jsonMode, (data) => {
8221
8222
  const d = data;
8222
8223
  const lines = [];
@@ -8254,7 +8255,8 @@ async function runYmc(args, globalOpts) {
8254
8255
  }
8255
8256
  emit(await api.call("chain", {
8256
8257
  trace_id: id,
8257
- ...requireEnv(rest)
8258
+ ...requireEnv(rest),
8259
+ ...opt(rest, "--ts") ? { ts: Number(opt(rest, "--ts")) } : {}
8258
8260
  }), jsonMode, (data) => {
8259
8261
  const d = data;
8260
8262
  return `✓ 链路查询: ts=${d.ts}(${d.ts_source})chain=${d.warning_chain ? "有" : "无"}`;
@@ -8277,7 +8279,21 @@ async function runYmc(args, globalOpts) {
8277
8279
  ...opt(rest, "--days") ? { days: Number(opt(rest, "--days")) } : {},
8278
8280
  ...opt(rest, "--line") ? { line: Number(opt(rest, "--line")) } : {}
8279
8281
  };
8280
- emit(await api.call("sls/raw", body), jsonMode, rowsSummary("SLS 原始查询"));
8282
+ emit(await api.call("sls/raw", body), jsonMode, (data) => {
8283
+ const d = data;
8284
+ const rows = Array.isArray(d) ? d : d.rows ?? d.data ?? [];
8285
+ const n = rows.length;
8286
+ if (!n) return "✓ SLS 原始查询: 0 行";
8287
+ const times = rows.map((x) => Number(x.__time__)).filter(Boolean);
8288
+ const fmt = (t) => (/* @__PURE__ */ new Date(t * 1e3)).toLocaleString("zh-CN", { hour12: false });
8289
+ const span = times.length ? `时间范围 ${fmt(Math.min(...times))} ~ ${fmt(Math.max(...times))}` : "";
8290
+ const keys = Object.keys(rows[0]).slice(0, 8).join(",");
8291
+ return [
8292
+ `✓ SLS 原始查询: ${n} 行 ${span}`,
8293
+ `字段: ${keys}`,
8294
+ `样本: ${JSON.stringify(rows[0]).slice(0, 200)}`
8295
+ ].join("\n");
8296
+ });
8281
8297
  break;
8282
8298
  }
8283
8299
  case "sls-grep": {
@@ -8307,7 +8323,8 @@ async function runYmc(args, globalOpts) {
8307
8323
  }
8308
8324
  emit(await api.call("sls/logs", {
8309
8325
  trace_id: id,
8310
- ...requireEnv(rest)
8326
+ ...requireEnv(rest),
8327
+ ...opt(rest, "--ts") ? { ts: Number(opt(rest, "--ts")) } : {}
8311
8328
  }), jsonMode, rowsSummary("SLS 日志"));
8312
8329
  break;
8313
8330
  }
@@ -8394,17 +8411,20 @@ async function runYmc(args, globalOpts) {
8394
8411
  case "url-stats": {
8395
8412
  const uri = positionals(rest)[0];
8396
8413
  if (!uri) {
8397
- console.error("用法:bfi ymc url-stats </uri> -e <env> [-t <time> | --start-time <t> [--end-time <t>]]");
8414
+ console.error("用法:bfi ymc url-stats </uri> -e <env> [-t <time>] [--app <service_name>]");
8398
8415
  process.exit(1);
8399
8416
  }
8400
- emit(await api.call("kibana/stats", {
8417
+ const body = {
8401
8418
  uri,
8402
8419
  ...requireEnv(rest),
8403
8420
  ...timeOpts(rest)
8404
- }), jsonMode, (data) => {
8421
+ };
8422
+ const app = opt(rest, "--app");
8423
+ if (app) body.filters = { service_name: app };
8424
+ emit(await api.call("kibana/stats", body), jsonMode, (data) => {
8405
8425
  const d = data;
8406
8426
  const a = d.aggs;
8407
- return `✓ URL 统计: QPS=${a.qps} avg=${a.avg_rt?.value ?? "-"} 慢请求Top=${Array.isArray(d.slow_top) ? d.slow_top.length : 0}`;
8427
+ return `✓ URL 统计${app ? ` [${app}]` : "(⚠️ 未限定服务,共享路径为全平台混合)"}: QPS=${a.qps} avg=${a.avg_rt?.value ?? "-"} 慢请求Top=${Array.isArray(d.slow_top) ? d.slow_top.length : 0}`;
8408
8428
  });
8409
8429
  break;
8410
8430
  }
@@ -8416,12 +8436,14 @@ async function runYmc(args, globalOpts) {
8416
8436
  };
8417
8437
  const id = opt(rest, "--trace-id");
8418
8438
  const uri = opt(rest, "--uri");
8439
+ const app = opt(rest, "--app");
8440
+ if (app) body.filters = { service_name: app };
8419
8441
  if (id) body.trace_id = id;
8420
8442
  else if (uri) {
8421
8443
  body.uri = uri;
8422
8444
  body.fuzzy = !flag(rest, "--exact");
8423
8445
  } else {
8424
- console.error("用法:bfi ymc ingress --trace-id <id> | --uri </path> -e <env> [-t time]");
8446
+ console.error("用法:bfi ymc ingress --trace-id <id> | --uri </path> [-app <service_name>] -e <env> [-t time]");
8425
8447
  process.exit(1);
8426
8448
  }
8427
8449
  emit(await api.call("kibana/search", body), jsonMode, rowsSummary("ingress 日志"));
@@ -8724,8 +8746,8 @@ bfi ymc — 观测查询(v2 API:YMC/Kibana/SLS/trace)
8724
8746
  slowcall -t <time> [-e] [--trace-id] [--app] [--method] [--min-cost ms] [--profiler]
8725
8747
  exceptions -t <time> [-e] [--app]
8726
8748
  alerts -t <time> [-e] [--level error|warn|info]
8727
- url-stats </uri> -t <time> -e <env>
8728
- ingress --trace-id <id> | --uri </path> [-t <time>] -e <env> [--exact]
8749
+ url-stats </uri> -t <time> -e <env> [--app <service_name>]
8750
+ ingress --trace-id <id> | --uri </path> [-t <time>] -e <env> [--exact] [--app <service_name>]
8729
8751
  dump-list [-t <time>] -e <env> [--app] [--type profiler]
8730
8752
  cases <search|show|upload|index> 案例库(KEDB)
8731
8753
  wiki search "<kw>" [--source] [--titles] 知识库统一检索(wiki/jira/文库)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bfi-cli",
3
- "version": "0.1.65",
3
+ "version": "0.1.68",
4
4
  "description": "用友大业财BFI统一命令行工具,支持技能,技能包,元数据,UI元数据等",
5
5
  "type": "module",
6
6
  "bin": {