sino-bc-cli 1.2.0 → 1.3.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 (38) hide show
  1. package/README.md +22 -8
  2. package/dist/SKILL.md +11 -6
  3. package/dist/api-doc/README.md +80 -0
  4. package/dist/api-doc/biz-line-query.md +212 -0
  5. package/dist/api-doc/biz-line-strategy.md +313 -0
  6. package/dist/api-doc/icenter-mcp-strategy-dimension-facebook-ad-list.md +162 -0
  7. package/dist/api-doc/icenter-mcp-strategy-metrics-facebook-ad-list.md +197 -0
  8. package/dist/api-doc/icenter-mcp-version-query.md +69 -0
  9. package/dist/commands/api-endpoint.command.js +3 -0
  10. package/dist/commands/api-endpoint.command.js.map +1 -1
  11. package/dist/commands/api-list.command.d.ts +39 -0
  12. package/dist/commands/api-list.command.js +179 -0
  13. package/dist/commands/api-list.command.js.map +1 -0
  14. package/dist/commands/index.d.ts +1 -0
  15. package/dist/commands/index.js +5 -1
  16. package/dist/commands/index.js.map +1 -1
  17. package/dist/constants/api-catalog.d.ts +34 -0
  18. package/dist/constants/api-catalog.js +118 -0
  19. package/dist/constants/api-catalog.js.map +1 -0
  20. package/dist/constants/api-doc.d.ts +2 -0
  21. package/dist/constants/api-doc.js +6 -1
  22. package/dist/constants/api-doc.js.map +1 -1
  23. package/dist/constants/biz-line-api-doc.js +1 -1
  24. package/dist/constants/biz-line-api-doc.js.map +1 -1
  25. package/dist/constants/gateway.d.ts +4 -0
  26. package/dist/constants/gateway.js +5 -1
  27. package/dist/constants/gateway.js.map +1 -1
  28. package/dist/constants/index.d.ts +5 -2
  29. package/dist/constants/index.js +11 -1
  30. package/dist/constants/index.js.map +1 -1
  31. package/dist/core/cli-app.js +2 -0
  32. package/dist/core/cli-app.js.map +1 -1
  33. package/dist/utils/browser.d.ts +16 -0
  34. package/dist/utils/browser.js +79 -0
  35. package/dist/utils/browser.js.map +1 -1
  36. package/dist/utils/http.js +1 -0
  37. package/dist/utils/http.js.map +1 -1
  38. package/package.json +1 -1
package/README.md CHANGED
@@ -141,6 +141,7 @@ sino-bc-cli/
141
141
  │ ├── commands/ # 📦 命令实现层(每命令一个文件,可独立扩展)
142
142
  │ │ ├── index.ts # 命令批量注册入口
143
143
  │ │ ├── init.command.ts # /init 命令实现(注册 Agent 技能)
144
+ │ │ ├── api-list.command.ts # /api-list 命令实现(列出接口并打开文档)
144
145
  │ │ ├── api-endpoint.command.ts # 接口调用类命令基类(选择接口 → 发起调用 → 打印响应)
145
146
  │ │ ├── ic-api.command.ts # /ic-api 命令实现(调用 iCenter 接口地址)
146
147
  │ │ └── bc-api.command.ts # /bc-api 命令实现(调用业务线查询 / 业务线策略接口)
@@ -259,6 +260,7 @@ npm i sino-bc-cli -g
259
260
  ```bash
260
261
  sino-bc-cli --help
261
262
  sino-bc-cli /init
263
+ sino-bc-cli /api-list
262
264
  sino-bc-cli /ic-api
263
265
  ```
264
266
 
@@ -276,11 +278,12 @@ sino-bc-cli /init
276
278
 
277
279
  ### 可用命令一览
278
280
 
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` 前缀) |
281
+ | 命令 | 说明 |
282
+ | :---------- | :-------------------------------------------------------------------------------------------- |
283
+ | `/init` | 将本包 `SKILL.md` 复制到用户主目录下的 Agent 技能目录,供飞书豆包工作 / Cursor / Claude / Codex 自动识别 |
284
+ | `/api-list` | 列出全部可调用接口;Cursor / VS Code 终端中 Ctrl+单击接口名或文档路径打开本地文档,也可输入序号或传入 name |
285
+ | `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
286
+ | `/bc-api` | 交互选择并调用业务线查询 / 业务线策略接口(共 22 个,路径统一带 `/sino-opti-hive` 前缀) |
284
287
 
