sino-bc-cli 1.1.0 → 1.2.0

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 (33) hide show
  1. package/README.md +30 -33
  2. package/dist/SKILL.md +41 -21
  3. package/dist/commands/api-endpoint.command.d.ts +58 -0
  4. package/dist/commands/api-endpoint.command.js +209 -0
  5. package/dist/commands/api-endpoint.command.js.map +1 -0
  6. package/dist/commands/bc-api.command.d.ts +20 -0
  7. package/dist/commands/bc-api.command.js +30 -0
  8. package/dist/commands/bc-api.command.js.map +1 -0
  9. package/dist/commands/ic-api.command.d.ts +8 -42
  10. package/dist/commands/ic-api.command.js +7 -186
  11. package/dist/commands/ic-api.command.js.map +1 -1
  12. package/dist/commands/index.d.ts +2 -2
  13. package/dist/commands/index.js +7 -9
  14. package/dist/commands/index.js.map +1 -1
  15. package/dist/constants/biz-line-api-doc.d.ts +19 -0
  16. package/dist/constants/biz-line-api-doc.js +353 -0
  17. package/dist/constants/biz-line-api-doc.js.map +1 -0
  18. package/dist/constants/index.d.ts +2 -12
  19. package/dist/constants/index.js +6 -13
  20. package/dist/constants/index.js.map +1 -1
  21. package/dist/core/cli-app.js +3 -5
  22. package/dist/core/cli-app.js.map +1 -1
  23. package/dist/core/command-registry.d.ts +2 -2
  24. package/dist/core/command-registry.js +2 -2
  25. package/dist/types/index.d.ts +2 -0
  26. package/dist/types/index.js.map +1 -1
  27. package/package.json +2 -3
  28. package/dist/commands/homepage.command.d.ts +0 -19
  29. package/dist/commands/homepage.command.js +0 -96
  30. package/dist/commands/homepage.command.js.map +0 -1
  31. package/dist/commands/nexus-swagger.command.d.ts +0 -19
  32. package/dist/commands/nexus-swagger.command.js +0 -95
  33. package/dist/commands/nexus-swagger.command.js.map +0 -1
package/README.md CHANGED
@@ -91,7 +91,7 @@ sino-bc-cli /init
91
91
  ### ⑥ 免安装临时执行
92
92
 
93
93
  ```bash
94
- npx sino-bc-cli /homepage
94
+ npx sino-bc-cli --help
95
95
  ```
96
96
 
97
97
  注意 `npx` 方式不会持久注册 Agent 技能,需要技能能力时仍请走全局安装 + `/init`。
@@ -140,9 +140,10 @@ sino-bc-cli/
140
140
  │ │
141
141
  │ ├── commands/ # 📦 命令实现层(每命令一个文件,可独立扩展)
142
142
  │ │ ├── index.ts # 命令批量注册入口
143
- │ │ ├── homepage.command.ts # /homepage 命令实现(打开业务平台主页)
144
- │ │ ├── nexus-swagger.command.ts # /nexus-swagger 命令实现(打开 Nexus Swagger 文档页)
145
- │ │ └── ic-api.command.ts # /ic-api 命令实现(调用 iCenter 接口地址)
143
+ │ │ ├── init.command.ts # /init 命令实现(注册 Agent 技能)
144
+ │ │ ├── api-endpoint.command.ts # 接口调用类命令基类(选择接口 → 发起调用 → 打印响应)
145
+ │ │ ├── ic-api.command.ts # /ic-api 命令实现(调用 iCenter 接口地址)
146
+ │ │ └── bc-api.command.ts # /bc-api 命令实现(调用业务线查询 / 业务线策略接口)
146
147
  │ │
147
148
  │ ├── utils/ # 🛠 工具类层(高内聚的可复用工具)
148
149
  │ │ ├── index.ts # 工具模块统一导出
@@ -156,7 +157,7 @@ sino-bc-cli/
156
157
  │ │ └── index.ts # 全局接口、枚举定义(ICommand、LogLevel 等)
157
158
  │ │
158
159
  │ └── constants/ # 🔧 常量配置层
159
- │ └── index.ts # CLI 配置、URL 配置、命令名称、默认值
160
+ │ └── index.ts # CLI 配置、命令名称、默认值
160
161
  │
