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.
- package/README.md +30 -33
- package/dist/SKILL.md +41 -21
- package/dist/commands/api-endpoint.command.d.ts +58 -0
- package/dist/commands/api-endpoint.command.js +209 -0
- package/dist/commands/api-endpoint.command.js.map +1 -0
- package/dist/commands/bc-api.command.d.ts +20 -0
- package/dist/commands/bc-api.command.js +30 -0
- package/dist/commands/bc-api.command.js.map +1 -0
- package/dist/commands/ic-api.command.d.ts +8 -42
- package/dist/commands/ic-api.command.js +7 -186
- package/dist/commands/ic-api.command.js.map +1 -1
- package/dist/commands/index.d.ts +2 -2
- package/dist/commands/index.js +7 -9
- package/dist/commands/index.js.map +1 -1
- package/dist/constants/biz-line-api-doc.d.ts +19 -0
- package/dist/constants/biz-line-api-doc.js +353 -0
- package/dist/constants/biz-line-api-doc.js.map +1 -0
- package/dist/constants/index.d.ts +2 -12
- package/dist/constants/index.js +6 -13
- package/dist/constants/index.js.map +1 -1
- package/dist/core/cli-app.js +3 -5
- package/dist/core/cli-app.js.map +1 -1
- package/dist/core/command-registry.d.ts +2 -2
- package/dist/core/command-registry.js +2 -2
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -3
- package/dist/commands/homepage.command.d.ts +0 -19
- package/dist/commands/homepage.command.js +0 -96
- package/dist/commands/homepage.command.js.map +0 -1
- package/dist/commands/nexus-swagger.command.d.ts +0 -19
- package/dist/commands/nexus-swagger.command.js +0 -95
- package/dist/commands/nexus-swagger.command.js.map +0 -1
|
@@ -1,53 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IApiDocEndpoint } from '../types';
|
|
2
|
+
import { BaseApiEndpointCommand } from './api-endpoint.command';
|
|
2
3
|
/**
|
|
3
4
|
* 调用 iCenter 接口地址命令
|
|
4
5
|
* 命令名称: /ic-api
|
|
5
|
-
* 功能: 交互选择 api-doc
|
|
6
|
+
* 功能: 交互选择 api-doc 中的 iCenter 接口,向对应接口地址发起调用
|
|
6
7
|
*/
|
|
7
|
-
export declare class IcApiCommand
|
|
8
|
+
export declare class IcApiCommand extends BaseApiEndpointCommand {
|
|
8
9
|
/** 命令名称 */
|
|
9
10
|
readonly name: string;
|
|
10
11
|
/** 命令描述 */
|
|
11
12
|
readonly description: string;
|
|
12
13
|
/** 命令使用示例 */
|
|
13
14
|
readonly usage: string;
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
execute(args: string[], options?: Record<string, unknown>): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* 解析环境参数,优先级:--env > 位置参数中的合法 ENV > 默认 prod
|
|
22
|
-
*/
|
|
23
|
-
private resolveEnv;
|
|
24
|
-
/**
|
|
25
|
-
* 解析 API Key,优先级:--api-key > 非 ENV 的位置参数 > 默认值
|
|
26
|
-
*/
|
|
27
|
-
private resolveApiKey;
|
|
28
|
-
/**
|
|
29
|
-
* 从 options 中按候选 key 取第一个有效值
|
|
30
|
-
*/
|
|
31
|
-
private pickOption;
|
|
32
|
-
/**
|
|
33
|
-
* 打印接口清单并让用户选择
|
|
34
|
-
*/
|
|
35
|
-
private selectApi;
|
|
36
|
-
/**
|
|
37
|
-
* 打印即将发起的请求概要
|
|
38
|
-
*/
|
|
39
|
-
private printRequestPreview;
|
|
40
|
-
/**
|
|
41
|
-
* 按接口方法发起请求并打印响应
|
|
42
|
-
*/
|
|
43
|
-
private callApi;
|
|
44
|
-
/**
|
|
45
|
-
* 将响应格式化为可读 JSON 文本
|
|
46
|
-
* version 接口可能返回 text/plain,需兜底解析
|
|
47
|
-
*/
|
|
48
|
-
private formatResponse;
|
|
49
|
-
/**
|
|
50
|
-
* 统一处理 HTTP 失败:优先打印服务端响应体
|
|
51
|
-
*/
|
|
52
|
-
private handleRequestError;
|
|
15
|
+
/** 可调用接口清单 */
|
|
16
|
+
protected readonly endpoints: IApiDocEndpoint[];
|
|
17
|
+
/** 接口清单来源说明 */
|
|
18
|
+
protected readonly docSource: string;
|
|
53
19
|
}
|
|
@@ -1,55 +1,14 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.IcApiCommand = 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
4
|
const constants_1 = require("../constants");
|
|
5
|
+
const api_endpoint_command_1 = require("./api-endpoint.command");
|
|
47
6
|
/**
|
|
48
7
|
* 调用 iCenter 接口地址命令
|
|
49
8
|
* 命令名称: /ic-api
|
|
50
|
-
* 功能: 交互选择 api-doc
|
|
9
|
+
* 功能: 交互选择 api-doc 中的 iCenter 接口,向对应接口地址发起调用
|
|
51
10
|
*/
|
|
52
|
-
class IcApiCommand {
|
|
11
|
+
class IcApiCommand extends api_endpoint_command_1.BaseApiEndpointCommand {
|
|
53
12
|
/** 命令名称 */
|
|
54
13
|
name = constants_1.COMMAND_NAMES.IC_API;
|
|
55
14
|
/** 命令描述 */
|
|
@@ -61,148 +20,10 @@ class IcApiCommand {
|
|
|
61
20
|
/${constants_1.COMMAND_NAMES.IC_API} prod sk-your-api-key
|
|
62
21
|
sino-bc-cli /${constants_1.COMMAND_NAMES.IC_API} --env=pre --api-key=sk-xxx
|
|
63
22
|
`;
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
*/
|
|
69
|
-
async execute(args, options) {
|
|
70
|
-
utils_1.logger.debug(`[IcApiCommand] 命令执行开始,参数: ${JSON.stringify(args)}`);
|
|
71
|
-
const startTime = (0, dayjs_1.default)();
|
|
72
|
-
const env = this.resolveEnv(args, options);
|
|
73
|
-
const apiKey = this.resolveApiKey(args, options);
|
|
74
|
-
const gateway = (0, constants_1.getGatewayConfig)(env);
|
|
75
|
-
utils_1.logger.info(`[${utils_1.CommonUtils.formatDate(startTime)}] 当前环境: ${gateway.label} (${env}),网关: ${gateway.baseUrl}`);
|
|
76
|
-
const api = await this.selectApi();
|
|
77
|
-
const url = (0, constants_1.joinGatewayUrl)(env, api.path);
|
|
78
|
-
this.printRequestPreview(api, url, apiKey);
|
|
79
|
-
await this.callApi(api, url, apiKey);
|
|
80
|
-
const durationSec = _.round((0, dayjs_1.default)().diff(startTime) / 1000, 2);
|
|
81
|
-
utils_1.logger.debug(`[IcApiCommand] 命令执行完成,耗时: ${durationSec} 秒`);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* 解析环境参数,优先级:--env > 位置参数中的合法 ENV > 默认 prod
|
|
85
|
-
*/
|
|
86
|
-
resolveEnv(args, options) {
|
|
87
|
-
const optionValue = this.pickOption(options, ['env', 'ENV']);
|
|
88
|
-
if ((0, constants_1.isEnvName)(optionValue)) {
|
|
89
|
-
return optionValue;
|
|
90
|
-
}
|
|
91
|
-
if (!_.isNil(optionValue) && optionValue !== true) {
|
|
92
|
-
throw new Error(`无效的 ENV: ${String(optionValue)},仅支持 test / pre / prod`);
|
|
93
|
-
}
|
|
94
|
-
const argEnv = _.find(args, (item) => (0, constants_1.isEnvName)(_.toLower(_.trim(item))));
|
|
95
|
-
if (!_.isNil(argEnv)) {
|
|
96
|
-
return _.toLower(_.trim(argEnv));
|
|
97
|
-
}
|
|
98
|
-
return types_1.EnvName.PROD;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* 解析 API Key,优先级:--api-key > 非 ENV 的位置参数 > 默认值
|
|
102
|
-
*/
|
|
103
|
-
resolveApiKey(args, options) {
|
|
104
|
-
const optionValue = this.pickOption(options, ['api-key', 'apiKey', 'API_KEY']);
|
|
105
|
-
if (_.isString(optionValue) && !_.isEmpty(_.trim(optionValue))) {
|
|
106
|
-
return _.trim(optionValue);
|
|
107
|
-
}
|
|
108
|
-
const argKey = _.find(args, (item) => !(0, constants_1.isEnvName)(_.toLower(_.trim(item))));
|
|
109
|
-
if (!_.isNil(argKey) && !_.isEmpty(_.trim(argKey))) {
|
|
110
|
-
return _.trim(argKey);
|
|
111
|
-
}
|
|
112
|
-
return constants_1.DEFAULT_API_KEY;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* 从 options 中按候选 key 取第一个有效值
|
|
116
|
-
*/
|
|
117
|
-
pickOption(options, keys) {
|
|
118
|
-
if (_.isNil(options)) {
|
|
119
|
-
return undefined;
|
|
120
|
-
}
|
|
121
|
-
const matchedKey = _.find(keys, (key) => !_.isUndefined(options[key]));
|
|
122
|
-
return _.isNil(matchedKey) ? undefined : options[matchedKey];
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* 打印接口清单并让用户选择
|
|
126
|
-
*/
|
|
127
|
-
async selectApi() {
|
|
128
|
-
process.stdout.write('\n');
|
|
129
|
-
process.stdout.write(chalk_1.default.bold('📦 可调用接口') + chalk_1.default.gray('(来源: src/api-doc)') + '\n\n');
|
|
130
|
-
_.forEach(constants_1.ICENTER_MCP_APIS, (api, index) => {
|
|
131
|
-
const serial = chalk_1.default.greenBright(` ${index + 1}.`);
|
|
132
|
-
const title = chalk_1.default.whiteBright(` ${api.displayName}`);
|
|
133
|
-
const meta = chalk_1.default.gray(` ${api.method} ${api.name}`);
|
|
134
|
-
const desc = chalk_1.default.white(` ${api.description}`);
|
|
135
|
-
process.stdout.write(`${serial}${title}\n${meta}\n${desc}\n\n`);
|
|
136
|
-
});
|
|
137
|
-
const selectedIndex = await utils_1.PromptUtils.selectIndex(constants_1.ICENTER_MCP_APIS.length);
|
|
138
|
-
return constants_1.ICENTER_MCP_APIS[selectedIndex];
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* 打印即将发起的请求概要
|
|
142
|
-
*/
|
|
143
|
-
printRequestPreview(api, url, apiKey) {
|
|
144
|
-
utils_1.logger.info(`已选择: ${api.displayName} (${api.name})`);
|
|
145
|
-
utils_1.logger.info(`请求方法: ${api.method}`);
|
|
146
|
-
utils_1.logger.info(`请求地址: ${url}`);
|
|
147
|
-
utils_1.logger.debug(`Authorization: Bearer ${apiKey}`);
|
|
148
|
-
utils_1.logger.tip('已注入请求头 Authorization: Bearer ***');
|
|
149
|
-
if (!_.isNil(api.defaultBody)) {
|
|
150
|
-
utils_1.logger.info('请求体(文档默认示例):');
|
|
151
|
-
utils_1.logger.info(api.defaultBody);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
utils_1.logger.info('该接口无请求体');
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* 按接口方法发起请求并打印响应
|
|
159
|
-
*/
|
|
160
|
-
async callApi(api, url, apiKey) {
|
|
161
|
-
const config = {
|
|
162
|
-
timeout: api.timeout,
|
|
163
|
-
headers: {
|
|
164
|
-
Authorization: `Bearer ${apiKey}`,
|
|
165
|
-
'Content-Type': 'application/json',
|
|
166
|
-
},
|
|
167
|
-
};
|
|
168
|
-
try {
|
|
169
|
-
utils_1.logger.info('正在发起请求...');
|
|
170
|
-
const data = api.method === 'GET'
|
|
171
|
-
? await utils_1.HttpUtils.get(url, config)
|
|
172
|
-
: await utils_1.HttpUtils.post(url, api.defaultBody, config);
|
|
173
|
-
utils_1.logger.success('接口调用成功,响应如下:');
|
|
174
|
-
process.stdout.write(this.formatResponse(data) + '\n');
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
this.handleRequestError(error);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* 将响应格式化为可读 JSON 文本
|
|
182
|
-
* version 接口可能返回 text/plain,需兜底解析
|
|
183
|
-
*/
|
|
184
|
-
formatResponse(data) {
|
|
185
|
-
if (_.isString(data)) {
|
|
186
|
-
try {
|
|
187
|
-
return JSON.stringify(JSON.parse(data), null, 2);
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
return data;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return JSON.stringify(data, null, 2);
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* 统一处理 HTTP 失败:优先打印服务端响应体
|
|
197
|
-
*/
|
|
198
|
-
handleRequestError(error) {
|
|
199
|
-
if (error instanceof axios_1.AxiosError && !_.isNil(error.response)) {
|
|
200
|
-
utils_1.logger.error(`接口调用失败,HTTP 状态码: ${error.response.status}`);
|
|
201
|
-
process.stdout.write(this.formatResponse(error.response.data) + '\n');
|
|
202
|
-
throw new Error(`接口调用失败: HTTP ${error.response.status}`);
|
|
203
|
-
}
|
|
204
|
-
throw error instanceof Error ? error : new Error(String(error));
|
|
205
|
-
}
|
|
23
|
+
/** 可调用接口清单 */
|
|
24
|
+
endpoints = constants_1.ICENTER_MCP_APIS;
|
|
25
|
+
/** 接口清单来源说明 */
|
|
26
|
+
docSource = 'src/api-doc';
|
|
206
27
|
}
|
|
207
28
|
exports.IcApiCommand = IcApiCommand;
|
|
208
29
|
//# sourceMappingURL=ic-api.command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ic-api.command.js","sourceRoot":"","sources":["../../src/commands/ic-api.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ic-api.command.js","sourceRoot":"","sources":["../../src/commands/ic-api.command.ts"],"names":[],"mappings":";;;AACA,4CAA+D;AAC/D,iEAAgE;AAEhE;;;;GAIG;AACH,MAAa,YAAa,SAAQ,6CAAsB;IACtD,WAAW;IACK,IAAI,GAAW,yBAAa,CAAC,MAAM,CAAC;IAEpD,WAAW;IACK,WAAW,GAAW,mCAAmC,CAAC;IAE1E,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,4BAAgB,CAAC;IAEnE,eAAe;IACI,SAAS,GAAW,aAAa,CAAC;CACtD;AApBD,oCAoBC"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { ICommand } from '../types';
|
|
|
5
5
|
* 新增命令时只需在此数组中添加即可,无需修改注册逻辑
|
|
6
6
|
*/
|
|
7
7
|
export declare const commands: ICommand[];
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
8
|
+
export { BaseApiEndpointCommand } from './api-endpoint.command';
|
|
9
|
+
export { BcApiCommand } from './bc-api.command';
|
|
10
10
|
export { IcApiCommand } from './ic-api.command';
|
|
11
11
|
export { InitCommand } from './init.command';
|
package/dist/commands/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InitCommand = exports.IcApiCommand = exports.
|
|
4
|
-
const
|
|
5
|
-
const nexus_swagger_command_1 = require("./nexus-swagger.command");
|
|
3
|
+
exports.InitCommand = exports.IcApiCommand = exports.BcApiCommand = exports.BaseApiEndpointCommand = exports.commands = void 0;
|
|
4
|
+
const bc_api_command_1 = require("./bc-api.command");
|
|
6
5
|
const ic_api_command_1 = require("./ic-api.command");
|
|
7
6
|
const init_command_1 = require("./init.command");
|
|
8
7
|
/**
|
|
@@ -11,15 +10,14 @@ const init_command_1 = require("./init.command");
|
|
|
11
10
|
* 新增命令时只需在此数组中添加即可,无需修改注册逻辑
|
|
12
11
|
*/
|
|
13
12
|
exports.commands = [
|
|
14
|
-
new
|
|
15
|
-
new nexus_swagger_command_1.NexusSwaggerCommand(),
|
|
13
|
+
new bc_api_command_1.BcApiCommand(),
|
|
16
14
|
new ic_api_command_1.IcApiCommand(),
|
|
17
15
|
new init_command_1.InitCommand(),
|
|
18
16
|
];
|
|
19
|
-
var
|
|
20
|
-
Object.defineProperty(exports, "
|
|
21
|
-
var
|
|
22
|
-
Object.defineProperty(exports, "
|
|
17
|
+
var api_endpoint_command_1 = require("./api-endpoint.command");
|
|
18
|
+
Object.defineProperty(exports, "BaseApiEndpointCommand", { enumerable: true, get: function () { return api_endpoint_command_1.BaseApiEndpointCommand; } });
|
|
19
|
+
var bc_api_command_2 = require("./bc-api.command");
|
|
20
|
+
Object.defineProperty(exports, "BcApiCommand", { enumerable: true, get: function () { return bc_api_command_2.BcApiCommand; } });
|
|
23
21
|
var ic_api_command_2 = require("./ic-api.command");
|
|
24
22
|
Object.defineProperty(exports, "IcApiCommand", { enumerable: true, get: function () { return ic_api_command_2.IcApiCommand; } });
|
|
25
23
|
var init_command_2 = require("./init.command");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAChD,qDAAgD;AAChD,iDAA6C;AAG7C;;;;GAIG;AACU,QAAA,QAAQ,GAAe;IAClC,IAAI,6BAAY,EAAE;IAClB,IAAI,6BAAY,EAAE;IAClB,IAAI,0BAAW,EAAE;CAClB,CAAC;AAEF,+DAAgE;AAAvD,8HAAA,sBAAsB,OAAA;AAC/B,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IApiDocEndpoint } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* sino-opti-hive 服务在网关上的路由前缀
|
|
4
|
+
* 所有业务线接口的相对路径都需要带上该前缀
|
|
5
|
+
*/
|
|
6
|
+
export declare const SINO_OPTI_HIVE_PREFIX = "/sino-opti-hive";
|
|
7
|
+
/** 接口分组名称,与接口文档左侧标签一致 */
|
|
8
|
+
export declare const BIZ_LINE_GROUPS: {
|
|
9
|
+
/** 业务线查询(Biz Line Open Controller,对外开放查询) */
|
|
10
|
+
readonly QUERY: "业务线查询";
|
|
11
|
+
/** 业务线策略(Biz Line Controller,业务线与周策略维护) */
|
|
12
|
+
readonly STRATEGY: "业务线策略";
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* sino-opti-hive 业务线接口清单
|
|
16
|
+
* 数据来源:https://o-test-sino-opti-hive.meetsocial.com/doc.html
|
|
17
|
+
* 与 src/api-doc/biz-line-query.md、src/api-doc/biz-line-strategy.md 保持一致
|
|
18
|
+
*/
|
|
19
|
+
export declare const BIZ_LINE_APIS: IApiDocEndpoint[];
|