285
288
  ### 全局选项
286
289
 
@@ -304,7 +307,17 @@ sino-bc-cli --help
304
307
  sino-bc-cli -h
305
308
  ```
306
309
 
307
- #### ② 调用 iCenter 接口地址
310
+ #### ② 列出可调用接口并打开文档
311
+
312
+ ```bash
313
+ sino-bc-cli /api-list
314
+ sino-bc-cli /api-list 3
315
+ sino-bc-cli /api-list biz-line-open-list
316
+ ```
317
+
318
+ 执行效果:按「iCenter MCP / 业务线查询 / 业务线策略」分组列出全部接口。接口名是终端超链接,文档路径可 Ctrl+单击打开对应 markdown;交互终端也可输入序号。传入序号或接口 `name` 则直接打开该文档。
319
+
320
+ #### ③ 调用 iCenter 接口地址
308
321
 
309
322
  ```bash
310
323
  sino-bc-cli /ic-api
@@ -313,7 +326,7 @@ sino-bc-cli /ic-api test
313
326
 
314
327
  执行效果:交互选择接口后,向对应环境的 iCenter 接口地址发起请求。
315
328
 
316
- #### ③ 调用业务线查询 / 业务线策略接口
329
+ #### ④ 调用业务线查询 / 业务线策略接口
317
330
 
318
331
  ```bash
319
332
  sino-bc-cli /bc-api
@@ -324,7 +337,7 @@ sino-bc-cli /bc-api test
324
337
 
325
338
  > ⚠️ 业务线策略组含新建 / 编辑 / 删除等写操作接口,会按文档示例请求体直接发起调用,执行前请确认环境。
326
339
 
327
- #### ④ 启用 Debug 模式运行
340
+ #### ⑤ 启用 Debug 模式运行
328
341
 
329
342
  ```bash
330
343
  sino-bc-cli --debug /ic-api
@@ -405,6 +418,7 @@ import { ExampleCommand } from "./example.command"; // 新增导入
405
418
 
406
419
  export const commands: ICommand[] = [
407
420
  new InitCommand(),
421
+ new ApiListCommand(),
408
422
  new IcApiCommand(),
409
423
  new ExampleCommand(), // 新增注册
410
424
  ];
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 /ic-api /bc-api、
5
+ Use when 开发或使用 sino-bc-cli、执行 /init /api-list /ic-api /bc-api、
6
6
  把技能注册到飞书豆包工作 / Cursor / Claude / Codex、扩展命令、
7
7
  npm publish、release:patch/minor/major、切 registry、排查 ENEEDAUTH/E403/EPUBLISHCONFLICT,
8
8
  或发布到私有 Nexus / 企业私服。
@@ -133,6 +133,7 @@ npm i sino-bc-cli -g
133
133
  ```bash
134
134
  sino-bc-cli --help
135
135
  sino-bc-cli /init
136
+ sino-bc-cli /api-list
136
137
  sino-bc-cli /ic-api
137
138
  ```
138
139
 
@@ -156,11 +157,12 @@ npm run rebuild # clean + tsc
156
157
 
157
158
  ### 可用命令
158
159
 
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` |
160
+ | 命令 | 说明 |
161
+ | :---------- | :----------------------------------------------------------------------------------------------------------------- |
162
+ | `/init` | 将本包 `SKILL.md` 复制到用户主目录下的 Agent 技能目录,供飞书豆包工作 / Cursor / Claude / Codex 自动识别 |
163
+ | `/api-list` | 列出全部可调用接口;Cursor / VS Code 终端中 Ctrl+单击接口名或文档路径打开本地文档,也可输入序号或传入 name |
164
+ | `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
165
+ | `/bc-api` | 交互选择并调用业务线查询(5 个)/ 业务线策略(17 个)接口;路径统一带 `/sino-opti-hive` 前缀,参数同 `/ic-api` |
164
166
 
165
167
  ### 全局选项
166
168
 
@@ -176,6 +178,8 @@ npm run rebuild # clean + tsc
176
178
  sino-bc-cli --version
177
179
  sino-bc-cli --help
178
180
  sino-bc-cli /init
181
+ sino-bc-cli /api-list
182
+ sino-bc-cli /api-list 3
179
183
  sino-bc-cli /ic-api