161
162
  ├── dist/ # 📤 编译输出目录(编译后自动生成)
162
163
  │ └── ... # JavaScript 编译产物 + 类型声明 + SourceMap
@@ -235,8 +236,8 @@ npm run dev -- [参数]
235
236
  # 示例:查看帮助
236
237
  npm run dev -- --help
237
238
 
238
- # 示例:执行 /homepage 命令
239
- npm run dev -- /homepage
239
+ # 示例:执行 /ic-api 命令
240
+ npm run dev -- /ic-api
240
241
  ```
241
242
 
242
243
  ### 5. 全局安装(推荐)
@@ -257,7 +258,8 @@ npm i sino-bc-cli -g
257
258
 
258
259
  ```bash
259
260
  sino-bc-cli --help
260
- sino-bc-cli /homepage
261
+ sino-bc-cli /init
262
+ sino-bc-cli /ic-api
261
263
  ```
262
264
 
263
265
  `npm i sino-bc-cli -g` 完成后会自动执行 `/init`,把 `SKILL.md` 写到用户主目录的 Agent 技能目录(`~/.agents/skills/sino-bc-cli` 等)。飞书豆包工作:技能·连接器 → 管理 → **本地** → 刷新。若未出现,手动执行:
@@ -274,11 +276,11 @@ sino-bc-cli /init
274
276
 
275
277
  ### 可用命令一览
276
278
 
277
- | 命令 | 说明 |
278
- | :--------------- | :----------------------------------------------------------------------------------------------------------------- |
279
- | `/homepage` | 使用默认浏览器打开 BeyondClick 业务平台主页 (`https://business.beyondclick.com/`) |
280
- | `/nexus-swagger` | 使用默认浏览器打开 BeyondClick Nexus Swagger 文档页 (`https://o-test-sino-bc-nexus.meetsocial.com/doc.html#/home`) |
281
- | `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
279
+ | 命令 | 说明 |
280
+ | :-------- | :-------------------------------------------------------------------------------------------- |
281
+ | `/init` | 将本包 `SKILL.md` 复制到用户主目录下的 Agent 技能目录,供飞书豆包工作 / Cursor / Claude / Codex 自动识别 |
282
+ | `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
283
+ | `/bc-api` | 交互选择并调用业务线查询 / 业务线策略接口(共 22 个,路径统一带 `/sino-opti-hive` 前缀) |
282
284
 
283
285
  ### 全局选项
284
286
 
@@ -302,40 +304,35 @@ sino-bc-cli --help
302
304
  sino-bc-cli -h
303
305
  ```
304
306
 
305
- #### ② 打开 BeyondClick 业务平台主页
307
+ #### ② 调用 iCenter 接口地址
306
308
 
307
309
  ```bash
308
- sino-bc-cli /homepage
310
+ sino-bc-cli /ic-api
311
+ sino-bc-cli /ic-api test
309
312
  ```
310
313
 
311
- 执行效果:自动调用系统默认浏览器打开 `https://business.beyondclick.com/`。
314
+ 执行效果:交互选择接口后,向对应环境的 iCenter 接口地址发起请求。
312
315
 
313
- #### ③ 打开 BeyondClick Nexus Swagger 文档页
316
+ #### ③ 调用业务线查询 / 业务线策略接口
314
317
 
315
318
  ```bash
316
- sino-bc-cli /nexus-swagger
319
+ sino-bc-cli /bc-api
320
+ sino-bc-cli /bc-api test
317
321
  ```
318
322
 
319
- 执行效果:自动调用系统默认浏览器打开 Nexus Swagger 文档页。
320
-
321
- #### ④ 调用 iCenter 接口地址
323
+ 执行效果:按「业务线查询(5 个)」「业务线策略(17 个)」两组列出接口,输入序号后向对应环境网关发起请求。所有路径统一带 `/sino-opti-hive` 路由前缀,接口清单见 [`src/api-doc/README.md`](./src/api-doc/README.md)。
322
324
 
323
- ```bash
324
- sino-bc-cli /ic-api
325
- sino-bc-cli /ic-api test
326
- ```
327
-
328
- 执行效果:交互选择接口后,向对应环境的 iCenter 接口地址发起请求。
325
+ > ⚠️ 业务线策略组含新建 / 编辑 / 删除等写操作接口,会按文档示例请求体直接发起调用,执行前请确认环境。
329
326
 