180
184
  sino-bc-cli /ic-api test
181
185
  sino-bc-cli /bc-api
@@ -185,6 +189,7 @@ sino-bc-cli -d /ic-api
185
189
  ```
186
190
 
187
191
  - `/init`:把 `SKILL.md` 写到 `~/.agents/skills/sino-bc-cli/`(以及 Codex / Cursor / Claude 对应目录)。`npm i sino-bc-cli -g` 的 postinstall 会自动跑一遍;飞书豆包工作请到「技能·连接器 → 管理 → 本地」刷新。Windows 使用 `%USERPROFILE%`,macOS / Linux 使用 `$HOME`。
192
+ - `/api-list`:按「iCenter MCP / 业务线查询 / 业务线策略」分组列出全部可调用接口。接口名是终端超链接,文档路径可 Ctrl+单击;交互终端也可输入序号打开。传入序号或 `name` 则直接打开对应 markdown(`src/api-doc/`,安装后为 `dist/api-doc/`)。Agent 展示结果时,请把文档路径写成 Markdown 链接,方便用户点击打开。
188
193
  - `/ic-api`:交互选择并调用 iCenter 接口地址(默认 `prod` + 内置 API Key)
189
194
  - `/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
195
  - Debug 会输出参数解析、命令注册、接口调用过程
@@ -0,0 +1,80 @@
1
+ # 接口文档索引
2
+
3
+ 本目录汇总 CLI 可交互调用的接口。浏览清单用 `/api-list`(可点击打开本文档),发起调用用 `/ic-api` 与 `/bc-api`。
4
+
5
+ | 分组 | 命令 | 接口数 | 文档 |
6
+ | --- | --- | --- | --- |
7
+ | iCenter MCP | `/ic-api` | 3 | 见下方「iCenter MCP 接口」 |
8
+ | 业务线查询 | `/bc-api` | 5 | [biz-line-query.md](./biz-line-query.md) |
9
+ | 业务线策略 | `/bc-api` | 17 | [biz-line-strategy.md](./biz-line-strategy.md) |
10
+
11
+ ---
12
+
13
+ ## iCenter MCP 接口
14
+
15
+ 数据来源:[ContextForge MCP Gateway Admin - Tools](https://o-test-sino-mcp-gateway.meetsocial.cn/admin/?tools_page=2&tools_size=10&tools_inactive=false#tools)
16
+
17
+ 筛选规则:`name` 以 `icenter-mcp-` 开头。当前共 **3** 个接口,每个接口一份独立文档。
18
+
19
+ | 文档 | name | 展示名 | 方法 | 说明 |
20
+ | --- | --- | --- | --- | --- |
21
+ | [icenter-mcp-strategy-dimension-facebook-ad-list.md](./icenter-mcp-strategy-dimension-facebook-ad-list.md) | `icenter-mcp-strategy-dimension-facebook-ad-list` | Facebook广告策略维度数据 | POST | 查询广告策略配置(不含成效指标) |
22
+ | [icenter-mcp-strategy-metrics-facebook-ad-list.md](./icenter-mcp-strategy-metrics-facebook-ad-list.md) | `icenter-mcp-strategy-metrics-facebook-ad-list` | Facebook广告策略成效数据 | POST | 查询策略维度 + 成效指标(最多近 21 天) |
23
+ | [icenter-mcp-version-query.md](./icenter-mcp-version-query.md) | `icenter-mcp-version-query` | 查询git最新提交版本 | GET | 查询 iCenter 服务 git 最新提交版本 |
24
+
25
+ 对应命令:`/ic-api`,接口清单定义在 `src/constants/api-doc.ts`。
26
+
27
+ ---
28
+
29
+ ## 业务线接口(sino-opti-hive)
30
+
31
+ 数据来源:[sino-opti-hive 接口文档](https://o-test-sino-opti-hive.meetsocial.com/doc.html)
32
+
33
+ 共 **22** 个接口,分两组。所有路径经网关调用时统一带 `/sino-opti-hive` 路由前缀,例如 `/sino-opti-hive/biz-line-open/channels`。
34
+
35
+ | 文档 | 分组 | 接口数 | 说明 |
36
+ | --- | --- | --- | --- |
37
+ | [biz-line-query.md](./biz-line-query.md) | 业务线查询 | 5 | 对外开放的只读查询:渠道、品类字典、业务线列表、策略及表现、Top 业务线 |
38
+ | [biz-line-strategy.md](./biz-line-strategy.md) | 业务线策略 | 17 | 业务线主数据与周策略的增删改查、导出 |
39
+
40
+ 对应命令:`/bc-api`,接口清单定义在 `src/constants/biz-line-api-doc.ts`。
41
+
42
+ > ⚠️ 业务线策略组含新建 / 编辑 / 删除等写操作接口,`/bc-api` 会按文档示例请求体直接发起调用,调用前请确认环境。
43
+
44
+ ---
45
+
46
+ ## 命令调用
47
+
48
+ 浏览全部接口并打开本文档:
49
+
50
+ ```bash
51
+ sino-bc-cli /api-list
52
+ sino-bc-cli /api-list 1
53
+ sino-bc-cli /api-list biz-line-open-channels
54
+ ```
55
+
56
+ `/ic-api` 与 `/bc-api` 用法一致:交互选择接口后,向所选环境的网关地址发起请求。请求体默认使用各文档「请求示例」中的参数;`GET` 接口无请求体。
57
+
58
+ ```bash
59
+ # iCenter 接口(默认生产环境 + 内置 API Key)
60
+ sino-bc-cli /ic-api
61
+
62
+ # 业务线接口
63
+ sino-bc-cli /bc-api
64
+
65
+ # 指定环境(test / pre / prod)
66
+ sino-bc-cli /bc-api test
67
+
68
+ # 指定环境和 API Key
69
+ sino-bc-cli /bc-api pre sk-your-api-key
70
+
71
+ # 选项写法
72
+ sino-bc-cli /bc-api --env=test --api-key=sk-your-api-key
73
+ ```
74
+
75
+ | 参数 | 是否必传 | 默认值 | 说明 |
76
+ | --- | --- | --- | --- |
77
+ | `ENV` | 否 | `prod` | `test` / `pre` / `prod`,用于取 `src/constants/gateway.ts` 中的网关地址 |
78
+ | `API_KEY` | 否 | `src/constants/gateway.ts` 的 `DEFAULT_API_KEY` | 注入请求头 `Authorization: Bearer ${API_KEY}`;同时固定注入 `X-GATEWAY-TYPE: A2C-CLI` |
79
+
80
+ 执行后会按分组列出接口,输入序号后按所选环境网关发起调用,并打印响应。
@@ -0,0 +1,212 @@
1
+ # 业务线查询(Biz Line Open)
2
+
3
+ 数据来源:[sino-opti-hive 接口文档](https://o-test-sino-opti-hive.meetsocial.com/doc.html#/default/%E4%B8%9A%E5%8A%A1%E7%BA%BF%E6%9F%A5%E8%AF%A2/channelsUsingGET)
4
+
5
+ 对外开放的只读查询接口,共 **5** 个,均不涉及数据变更。
6
+
7
+ > **路由前缀**:经网关调用时所有路径需带 `/sino-opti-hive`,例如 `/sino-opti-hive/biz-line-open/channels`。
8
+
9
+ | # | name | 展示名 | 方法 | 路径(含前缀) |
10
+ | --- | --- | --- | --- | --- |
11
+ | 1 | `biz-line-open-channels` | 查询投放渠道列表 | GET | `/sino-opti-hive/biz-line-open/channels` |
12
+ | 2 | `biz-line-open-placement-categories` | 查询投放品类字典树 | GET | `/sino-opti-hive/biz-line-open/placement-categories` |
13
+ | 3 | `biz-line-open-list` | 查询业务线列表(不分页) | POST | `/sino-opti-hive/biz-line-open/list` |
14
+ | 4 | `biz-line-open-strategies` | 查询业务线投放策略及表现 | POST | `/sino-opti-hive/biz-line-open/strategies` |
15
+ | 5 | `biz-line-open-strategy-top` | 查询投放表现 Top 业务线 | POST | `/sino-opti-hive/biz-line-open/strategy-top` |
16
+
17
+ 所有接口统一返回 `RestResponseVO` 包装:`success`、`code`、`message`、`result`、`traceId`。下文只描述 `result`。
18
+
19
+ ---
20
+
21
+ ## 1. 查询投放渠道列表
22
+
23
+ `GET /sino-opti-hive/biz-line-open/channels`
24
+
25
+ 无入参,返回 `ChannelEnum` 全量。`code` 即业务线列表中的 `mediaChannelId`。
26
+
27
+ **响应 `result`:`ChannelOpenVO[]`**
28
+
29
+ | 字段 | 类型 | 说明 |
30
+ | --- | --- | --- |
31
+ | `code` | int | 渠道 code(= `ChannelEnum.id`),用于筛选业务线 `mediaChannelId` |
32
+ | `name` | string | 渠道名称 |
33
+
34
+ 示例片段:`{"code":1,"name":"Facebook"}`、`{"code":3,"name":"Google"}`、`{"code":18,"name":"TikTok"}`。
35
+
36
+ ---
37
+
38
+ ## 2. 查询投放品类字典树
39
+
40
+ `GET /sino-opti-hive/biz-line-open/placement-categories`
41
+
42
+ 无入参,`sceneCode` 固定 `PLACEMENT_CATEGORY`。一级节点 = 投放行业,二级节点(`children`)= 投放品类,分别对应筛选参数 `adCategoryIndustryId` / `adCategoryProjectId`。
43
+
44
+ **响应 `result`:`DictItemVO[]`**
45
+
46
+ | 字段 | 类型 | 说明 |
47
+ | --- | --- | --- |
48
+ | `id` | long | 字典项 ID |
49
+ | `name` | string | 字典项名称 |
50
+ | `itemCode` | string | 字典项编码 |
51
+ | `description` | string | 描述 |
52
+ | `isEnable` | int | 是否启用 |
53
+ | `isOther` | int | 是否为「其他」项 |
54
+ | `sortOrder` | int | 排序值 |
55
+ | `children` | `DictItemVO[]` | 二级节点(投放品类) |
56
+
57
+ 当前一级行业为:`1 = APP`、`2 = ECBR`、`3 = 游戏`。
58
+
59
+ ---
60
+
61
+ ## 3. 查询业务线列表(不分页)
62
+
63
+ `POST /sino-opti-hive/biz-line-open/list`
64
+
65
+ 按条件检索业务线主数据及关联主体、项目。入参均可选、多条件 AND,body 可为空表示查全部;无命中返回 `[]`。
66
+
67
+ **请求体:`BizLineOpenListReqVO`(可选)**
68
+
69
+ | 字段 | 类型 | 说明 |
70
+ | --- | --- | --- |
71
+ | `id` | long | 业务线主键 ID,精确匹配 |
72
+ | `idList` | long[] | 业务线 ID 多选;与 `id` 同时传时两者都生效(AND) |
73
+ | `name` | string | 业务/产品线名称,模糊匹配 |
74
+ | `mediaChannelId` | int | 投放渠道 ID,取值见 `/biz-line-open/channels` 的 `code` |
75
+ | `adCategoryIndustryId` | long | 投放行业字典项 ID(品类树一级节点) |
76
+ | `adCategoryProjectId` | long | 投放品类字典项 ID(二级节点)。传 `-1` 表示品类未选/其他 |
77
+
78
+ 请求示例(空对象 = 查全部):
79
+
80
+ ```json
81
+ {}
82
+ ```
83
+
84
+ **响应 `result`:`BizLineOpenListItemVO[]`**
85
+
86
+ | 字段 | 类型 | 说明 |
87
+ | --- | --- | --- |
88
+ | `id` | long | 业务线主键 ID |
89
+ | `name` | string | 业务/产品线名称 |
90
+ | `mediaChannelIds` / `mediaChannelNames` | int[] / string[] | 投放渠道 ID 与名称,下标一一对应 |
91
+ | `adCategoryIndustryIds` / `adCategoryIndustryDescs` | long[] / string[] | 投放行业 ID 与展示文案 |
92
+ | `adCategoryProjectIds` / `adCategoryProjectDescs` | long[] / string[] | 投放品类 ID 与展示文案 |
93
+ | `adCategoryOther` | string | 投放品类「其他」自定义文案 |
94
+ | `corporationIds` / `corporationNames` | string[] / string[] | 关联主体 ID 与名称 |
95
+ | `projectIds` / `projectNames` | long[] / string[] | 关联项目 ID 与名称 |
96
+ | `customerTypeIds` / `customerTypeDescs` | long[] / string[] | 客户类型 ID 与展示文案 |
97
+ | `customerInfrastructure` / `customerInfrastructureDescs` | int[] / string[] | 客户基建情况枚举与文案 |
98
+ | `projectRating` / `projectRatingDesc` | string / string | 项目评级(`ProjectRatingEnum`:S/A/B/C)与文案 |
99
+ | `strategyControlDegree` / `strategyControlDegreeDesc` | int / string | 策略掌控程度与文案 |
100
+ | `coreIndex` | string | 核心指标(原文) |
101
+ | `monthlyMaterialCount` | string | 月度上新素材量(原文) |
102
+
103
+ ---
104
+
105
+ ## 4. 查询业务线投放策略及表现(不分页)
106
+
107
+ `POST /sino-opti-hive/biz-line-open/strategies`
108
+
109
+ 按业务线 ID 集合查其全部未删除周策略及策略回顾,按 `year`、`weekOfYear` 倒序。不存在的 ID 静默忽略。周消耗、客户满意度与效果细节均在 `effectSummary`(无回顾时内部字段可能为 `null`)。
110
+
111
+ **请求体:`BizLineOpenStrategyReqVO`(必填)**
112
+
113
+ | 字段 | 类型 | 必填 | 说明 |
114
+ | --- | --- | --- | --- |
115
+ | `bizLineIds` | long[] | 是 | 业务线 ID 集合,非空。不存在的 ID 被忽略,不报错 |
116
+
117
+ 请求示例:
118
+
119
+ ```json
120
+ { "bizLineIds": [1251, 1250] }
121
+ ```
122
+
123
+ **响应 `result`:`BizLineOpenStrategyVO[]`**
124
+
125
+ | 字段 | 类型 | 说明 |
126
+ | --- | --- | --- |
127
+ | `bizLineId` / `bizLineName` | long / string | 所属业务线 ID 与名称 |
128
+ | `strategyWeek` | int | 策略归属年周,`year × 100 + weekOfYear`,如 2026 年第 1 周 = `202601` |
129
+ | `budgetStrategyTagDescs` / `budgetStrategySupplement` | string[] / string | 预算策略标签文案、补充说明 |
130
+ | `audienceStrategyTagDescs` / `audienceStrategySupplement` | string[] / string | 受众定位策略标签文案、补充说明 |
131
+ | `mediaStrategyTagDescs` / `mediaStrategySupplement` | string[] / string | 媒介产品策略标签文案、补充说明 |
132
+ | `creativeStrategy` | string | 素材创意策略说明(原文) |
133
+ | `effectSummary` | object | 投放策略效果总结:周消耗、客户满意度、红绿灯、核心问题、各维度效果及 Learning |
134
+
135
+ ---
136
+
137
+ ## 5. 查询投放表现 Top 业务线
138
+
139
+ `POST /sino-opti-hive/biz-line-open/strategy-top`
140
+
141
+ 在指定投放行业 / 投放品类范围内排出 Top N 业务线,并给出其表现最好那段窗口期采用的投放策略。
142
+
143
+ - **筛选**:`adCategoryIndustryId`、`adCategoryProjectId` 至少传一个;**行业优先**——传了行业则按整个行业横向比较并忽略品类,只传品类时才按品类比较。`excludeBizLineIds` 可选。
144
+ - **口径**:默认回溯最近 52 周,按连续策略记录滑动 4 期窗口打分,取历史最佳窗口成绩,故「前期长期良好、最近一两期回落」仍能上榜;最近 2 期出现红灯或客户不满意时总分打 9 折(`recentDeclined` / `penaltyApplied` 标记)。
145
+ - **出参**:计数与占比均为最佳窗口内口径;策略标签与补充说明为窗口内各期聚合去重,`periods` 给出逐期明细。范围内无数据返回 `[]`。
146
+ - **分值表与排名规则**:见[飞书接口文档](https://q6y68vu0j8.feishu.cn/wiki/HboRwmijkiAa1wktfvSclyXxntg)。
147
+
148
+ **请求体:`BizLineStrategyTopReqVO`(必填)**
149
+
150
+ | 字段 | 类型 | 默认 | 说明 |
151
+ | --- | --- | --- | --- |
152
+ | `adCategoryIndustryId` | long | — | 投放行业字典 ID(一级)。传入时按整个行业比较,并忽略 `adCategoryProjectId` |
153
+ | `adCategoryProjectId` | long | — | 投放品类字典 ID(二级)。仅在未传 `adCategoryIndustryId` 时生效 |
154
+ | `excludeBizLineIds` | long[] | — | 排除的业务线 ID,不参与排名 |
155
+ | `topN` | int | `5` | 返回条数,取值 1~50 |
156
+ | `windowWeeks` | int | `4` | 滑动窗口期数,取值 2~12 |
157
+ | `lookbackWeeks` | int | `52` | 回溯周数(含当前周),取值 4~104 |
158
+ | `minReviewedPeriods` | int | `1` | 样本门槛:窗口内至少几期有回顾数据,取值 1~12 |
159
+
160
+ 请求示例:
161
+
162
+ ```json
163
+ {
164
+ "adCategoryIndustryId": 1,
165
+ "topN": 5,
166
+ "windowWeeks": 4,
167
+ "lookbackWeeks": 52,
168
+ "minReviewedPeriods": 1
169
+ }
170
+ ```
171
+
172
+ **响应 `result`:`BizLineStrategyTopItemVO[]`**
173
+
174
+ | 字段 | 类型 | 说明 |
175
+ | --- | --- | --- |
176
+ | `rank` | int | 排名,从 1 开始 |
177
+ | `bizLineId` / `bizLineName` | long / string | 业务线 ID 与名称 |
178
+ | `score` | number | 最终得分(排序主键):`rawScore`,近期回落时乘 0.9,保留两位小数 |
179
+ | `rawScore` | int | 最佳窗口原始得分(未打折) |
180
+ | `penaltyApplied` | boolean | 是否已按近期回落打 9 折 |
181
+ | `recentDeclined` | boolean | 回溯范围内最后 2 期是否出现红灯或客户不满意 |
182
+ | `bestWindowStartWeek` / `bestWindowEndWeek` | int / int | 最佳窗口起止周 `yyyyW` |
183
+ | `windowPeriods` / `reviewedPeriods` / `lookbackPeriods` | int | 窗口内策略期数 / 有回顾期数 / 回溯范围内总期数 |
184
+ | `greenCount` / `yellowCount` / `redCount` | int | 窗口内绿灯 / 黄灯 / 红灯期数 |
185
+ | `greenRate` | number | 绿灯占比(%)= `greenCount ÷ reviewedPeriods × 100`;分母为 0 返回 `null` |
186
+ | `maxConsecutiveGreenPeriods` | int | 窗口内最长连续绿灯期数 |
187
+ | `satisfiedCount` / `unsatisfiedCount` | int | 窗口内客户满意 / 不满意期数 |
188
+ | `satisfiedRate` | number | 满意占比(%);分母为 0 返回 `null` |
189
+ | `adCategoryIndustryDescs` / `adCategoryProjectDescs` | string[] | 投放行业 / 品类展示文案 |
190
+ | `budgetStrategyTagDescs` / `budgetStrategySupplements` | string[] | 最佳窗口内预算策略标签与补充说明(去重合并) |
191
+ | `audienceStrategyTagDescs` / `audienceStrategySupplements` | string[] | 最佳窗口内受众定位策略标签与补充说明(去重合并) |
192
+ | `mediaStrategyTagDescs` / `mediaStrategySupplements` | string[] | 最佳窗口内媒介产品策略标签与补充说明(去重合并) |
193
+ | `creativeStrategies` | string[] | 最佳窗口内素材创意策略说明(去重合并) |
194
+ | `periods` | object[] | 最佳窗口内逐期策略明细,按周升序(含当期红绿灯与满意度) |
195
+
196
+ **红绿灯枚举(`TrafficLightEnum`)**:`1` KPI 达标、`2` 距 GAP 20% 内、`3` 距 GAP 20% 以上、`4` 已暂停、`5` 存在风险、`6` KPI 达标且项目顺利。绿灯 = `1`/`6`,黄灯 = `2`/`5`,红灯 = `3`/`4`。
197
+
198
+ **客户满意度枚举(`CustomerSatisfactionEnum`)**:`1` 满意、`2` 不满意。
199
+
200
+ ---
201
+
202
+ ## 命令调用
203
+
204
+ ```bash
205
+ # 默认生产环境 + 内置 API Key,交互选择接口
206
+ sino-bc-cli /bc-api
207
+
208
+ # 指定环境(test / pre / prod)
209
+ sino-bc-cli /bc-api test
210
+ ```
211
+
212
+ 详见 [README.md](./README.md)。