330
- #### ⑤ 启用 Debug 模式运行
327
+ #### ④ 启用 Debug 模式运行
331
328
 
332
329
  ```bash
333
- sino-bc-cli --debug /homepage
330
+ sino-bc-cli --debug /ic-api
334
331
  # 或使用短选项
335
- sino-bc-cli -d /nexus-swagger
332
+ sino-bc-cli -d /ic-api
336
333
  ```
337
334
 
338
- Debug 模式会输出详细的日志,包括参数解析、命令注册、URL 打开过程等信息,便于排查问题。
335
+ Debug 模式会输出详细的日志,包括参数解析、命令注册、接口调用过程等信息,便于排查问题。
339
336
 
340
337
  ---
341
338
 
@@ -407,8 +404,8 @@ export class ExampleCommand implements ICommand {
407
404
  import { ExampleCommand } from "./example.command"; // 新增导入
408
405
 
409
406
  export const commands: ICommand[] = [
410
- new HomepageCommand(),
411
- new NexusSwaggerCommand(),
407
+ new InitCommand(),
408
+ new IcApiCommand(),
412
409
  new ExampleCommand(), // 新增注册
413
410
  ];
414
411
  ```
package/dist/SKILL.md CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sino-bc-cli
3
3
  description: >
4
4
  BeyondClick CLI 项目说明、命令用法、扩展新命令与 npm 发布/回滚步骤。
5
- Use when 开发或使用 sino-bc-cli、执行 /init /homepage /nexus-swagger /ic-api、
5
+ Use when 开发或使用 sino-bc-cli、执行 /init /ic-api /bc-api、
6
6
  把技能注册到飞书豆包工作 / Cursor / Claude / Codex、扩展命令、
7
7
  npm publish、release:patch/minor/major、切 registry、排查 ENEEDAUTH/E403/EPUBLISHCONFLICT,
8
8
  或发布到私有 Nexus / 企业私服。
@@ -116,7 +116,7 @@ npm run rebuild # 清理后重新编译
116
116
 
117
117
  ```bash
118
118
  npm run dev -- --help
119
- npm run dev -- /homepage
119
+ npm run dev -- /ic-api
120
120
  ```
121
121
 
122
122
  ### 全局安装(推荐)
@@ -132,8 +132,8 @@ npm i sino-bc-cli -g
132
132
 
133
133
  ```bash
134
134
  sino-bc-cli --help
135
- sino-bc-cli /homepage
136
135
  sino-bc-cli /init
136
+ sino-bc-cli /ic-api
137
137
  ```
138
138
 
139
139
  `npm i -g` / `npm link` 后的 postinstall 会自动执行 `/init`,把 `SKILL.md` 写到 `~/.agents/skills/sino-bc-cli/`(以及 Codex / Cursor / Claude 目录)。飞书豆包工作:技能·连接器 → 管理 → **本地** → 刷新。未出现时再手动跑一遍 `/init`。
@@ -156,12 +156,11 @@ npm run rebuild # clean + tsc
156
156
 
157
157
  ### 可用命令
158
158
 
159
- | 命令 | 说明 |
160
- | :--------------- | :----------------------------------------------------------------------------------------------------------------- |
161
- | `/init` | 将本包 `SKILL.md` 复制到用户主目录下的 Agent 技能目录,供飞书豆包工作 / Cursor / Claude / Codex 自动识别 |
162
- | `/homepage` | 使用默认浏览器打开 BeyondClick 业务平台主页 (`https://business.beyondclick.com/`) |
163
- | `/nexus-swagger` | 使用默认浏览器打开 BeyondClick Nexus Swagger 文档页 (`https://o-test-sino-bc-nexus.meetsocial.com/doc.html#/home`) |
164
- | `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
159
+ | 命令 | 说明 |
160
+ | :-------- | :----------------------------------------------------------------------------------------------------------------- |
161
+ | `/init` | 将本包 `SKILL.md` 复制到用户主目录下的 Agent 技能目录,供飞书豆包工作 / Cursor / Claude / Codex 自动识别 |
162
+ | `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
163
+ | `/bc-api` | 交互选择并调用业务线查询(5 个)/ 业务线策略(17 个)接口;路径统一带 `/sino-opti-hive` 前缀,参数同 `/ic-api` |
165
164
 
166
165
  ### 全局选项
167
166
 
@@ -177,20 +176,18 @@ npm run rebuild # clean + tsc
177
176
  sino-bc-cli --version
178
177
  sino-bc-cli --help
179
178
  sino-bc-cli /init
180
- sino-bc-cli /homepage
181
- sino-bc-cli /nexus-swagger
182
179
  sino-bc-cli /ic-api
183
180
  sino-bc-cli /ic-api test
184
- sino-bc-cli --debug /homepage
185
- sino-bc-cli -d /nexus-swagger
181
+ sino-bc-cli /bc-api
182
+ sino-bc-cli /bc-api test
183
+ sino-bc-cli --debug /ic-api
184
+ sino-bc-cli -d /ic-api
186
185
  ```
187
186
 
188
187
  - `/init`:把 `SKILL.md` 写到 `~/.agents/skills/sino-bc-cli/`(以及 Codex / Cursor / Claude 对应目录)。`npm i sino-bc-cli -g` 的 postinstall 会自动跑一遍;飞书豆包工作请到「技能·连接器 → 管理 → 本地」刷新。Windows 使用 `%USERPROFILE%`,macOS / Linux 使用 `$HOME`。
189
-
190
- - `/homepage`:打开 `https://business.beyondclick.com/`
191
- - `/nexus-swagger`:打开 Nexus Swagger 文档页
192
188
  - `/ic-api`:交互选择并调用 iCenter 接口地址(默认 `prod` + 内置 API Key)
193
- - Debug 会输出参数解析、命令注册、URL 打开过程
189
+ - `/bc-api`:交互选择并调用 sino-opti-hive 业务线接口,按「业务线查询 / 业务线策略」分组展示。接口清单在 `src/constants/biz-line-api-doc.ts`,文档在 `src/api-doc/biz-line-query.md`、`src/api-doc/biz-line-strategy.md`。所有路径带 `/sino-opti-hive` 前缀;策略组含写操作接口,执行前先确认环境
190
+ - Debug 会输出参数解析、命令注册、接口调用过程
194
191
 
195
192
  ### 跨平台兼容性
196
193
 
@@ -231,14 +228,37 @@ export class ExampleCommand implements ICommand {
231
228
  import { ExampleCommand } from "./example.command";
232
229
 
233
230
  export const commands: ICommand[] = [
234
- new HomepageCommand(),
235
- new NexusSwaggerCommand(),
231
+ new InitCommand(),
232
+ new IcApiCommand(),
236
233
  new ExampleCommand(),
237
234
  ];
238
235
  ```
239
236
 
240
237
  完成后 `npm run build`,即可使用 `sino-bc-cli /example`。
241
238
 
239
+ ### 扩展「接口调用类」命令
240
+
241
+ 新增一组接口调用命令(如 `/ic-api`、`/bc-api`)时,不要重复实现调用流程,继承 `BaseApiEndpointCommand` 即可复用「解析环境与 API Key → 分组展示接口 → 发起调用 → 打印响应」:
242
+
243
+ 1. 在 `src/constants/` 下新建接口清单文件,导出 `IApiDocEndpoint[]`(`group` 字段用于分组展示)
244
+ 2. 在 `src/commands/` 下继承 `BaseApiEndpointCommand`,只声明 `name`、`description`、`usage`、`endpoints`、`docSource`
245
+ 3. 在 `src/constants/index.ts` 的 `COMMAND_NAMES` 中登记命令名并导出清单,再加入 `commands` 数组
246
+
247
+ ```typescript
248
+ // src/commands/example-api.command.ts
249
+ import { IApiDocEndpoint } from "../types";
250
+ import { COMMAND_NAMES, EXAMPLE_APIS } from "../constants";
251
+ import { BaseApiEndpointCommand } from "./api-endpoint.command";
252
+
253
+ export class ExampleApiCommand extends BaseApiEndpointCommand {
254
+ public readonly name: string = COMMAND_NAMES.EXAMPLE_API;
255
+ public readonly description: string = "交互选择并调用示例接口";
256
+ public readonly usage: string = `/${COMMAND_NAMES.EXAMPLE_API} test`;
257
+ protected readonly endpoints: IApiDocEndpoint[] = EXAMPLE_APIS;
258
+ protected readonly docSource: string = "src/api-doc/example.md";
259
+ }
260
+ ```
261
+
242
262
  ---
243
263
 
244
264
  ## npm 发布
@@ -379,7 +399,7 @@ npm view sino-bc-cli version
379
399
  ```powershell
380
400
  npx sino-bc-cli@latest --version
381
401
  npx sino-bc-cli@latest --help
382
- # npx sino-bc-cli@latest /homepage
402
+ # npx sino-bc-cli@latest /ic-api
383
403
  ```
384
404
 
385
405
  **③ 浏览器打开包页**,确认 README 渲染、Version / License / Keywords、Dependencies(lodash、dayjs、axios、crypto-js、chalk、commander、open)
@@ -469,7 +489,7 @@ npm deprecate sino-bc-cli@* "此包已废弃,请使用 @newscope/sino-bc-cli"
469
489
  | 发版白名单 files / publishConfig | `package.json` 的 `files` + `publishConfig` |
470
490
  | TypeScript 编译配置 | `tsconfig.json` |
471
491
  | CLI 入口(带 shebang) | `src/index.ts` → 编译后 `dist/index.js` |
472
- | 命令 URL 配置 | `src/constants/index.ts` 的 `PLATFORM_URLS` |
492
+ | 网关 / 命令常量 | `src/constants/index.ts`、`src/constants/gateway.ts` |
473
493
 
474
494
  ---
475
495
 
@@ -0,0 +1,58 @@
1
+ import { IApiDocEndpoint, ICommand, EnvName } from '../types';
2
+ /**
3
+ * 接口调用类命令基类
4
+ * 统一封装「解析环境与 API Key → 交互选择接口 → 按网关地址发起调用 → 打印响应」流程
5
+ * 子类只需提供命令名、描述与可调用接口清单
6
+ */
7
+ export declare abstract class BaseApiEndpointCommand implements ICommand {
8
+ /** 命令名称 */
9
+ abstract readonly name: string;
10
+ /** 命令描述 */
11
+ abstract readonly description: string;
12
+ /** 命令使用示例 */
13
+ abstract readonly usage: string;
14
+ /** 可调用接口清单 */
15
+ protected abstract readonly endpoints: IApiDocEndpoint[];
16
+ /** 接口清单来源说明,展示在选择列表标题处 */
17
+ protected abstract readonly docSource: string;
18
+ /**
19
+ * 命令执行函数
20
+ * @param args 位置参数:[ENV] [API_KEY]
21
+ * @param options 解析后的选项,支持 --env / --api-key
22
+ */
23
+ execute(args: string[], options?: Record<string, unknown>): Promise<void>;
24
+ /**
25
+ * 解析环境参数,优先级:--env > 位置参数中的合法 ENV > 默认 prod
26
+ */
27
+ protected resolveEnv(args: string[], options?: Record<string, unknown>): EnvName;
28
+ /**
29
+ * 解析 API Key,优先级:--api-key > 非 ENV 的位置参数 > 默认值
30
+ */
31
+ protected resolveApiKey(args: string[], options?: Record<string, unknown>): string;
32
+ /**
33
+ * 从 options 中按候选 key 取第一个有效值
34
+ */
35
+ protected pickOption(options: Record<string, unknown> | undefined, keys: string[]): unknown;
36
+ /**
37
+ * 打印接口清单并让用户选择
38
+ * 接口带 group 时按分组分节展示,序号仍为全局连续编号
39
+ */
40
+ protected selectApi(): Promise<IApiDocEndpoint>;
41
+ /**
42
+ * 打印即将发起的请求概要
43
+ */
44
+ protected printRequestPreview(api: IApiDocEndpoint, url: string, apiKey: string): void;
45
+ /**
46
+ * 按接口方法发起请求并打印响应
47
+ */
48
+ protected callApi(api: IApiDocEndpoint, url: string, apiKey: string): Promise<void>;
49
+ /**
50
+ * 将响应格式化为可读 JSON 文本
51
+ * 部分接口可能返回 text/plain,需兜底解析
52
+ */
53
+ protected formatResponse(data: unknown): string;
54
+ /**
55
+ * 统一处理 HTTP 失败:优先打印服务端响应体
56
+ */
57
+ protected handleRequestError(error: unknown): never;
58
+ }
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.BaseApiEndpointCommand = void 0;
40
+ const _ = __importStar(require("lodash"));
41
+ const dayjs_1 = __importDefault(require("dayjs"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const axios_1 = require("axios");
44
+ const types_1 = require("../types");
45
+ const utils_1 = require("../utils");
46
+ const constants_1 = require("../constants");
47
+ /**
48
+ * 接口调用类命令基类
49
+ * 统一封装「解析环境与 API Key → 交互选择接口 → 按网关地址发起调用 → 打印响应」流程
50
+ * 子类只需提供命令名、描述与可调用接口清单
51
+ */
52
+ class BaseApiEndpointCommand {
53
+ /**
54
+ * 命令执行函数
55
+ * @param args 位置参数:[ENV] [API_KEY]
56
+ * @param options 解析后的选项,支持 --env / --api-key
57
+ */
58
+ async execute(args, options) {
59
+ utils_1.logger.debug(`[${this.name}] 命令执行开始,参数: ${JSON.stringify(args)}`);
60
+ const startTime = (0, dayjs_1.default)();
61
+ const env = this.resolveEnv(args, options);
62
+ const apiKey = this.resolveApiKey(args, options);
63
+ const gateway = (0, constants_1.getGatewayConfig)(env);
64
+ utils_1.logger.info(`[${utils_1.CommonUtils.formatDate(startTime)}] 当前环境: ${gateway.label} (${env}),网关: ${gateway.baseUrl}`);
65
+ const api = await this.selectApi();
66
+ const url = (0, constants_1.joinGatewayUrl)(env, api.path);
67
+ this.printRequestPreview(api, url, apiKey);
68
+ await this.callApi(api, url, apiKey);
69
+ const durationSec = _.round((0, dayjs_1.default)().diff(startTime) / 1000, 2);
70
+ utils_1.logger.debug(`[${this.name}] 命令执行完成,耗时: ${durationSec} 秒`);
71
+ }
72
+ /**
73
+ * 解析环境参数,优先级:--env > 位置参数中的合法 ENV > 默认 prod
74
+ */
75
+ resolveEnv(args, options) {
76
+ const optionValue = this.pickOption(options, ['env', 'ENV']);
77
+ if ((0, constants_1.isEnvName)(optionValue)) {
78
+ return optionValue;
79
+ }
80
+ if (!_.isNil(optionValue) && optionValue !== true) {
81
+ throw new Error(`无效的 ENV: ${String(optionValue)},仅支持 test / pre / prod`);
82
+ }
83
+ const argEnv = _.find(args, (item) => (0, constants_1.isEnvName)(_.toLower(_.trim(item))));
84
+ if (!_.isNil(argEnv)) {
85
+ return _.toLower(_.trim(argEnv));
86
+ }
87
+ return types_1.EnvName.PROD;
88
+ }
89
+ /**
90
+ * 解析 API Key,优先级:--api-key > 非 ENV 的位置参数 > 默认值
91
+ */
92
+ resolveApiKey(args, options) {
93
+ const optionValue = this.pickOption(options, ['api-key', 'apiKey', 'API_KEY']);
94
+ if (_.isString(optionValue) && !_.isEmpty(_.trim(optionValue))) {
95
+ return _.trim(optionValue);
96
+ }
97
+ const argKey = _.find(args, (item) => !(0, constants_1.isEnvName)(_.toLower(_.trim(item))));
98
+ if (!_.isNil(argKey) && !_.isEmpty(_.trim(argKey))) {
99
+ return _.trim(argKey);
100
+ }
101
+ return constants_1.DEFAULT_API_KEY;
102
+ }
103
+ /**
104
+ * 从 options 中按候选 key 取第一个有效值
105
+ */
106
+ pickOption(options, keys) {
107
+ if (_.isNil(options)) {
108
+ return undefined;
109
+ }
110
+ const matchedKey = _.find(keys, (key) => !_.isUndefined(options[key]));
111
+ return _.isNil(matchedKey) ? undefined : options[matchedKey];
112
+ }
113
+ /**
114
+ * 打印接口清单并让用户选择
115
+ * 接口带 group 时按分组分节展示,序号仍为全局连续编号
116
+ */
117
+ async selectApi() {
118
+ process.stdout.write('\n');
119
+ process.stdout.write(chalk_1.default.bold('📦 可调用接口') + chalk_1.default.gray(`(来源: ${this.docSource})`) + '\n\n');
120
+ // 按 group 分组展示;无 group 的接口归入一个匿名分组
121
+ const grouped = _.groupBy(this.endpoints, (api) => api.group ?? '');
122
+ let serialNo = 0;
123
+ _.forEach(grouped, (apis, group) => {
124
+ if (!_.isEmpty(group)) {
125
+ process.stdout.write(chalk_1.default.bold.blueBright(` ── ${group} (${apis.length}) ──`) + '\n\n');
126
+ }
127
+ _.forEach(apis, (api) => {
128
+ serialNo += 1;
129
+ const serial = chalk_1.default.greenBright(` ${serialNo}.`);
130
+ const title = chalk_1.default.whiteBright(` ${api.displayName}`);
131
+ const meta = chalk_1.default.gray(` ${api.method} ${api.path}`);
132
+ const desc = chalk_1.default.white(` ${api.description}`);
133
+ process.stdout.write(`${serial}${title}\n${meta}\n${desc}\n\n`);
134
+ });
135
+ });
136
+ // 分组仅影响展示顺序,需按同样顺序取回选中项
137
+ const ordered = _.flatMap(grouped, (apis) => apis);
138
+ const selectedIndex = await utils_1.PromptUtils.selectIndex(ordered.length);
139
+ return ordered[selectedIndex];
140
+ }
141
+ /**
142
+ * 打印即将发起的请求概要
143
+ */
144
+ printRequestPreview(api, url, apiKey) {
145
+ utils_1.logger.info(`已选择: ${api.displayName} (${api.name})`);
146
+ utils_1.logger.info(`请求方法: ${api.method}`);
147
+ utils_1.logger.info(`请求地址: ${url}`);
148
+ utils_1.logger.debug(`Authorization: Bearer ${apiKey}`);
149
+ utils_1.logger.tip('已注入请求头 Authorization: Bearer ***');
150
+ if (!_.isNil(api.defaultBody)) {
151
+ utils_1.logger.info('请求体(文档默认示例):');
152
+ utils_1.logger.info(api.defaultBody);
153
+ }
154
+ else {
155
+ utils_1.logger.info('该接口无请求体');
156
+ }
157
+ }
158
+ /**
159
+ * 按接口方法发起请求并打印响应
160
+ */
161
+ async callApi(api, url, apiKey) {
162
+ const config = {
163
+ timeout: api.timeout,
164
+ headers: {
165
+ Authorization: `Bearer ${apiKey}`,
166
+ 'Content-Type': 'application/json',
167
+ },
168
+ };
169
+ try {
170
+ utils_1.logger.info('正在发起请求...');
171
+ const data = api.method === 'GET'
172
+ ? await utils_1.HttpUtils.get(url, config)
173
+ : await utils_1.HttpUtils.post(url, api.defaultBody, config);
174
+ utils_1.logger.success('接口调用成功,响应如下:');
175
+ process.stdout.write(this.formatResponse(data) + '\n');
176
+ }
177
+ catch (error) {
178
+ this.handleRequestError(error);
179
+ }
180
+ }
181
+ /**
182
+ * 将响应格式化为可读 JSON 文本
183
+ * 部分接口可能返回 text/plain,需兜底解析
184
+ */
185
+ formatResponse(data) {
186
+ if (_.isString(data)) {
187
+ try {
188
+ return JSON.stringify(JSON.parse(data), null, 2);
189
+ }
190
+ catch {
191
+ return data;
192
+ }
193
+ }
194
+ return JSON.stringify(data, null, 2);
195
+ }
196
+ /**
197
+ * 统一处理 HTTP 失败:优先打印服务端响应体
198
+ */
199
+ handleRequestError(error) {
200
+ if (error instanceof axios_1.AxiosError && !_.isNil(error.response)) {
201
+ utils_1.logger.error(`接口调用失败,HTTP 状态码: ${error.response.status}`);
202
+ process.stdout.write(this.formatResponse(error.response.data) + '\n');
203
+ throw new Error(`接口调用失败: HTTP ${error.response.status}`);
204
+ }
205
+ throw error instanceof Error ? error : new Error(String(error));
206
+ }
207
+ }
208
+ exports.BaseApiEndpointCommand = BaseApiEndpointCommand;
209
+ //# sourceMappingURL=api-endpoint.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-endpoint.command.js","sourceRoot":"","sources":["../../src/commands/api-endpoint.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { IApiDocEndpoint } from '../types';
2
+ import { BaseApiEndpointCommand } from './api-endpoint.command';
3
+ /**
4
+ * 调用 sino-opti-hive 业务线接口命令
5
+ * 命令名称: /bc-api
6
+ * 功能: 交互选择「业务线查询 / 业务线策略」接口,向对应接口地址发起调用
7
+ * 所有路径统一带 /sino-opti-hive 网关路由前缀
8
+ */
9
+ export declare class BcApiCommand extends BaseApiEndpointCommand {
10
+ /** 命令名称 */
11
+ readonly name: string;
12
+ /** 命令描述 */
13
+ readonly description: string;
14
+ /** 命令使用示例 */
15
+ readonly usage: string;
16
+ /** 可调用接口清单 */
17
+ protected readonly endpoints: IApiDocEndpoint[];
18
+ /** 接口清单来源说明 */
19
+ protected readonly docSource: string;
20
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BcApiCommand = void 0;
4
+ const constants_1 = require("../constants");
5
+ const api_endpoint_command_1 = require("./api-endpoint.command");
6
+ /**
7
+ * 调用 sino-opti-hive 业务线接口命令
8
+ * 命令名称: /bc-api
9
+ * 功能: 交互选择「业务线查询 / 业务线策略」接口,向对应接口地址发起调用
10
+ * 所有路径统一带 /sino-opti-hive 网关路由前缀
11
+ */
12
+ class BcApiCommand extends api_endpoint_command_1.BaseApiEndpointCommand {
13
+ /** 命令名称 */
14
+ name = constants_1.COMMAND_NAMES.BC_API;
15
+ /** 命令描述 */
16
+ description = '交互选择并调用业务线查询 / 业务线策略接口(请求体默认使用文档示例)';
17
+ /** 命令使用示例 */
18
+ usage = `
19
+ /${constants_1.COMMAND_NAMES.BC_API}
20
+ /${constants_1.COMMAND_NAMES.BC_API} test
21
+ /${constants_1.COMMAND_NAMES.BC_API} prod sk-your-api-key
22
+ sino-bc-cli /${constants_1.COMMAND_NAMES.BC_API} --env=pre --api-key=sk-xxx
23
+ `;
24
+ /** 可调用接口清单 */
25
+ endpoints = constants_1.BIZ_LINE_APIS;
26
+ /** 接口清单来源说明 */
27
+ docSource = 'src/api-doc/biz-line-*.md';
28
+ }
29
+ exports.BcApiCommand = BcApiCommand;
30
+ //# sourceMappingURL=bc-api.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bc-api.command.js","sourceRoot":"","sources":["../../src/commands/bc-api.command.ts"],"names":[],"mappings":";;;AACA,4CAA4D;AAC5D,iEAAgE;AAEhE;;;;;GAKG;AACH,MAAa,YAAa,SAAQ,6CAAsB;IACtD,WAAW;IACK,IAAI,GAAW,yBAAa,CAAC,MAAM,CAAC;IAEpD,WAAW;IACK,WAAW,GAAW,qCAAqC,CAAC;IAE5E,aAAa;IACG,KAAK,GAAW;OAC3B,yBAAa,CAAC,MAAM;OACpB,yBAAa,CAAC,MAAM;OACpB,yBAAa,CAAC,MAAM;mBACR,yBAAa,CAAC,MAAM;GACpC,CAAC;IAEF,cAAc;IACK,SAAS,GAAsB,yBAAa,CAAC;IAEhE,eAAe;IACI,SAAS,GAAW,2BAA2B,CAAC;CACpE;AApBD,oCAoBC"}