sino-bc-cli 1.8.8 → 1.8.10

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 CHANGED
@@ -322,10 +322,10 @@ sino-bc-cli /init
322
322
 
323
323
  | 命令 | 说明 |
324
324
  | :---------- | :-------------------------------------------------------------------------------------------- |
325
- | `/init` | 注册唯一技能 `sino-bc-cli` 到 Agent 技能目录(并删除旧平级 `sino-bc-shared` / `sino-bc-<domain>`),交互设置环境 / `API_KEY` |
325
+ | `/init` | 注册唯一技能 `sino-bc-cli` 到 Agent 技能目录(并删除旧平级 `sino-bc-shared` / `sino-bc-<domain>`),交互设置环境 / `API_KEY` / `APIFOX_TOKEN` |
326
326
  | `/skill` | 列出包内 Agent 技能;传入 name 打开对应 `SKILL.md` |
327
327
  | `/get-config` | 查看变量配置;密钥默认打码,`--show-secret` 显示明文,`--json` 输出 JSON |
328
- | `/set-config` | 修改变量配置(环境 / API_KEY / 维护者的 `apifox-token`);不带参数时逐项交互修改环境与 API_KEY |
328
+ | `/set-config` | 修改变量配置(环境 / API_KEY / 维护者的 `APIFOX_TOKEN`);不带参数时逐项交互修改环境与 API_KEY;`/set-config APIFOX_TOKEN` 省略取值写入内置默认 |
329
329
  | `/uninstall` | 删除技能目录与变量配置文件,并从全局 npm 卸载本 CLI |
330
330
  | `/bc-api` | **已下线**。只打印迁移提示并非 0 退出,改用 `biz-line +<shortcut>` 或 `biz-line api <name>` |
331
331
 
@@ -348,8 +348,8 @@ sino-bc-cli /init
348
348
  | 参数 | 说明 |
349
349
  | :--- | :--- |
350
350
  | `--format json\|table` | 输出格式。TTY 默认 `table`,非 TTY 默认 `json` |
351
- | `--dry-run` | 只打印将要发起的 method / URL / 请求体,不发请求 |
352
- | `--yes` | 跳过写操作确认,直接发起请求 |
351
+ | `--dry-run` | 走与真实请求相同的本地 dry-run,只打印将要发起的 method / URL / 请求体,不发请求 |
352
+ | `--yes` | 跳过写操作确认;本地 dry-run 通过后发起请求 |
353
353
 
354
354
  ### 输出契约与退出码
355
355
 
@@ -376,7 +376,7 @@ sino-bc-cli /init
376
376
  | :--- | :--------- | :----- | :--- |
377
377
  | `env` | `env` | `prod` | 目标环境,可选 `test` / `pre` / `prod` |
378
378
  | `apiKey` | `api-key` | 内置默认 Key | 网关鉴权用的 API Key(业务命令使用) |
379
- | `apifoxToken` | `apifox-token` | 空 | 仅维护者同步接口文档用(`npm run sync-api-doc`),与业务调用无关;`/init` 不会询问它 |
379
+ | `apifoxToken` | `apifox-token` / `APIFOX_TOKEN` | 未配置为空;`/init` 或 `/set-config` 省略取值时写入内置默认 | 仅维护者同步接口文档用(`npm run sync-api-doc`),与业务调用无关;`/init` 会询问,裸 `/set-config` 不问 |
380
380
 
381
381
  ```bash
382
382
  # 查看(密钥打码)
@@ -390,11 +390,12 @@ sino-bc-cli /set-config --env=test
390
390
  # 不带参数则逐项交互修改,直接回车保留当前值(只问环境与 API_KEY)
391
391
  sino-bc-cli /set-config
392
392
 
393
- # 维护者才需要:配置 Apifox token(默认打码,--show-secret 看明文)
393
+ # 维护者才需要:配置 Apifox token(省略取值写入内置默认;默认打码,--show-secret 看明文)
394
+ sino-bc-cli /set-config APIFOX_TOKEN
394
395
  sino-bc-cli /set-config apifox-token <你的 token>
395
396
  ```
396
397
 
397
- > `/init` 在非交互环境(npm `postinstall`、CI、Agent 调用)下不提问:配置文件已存在则保持不变,不存在则按默认值创建。
398
+ > `/init` 在非交互环境(npm `postinstall`、CI、Agent 调用)下不提问:已有配置保持,但空的 `apifoxToken` 会补上内置默认;不存在则按默认值创建(含 `APIFOX_TOKEN`)。
398
399
 
399
400
  ### 全局选项
400
401
 
package/dist/SKILL.md CHANGED
@@ -25,20 +25,23 @@ sino-bc-cli/
25
25
  ├── SKILL.md ← 本文件
26
26
  ├── sino-bc-shared/ 横切:配置、信封、确认门
27
27
  ├── sino-bc-biz-line/ 业务线、周策略、投放渠道/品类、关联项目、广告策略维度与成效
28
- └── sino-bc-sso/ SSO 组别
28
+ ├── sino-bc-sso/ SSO 组别
29
+ └── biz-line-strategy-generate/ 业务线策略生成编排(四大策略+效果learning,导出 Excel)
29
30
  ```
30
31
 
31
32
  ## 运行环境
32
33
 
33
- `sino-bc-cli` 装在用户电脑、服务器本机,或被内嵌进 Agent 沙箱,不保证出现在当前默认执行面。先按下表选执行面,找到命令再进入「怎么跑」。
34
-
35
- | 当前环境 | 怎么拿 CLI |
36
- | --- | --- |
37
- | 豆包工作伙伴 | **优先查沙箱外**本机 CLI。本 CLI 装在用户电脑,沙箱镜像里通常没有。 |
38
- | 其他 Agent 已把本 CLI 内嵌进沙箱 | 在**当前沙箱**直接执行。 |
39
- | Linux 服务器或未识别环境(走兜底) | **先查沙箱**;沙箱没有再查本机环境。 |
40
-
41
- 对得上前两行就按前两行;认不准时走 Linux 兜底。沙箱里找不到不要在沙箱里 `npm i`,也不要改去拼 HTTP。两边都没有:提示在本机安装 `npm i sino-bc-cli@latest -g`。
34
+ 【sino-bc-cli 执行规则(最高优先级,适用于所有环境)】
35
+ 1. 所有 sino-bc-cli 操作前,先读取 ~/.agents/skills/sino-bc-cli/ 对应 SKILL.md。
36
+ 2. 统一探测流程(不按环境预设):
37
+ ① 先在当前执行面运行 `which sino-bc-cli` 探测:
38
+ - 存在 → 直接在当前执行面执行命令;
39
+ - 不存在 → 进入第②步。
40
+ ② 探测本机:用提权方式(require_escalated)运行 `which sino-bc-cli`:
41
+ - 存在 → 所有命令一律带 require_escalated 在本机执行;
42
+ - 不存在 → 提示安装 `npm i sino-bc-cli@latest -g`,不得改用其他方式。
43
+ 3. 严禁自行拼 HTTP 调网关;写操作须用户确认后再加 --yes。
44
+ 4. 命令失败时:若是沙箱资源类错误(如 Too many open files),等待后重试,不得降级或跳过;其他错误按报错修正。
42
45
 
43
46
  ## 怎么跑
44
47
 
@@ -57,6 +60,7 @@ CLI 未安装:`npm i sino-bc-cli@latest -g`(Node.js >= 24)。技能未出
57
60
  | 投放渠道/品类、业务线列表/详情/状态、周策略增删改查与策略生成、策略周期/消耗/红绿灯、关联项目/优化项目 | [`sino-bc-biz-line/SKILL.md`](sino-bc-biz-line/SKILL.md) | `biz-line +<shortcut>` |
58
61
  | Facebook / Google / TikTok 广告策略维度(目标、出价、定向等配置分布)或广告策略成效(消耗、曝光、点击等) | 同上 | `biz-line +<shortcut>`(维度 / 成效) |
59
62
  | SSO 组别 | [`sino-bc-sso/SKILL.md`](sino-bc-sso/SKILL.md) | `sso +group-list` |
63
+ | 给业务线批量生成投放策略(四大策略+效果learning)并导出 Excel | [`biz-line-strategy-generate/SKILL.md`](biz-line-strategy-generate/SKILL.md) | 编排多个 `biz-line` 接口,非单条 Shortcut |
60
64
 
61
65
  不要用本技能处理:本仓库源码开发、扩展命令、npm 发版(见仓库 `README.md` / `ReleaseSteps.md`)。
62
66
 
@@ -22,13 +22,13 @@
22
22
 
23
23
  ## +update
24
24
 
25
- - **WHEN**:编辑业务线 (写操作需 --yes)
25
+ - **WHEN**:更新业务线 (写操作需 --yes)
26
26
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
27
27
  - **示例**:`sino-bc-cli biz-line +update --data '{...}'`
28
28
 
29
29
  ## +status
30
30
 
31
- - **WHEN**:切换业务线状态 (写操作需 --yes)
31
+ - **WHEN**:更新业务线状态 (写操作需 --yes)
32
32
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
33
33
  - **示例**:`sino-bc-cli biz-line +status --data '{...}'`
34
34
 
@@ -38,39 +38,33 @@
38
38
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
39
39
  - **示例**:`sino-bc-cli biz-line +delete --data '{...}'`
40
40
 
41
- ## +period-list
42
-
43
- - **WHEN**:策略周期列表
44
- - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
45
- - **示例**:`sino-bc-cli biz-line +period-list --data '{...}'`
46
-
47
41
  ## +strategies
48
42
 
49
- - **WHEN**:查询策略分页列表
43
+ - **WHEN**:查询投放策略分页列表
50
44
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
51
45
  - **示例**:`sino-bc-cli biz-line +strategies --data '{...}'`
52
46
 
53
47
  ## +spend
54
48
 
55
- - **WHEN**:策略周期内关联项目周表消耗汇总
49
+ - **WHEN**:查询投放策略消耗信息
56
50
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
57
51
  - **示例**:`sino-bc-cli biz-line +spend --data '{...}'`
58
52
 
59
53
  ## +strategy-save
60
54
 
61
- - **WHEN**:新建策略 (写操作需 --yes)
55
+ - **WHEN**:新建投放策略 (写操作需 --yes)
62
56
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
63
57
  - **示例**:`sino-bc-cli biz-line +strategy-save --data '{...}'`
64
58
 
65
59
  ## +strategy-update
66
60
 
67
- - **WHEN**:编辑策略 (写操作需 --yes)
61
+ - **WHEN**:更新投放策略 (写操作需 --yes)
68
62
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
69
63
  - **示例**:`sino-bc-cli biz-line +strategy-update --data '{...}'`
70
64
 
71
65
  ## +strategy-delete
72
66
 
73
- - **WHEN**:删除策略 (写操作需 --yes)
67
+ - **WHEN**:删除投放策略 (写操作需 --yes)
74
68
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
75
69
  - **示例**:`sino-bc-cli biz-line +strategy-delete --data '{...}'`
76
70
 
@@ -82,19 +76,19 @@
82
76
 
83
77
  ## +categories
84
78
 
85
- - **WHEN**:查询投放品类字典树
79
+ - **WHEN**:查询投放品类字典
86
80
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
87
81
  - **示例**:`sino-bc-cli biz-line +categories`
88
82
 
89
83
  ## +project-list
90
84
 
91
- - **WHEN**:业务线关联项目列表
85
+ - **WHEN**:查询业务线关联项目和广告账号
92
86
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
93
87
  - **示例**:`sino-bc-cli biz-line +project-list --data '{...}'`
94
88
 
95
89
  ## +queryByPage
96
90
 
97
- - **WHEN**:查询优化项目分页列表
91
+ - **WHEN**:查询项目分页列表
98
92
  - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
99
93
  - **示例**:`sino-bc-cli biz-line +queryByPage --data '{...}'`
100
94
 
@@ -10,10 +10,10 @@
10
10
 
11
11
  `GET /sino-opti-hive/biz-line-open/channels`
12
12
 
13
- 无入参,返回 ChannelEnum 全量:code = 枚举 id(即 list 的 mediaChannelId),name = 渠道名称。
13
+ 查询投放渠道列表
14
14
 
15
- ## 2. 查询投放品类字典树
15
+ ## 2. 查询投放品类字典
16
16
 
17
17
  `GET /sino-opti-hive/biz-line-open/placement-categories`
18
18
 
19
- 无入参,sceneCode 固定 PLACEMENT_CATEGORY。一级节点 = 投放行业,二级节点(children)= 投放品类,分别对应筛选参数 adCategoryIndustryId / adCategoryProjectId。已过滤 isOther=1 的「其他」。叶子节点 children 为 null。
19
+ 查询投放品类字典,sceneCode 固定 PLACEMENT_CATEGORY。一级节点 = 投放行业,二级节点(children)= 投放品类,分别对应筛选参数 adCategoryIndustryId / adCategoryProjectId。已过滤 isOther=1 的「其他」。叶子节点 children 为 null。
@@ -10,11 +10,7 @@
10
10
 
11
11
  `POST /sino-opti-hive/biz-line/list`
12
12
 
13
- result 为公司分页对象:total=总条数,result=当前页的 BizLineListVO 列表。
14
-
15
- 核心指标字段有两个,含义不同不要混用:coreIndex = 业务线核心指标(业务线维度的 KPI 口径说明,来源业务线配置,与策略周期无关);coreEffectIndex = 当期策略回顾里的核心效果指标(随策略周期变化,另有 prevCoreEffectIndex 为上期值)。
16
-
17
- 需要查看某条业务线下挂了哪些项目及其广告账号时,用 result.result[].id 调 POST /sino-opti-hive/biz-line/project-list。
13
+ 查询业务线分页列表。需要查询业务线关联项目和广告账号,使用业务线ID查询【业务线关联项目列表】。
18
14
 
19
15
  **请求体**
20
16
 
@@ -42,7 +38,13 @@ result 为公司分页对象:total=总条数,result=当前页的 BizLineList
42
38
 
43
39
  `POST /sino-opti-hive/biz-line/detail`
44
40
 
45
- result 为 BizLineDetailVO。
41
+ 业务线详情
42
+
43
+ **请求体**
44
+
45
+ | 字段 | 类型 | 说明 |
46
+ | --- | --- | --- |
47
+ | `id` | integer | |
46
48
 
47
49
  ## 3. 新建业务线
48
50
 
@@ -50,35 +52,96 @@ result 为 BizLineDetailVO。
50
52
 
51
53
  ⚠️ 写操作。成功时 result 为新建业务线详情 BizLineDetailVO。
52
54
 
53
- ## 4. 编辑业务线
55
+ **请求体**
56
+
57
+ | 字段 | 类型 | 说明 |
58
+ | --- | --- | --- |
59
+ | `name` | string | 业务线名称,业务/产品线名称不可重复 |
60
+ | `mediaChannels` | array | 投放渠道 code。通过 GET /sino-opti-hive/biz-line-open/channels 取 code;名称见同接口 name |
61
+ | `strategyControlDegree` | integer | 策略掌控程度:1弱(以客户策略为主) 2强(以我方提供策略) 3中(与客户共创) |
62
+ | `adCategoryIndustryIds` | array | 投放行业 ID。通过 GET /sino-opti-hive/biz-line-open/placement-categories 取一级节点 id |
63
+ | `adCategoryProjectIds` | array | 投放品类 ID。通过 GET /sino-opti-hive/biz-line-open/placement-categories 取二级 children.id;选其他时可为空,改填 adCategoryOther |
64
+ | `adCategoryOther` | string | 投放品类-其他说明 |
65
+ | `customerTypeIds` | array | 客户类型 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=CUSTOMER_TYPE 取 id |
66
+ | `customerTypeOther` | string | 客户类型-其他说明 |
67
+ | `amUserIds` | array | AM 用户 ID。通过 POST /sino-opti-hive/sso-team/getMemberList 取 userId;也可 POST /sino-opti-hive/user/getSsoUserList 按姓名搜 |
68
+ | `pmUserIds` | array | PM 用户 ID。通过 POST /sino-opti-hive/sso-team/getMemberList 取 userId;也可 POST /sino-opti-hive/user/getSsoUserList 按姓名搜 |
69
+ | `customerInfrastructure` | array | 1=数据追踪方式:AdJust,2=数据追踪方式:AF,3=数据追踪方式:其他MMP,4=数据追踪方式:客户BI,5=数据追踪方式:媒体后台,6=素材产出方式:CB,7=素材产出方式:客户提供,8=素材产出方式:内部设计师制作,9=素材产出方式:无需素材(ASA、推流等),10=基建情况:基建完善,11=基建情况:三方回传数据异常,12=基建情况:APP埋点异常 |
70
+ | `coreIndex` | string | 核心指标 |
71
+ | `monthlyMaterialCount` | string | 月度上新素材量 |
72
+ | `projectInitStatus` | string | 项目初始化状态 |
73
+ | `projectBrief` | string | 项目 Brief |
74
+ | `corporationIds` | array | 关联签约主体 ID(字符串)。通过 POST /sino-opti-hive/corporation/page 获取签约主体 ID |
75
+ | `projectIds` | array | 关联项目 ID |
76
+ | `ssoTeamCode` | string | 组别 code,单选,必填。通过 GET /sino-opti-hive/sso-team/group-list 取 code |
77
+ | `businessRegion` | string | EAST_CHINA=华东,SOUTH_CHINA=华南,NORTH_CHINA=华北。必填 |
78
+ | `projectRating` | string | S、A、B、C。非新客必填 |
79
+ | `newCustomerTag` | string | NEW_TAG=是(新客),NONE_NEW_TAG=否(非新客) |
80
+
81
+ ## 4. 更新业务线
54
82
 
55
83
  `POST /sino-opti-hive/biz-line/update`
56
84
 
57
- ⚠️ 写操作。成功时 result 为 Boolean,表示是否更新成功。
85
+ 更新业务线信息
58
86
 
59
- ## 5. 切换业务线状态
87
+ **请求体**
88
+
89
+ | 字段 | 类型 | 说明 |
90
+ | --- | --- | --- |
91
+ | `id` | integer | 通过 POST /sino-opti-hive/biz-line/list 取 result.id |
92
+ | `status` | integer | 状态:1进行中 2已完成 3已暂停 |
93
+ | `name` | string | 业务线名称,业务/产品线名称不可重复 |
94
+ | `mediaChannels` | array | 投放渠道 code。通过 GET /sino-opti-hive/biz-line-open/channels 取 code;名称见同接口 name |
95
+ | `strategyControlDegree` | integer | 策略掌控程度:1弱(以客户策略为主) 2强(以我方提供策略) 3中(与客户共创) |
96
+ | `adCategoryIndustryIds` | array | 投放行业 ID。通过 GET /sino-opti-hive/biz-line-open/placement-categories 取一级节点 id |
97
+ | `adCategoryProjectIds` | array | 投放品类 ID。通过 GET /sino-opti-hive/biz-line-open/placement-categories 取二级 children.id;选其他时可为空,改填 adCategoryOther |
98
+ | `adCategoryOther` | string | 投放品类-其他说明 |
99
+ | `customerTypeIds` | array | 客户类型 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=CUSTOMER_TYPE 取 id |
100
+ | `customerTypeOther` | string | 客户类型-其他说明 |
101
+ | `amUserIds` | array | AM 用户 ID。通过 POST /sino-opti-hive/sso-team/getMemberList 取 userId;也可 POST /sino-opti-hive/user/getSsoUserList 按姓名搜 |
102
+ | `pmUserIds` | array | PM 用户 ID。通过 POST /sino-opti-hive/sso-team/getMemberList 取 userId;也可 POST /sino-opti-hive/user/getSsoUserList 按姓名搜 |
103
+ | `customerInfrastructure` | array | 1=数据追踪方式:AdJust,2=数据追踪方式:AF,3=数据追踪方式:其他MMP,4=数据追踪方式:客户BI,5=数据追踪方式:媒体后台,6=素材产出方式:CB,7=素材产出方式:客户提供,8=素材产出方式:内部设计师制作,9=素材产出方式:无需素材(ASA、推流等),10=基建情况:基建完善,11=基建情况:三方回传数据异常,12=基建情况:APP埋点异常 |
104
+ | `coreIndex` | string | 核心指标 |
105
+ | `monthlyMaterialCount` | string | 月度上新素材量 |
106
+ | `projectInitStatus` | string | 项目初始化状态 |
107
+ | `projectBrief` | string | 项目 Brief |
108
+ | `corporationIds` | array | 关联签约主体 ID(字符串)。通过 POST /sino-opti-hive/corporation/page 获取签约主体 ID |
109
+ | `projectIds` | array | 关联项目 ID。通过 POST /sino-opti-hive/optimize/project/queryByPage 获取;按 ID 反查名称用 POST /sino-opti-hive/optimize/project/listByIds |
110
+ | `ssoTeamCode` | string | 组别 code,单选,必填。通过 GET /sino-opti-hive/sso-team/group-list 取 code |
111
+ | `businessRegion` | string | EAST_CHINA=华东,SOUTH_CHINA=华南,NORTH_CHINA=华北。必填 |
112
+ | `projectRating` | string | S、A、B、C。非新客必填 |
113
+ | `newCustomerTag` | string | NEW_TAG=是(新客),NONE_NEW_TAG=否(非新客) |
114
+
115
+ ## 5. 更新业务线状态
60
116
 
61
117
  `POST /sino-opti-hive/biz-line/status/update`
62
118
 
63
119
  ⚠️ 写操作。仅更新状态与操作人;成功时 result 为 Boolean。status:1进行中 2已完成 3已暂停。
64
120
 
121
+ **请求体**
122
+
123
+ | 字段 | 类型 | 说明 |
124
+ | --- | --- | --- |
125
+ | `id` | integer | |
126
+ | `status` | integer | 状态:1进行中 2已完成 3已暂停;对应 BizLineStatusEnum |
127
+
65
128
  ## 6. 删除业务线
66
129
 
67
130
  `POST /sino-opti-hive/biz-line/del`
68
131
 
69
132
  ⚠️ 写操作。成功时 result 为 Boolean,表示是否删除成功。
70
133
 
71
- ## 7. 策略周期列表
72
-
73
- `POST /sino-opti-hive/biz-line/strategy/period-list`
134
+ **请求体**
74
135
 
75
- result 为 BizLineStrategyPeriodListVO,含 items 与 total。
136
+ | 字段 | 类型 | 说明 |
137
+ | --- | --- | --- |
138
+ | `id` | integer | |
76
139
 
77
- ## 8. 查询策略分页列表
140
+ ## 7. 查询投放策略分页列表
78
141
 
79
142
  `POST /sino-opti-hive/biz-line/strategy/list`
80
143
 
81
- result 为公司分页对象:total=总条数,result=当前页的 BizLineStrategyDetailVO 列表。
144
+ 查询投放策略分页列表
82
145
 
83
146
  **请求体**
84
147
 
@@ -86,67 +149,174 @@ result 为公司分页对象:total=总条数,result=当前页的 BizLineStra
86
149
  | --- | --- | --- |
87
150
  | `pageNum` | integer | 页码,从 1 开始 |
88
151
  | `pageSize` | integer | 每页条数 |
89
- | `sortDirection` | string | DESC 或 ASC,默认 DESC |
90
- | `bizLineId` | integer | 可选。不传则按权限查全部可见业务线。通过 POST /sino-opti-hive/biz-line/list 取 result.id |
152
+ | `sortDirection` | string | 创建日期排序 DESC 或 ASC,默认 DESC |
153
+ | `bizLineId` | integer | 可选,不传则按权限查全部可见业务线。 |
91
154
  | `trafficLight` | integer | 红绿灯筛选(策略表现):1=绿灯KPI达标,2=黄灯距KPIGAP20%内,3=红灯距KPIGAP20%以上,4=红灯已暂停,5=黄灯存在风险,6=绿灯KPI达标且项目顺利。 |
92
155
 
93
- ## 9. 策略周期内关联项目周表消耗汇总
156
+ ## 8. 查询投放策略消耗信息
94
157
 
95
158
  `POST /sino-opti-hive/biz-line/strategy/spend`
96
159
 
97
- result 为 BizLineStrategySpendVO,含 totalSpend。
160
+ 查询投放策略消耗信息
161
+
162
+ **请求体**
163
+
164
+ | 字段 | 类型 | 说明 |
165
+ | --- | --- | --- |
166
+ | `strategyId` | integer | 通过 POST /sino-opti-hive/biz-line/strategy/list 取 result.id,或 POST /sino-opti-hive/biz-line/strategy/period-list 取 items.id |
98
167
 
99
- ## 10. 新建策略
168
+ ## 9. 新建投放策略
100
169
 
101
170
  `POST /sino-opti-hive/biz-line/strategy/save`
102
171
 
103
- ⚠️ 写操作。成功时 result 为 Boolean,表示是否保存成功。
172
+ 新建投放策略,投放策略按周填写
104
173
 
105
- ## 11. 编辑策略
174
+ **请求体**
175
+
176
+ | 字段 | 类型 | 说明 |
177
+ | --- | --- | --- |
178
+ | `bizLineId` | integer | 通过 POST /sino-opti-hive/biz-line/list 取 result.id |
179
+ | `periodStart` | string | 策略周期起(日期) |
180
+ | `periodEnd` | string | 策略周期止(日期) |
181
+ | `budgetStrategyTags` | array | 预算策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=BUDGET_STRATEGY 取 id |
182
+ | `budgetStrategySupplement` | string | 预算策略补充说明 |
183
+ | `mediaStrategyTags` | array | 媒介策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=MEDIA_STRATEGY 取 id |
184
+ | `mediaStrategySupplement` | string | 媒介策略补充说明 |
185
+ | `audienceStrategyTags` | array | 受众策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=AUDIENCE_STRATEGY 取 id |
186
+ | `audienceStrategySupplement` | string | 受众策略补充说明 |
187
+ | `creativeStrategy` | string | 素材创意策略说明,最大 5000 字 |
188
+ | `previewPeriodStart` | string | 上期(preview)策略周期起;缺省为本期 periodStart 的上一自然周周一 |
189
+ | `previewPeriodEnd` | string | 上期(preview)策略周期止;缺省为 previewPeriodStart+6(周日) |
190
+ | `previewBudgetStrategyTags` | array | 上期预算策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=BUDGET_STRATEGY 取 id |
191
+ | `previewBudgetStrategySupplement` | string | 上期预算策略补充说明 |
192
+ | `previewMediaStrategyTags` | array | 上期媒介策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=MEDIA_STRATEGY 取 id |
193
+ | `previewMediaStrategySupplement` | string | 上期媒介策略补充说明 |
194
+ | `previewAudienceStrategyTags` | array | 上期受众策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=AUDIENCE_STRATEGY 取 id |
195
+ | `previewAudienceStrategySupplement` | string | 上期受众策略补充说明 |
196
+ | `previewCreativeStrategy` | string | 上期素材创意策略说明,最大 5000 字 |
197
+ | `trafficLight` | integer | 红绿灯:1 KPI达标、2 距GAP 20%内、3 距GAP 20%以上、4 已暂停、5 存在风险、6 KPI达标且项目顺利 |
198
+ | `coreIssueCategories` | array | 1=受众策略问题,2=跨媒介策略问题,3=媒介广告产品使用策略问题,4=出价策略问题,5=素材策略问题,6=素材执行问题,7=素材管理问题,8=投放规划问题,9=媒体素材政策/尺度/风控问题,10=媒体适配/潜力问题,11=市场选择/竞争问题,12=客户对接不顺畅,13=客户侧:数据对接问题,14=客户侧:产品问题/投放生命周期问题,15=客户侧:运营/基建问题,16=客户侧:存在投放限制,17=客户侧:转自投,18=客户侧:需求临时无规划,19=客户侧:KPI不合理,20=投放生命周期问题/素材疲劳问题,21=内部团队人员调配问题,22=其他 |
199
+ | `issuesAndOpportunities` | string | 项目问题&机会,最大 5000 字 |
200
+ | `spend` | string | 周期投放消耗(回顾,展示用字符串),最大 50 字 |
201
+ | `customerSatisfaction` | integer | 客户满意度:1满意 2不满意 |
202
+ | `satisfactionReason` | string | 满意度原因说明,最大 5000 字 |
203
+ | `coreEffectIndex` | string | 核心效果指标,最大 5000 字 |
204
+ | `budgetStrategyEffect` | integer | 预算策略效果:1有效 2无效 3待观察 |
205
+ | `budgetStrategyLearning` | string | 预算策略 learning |
206
+ | `mediaStrategyEffect` | integer | 媒介策略效果:1有效 2无效 3待观察 |
207
+ | `mediaStrategyLearning` | string | 媒介策略 learning |
208
+ | `audienceStrategyEffect` | integer | 受众策略效果:1有效 2无效 3待观察 |
209
+ | `audienceStrategyLearning` | string | 受众策略 learning |
210
+ | `creativeStrategyEffect` | integer | 素材策略效果:1有效 2无效 3待观察 |
211
+ | `creativeStrategyLearning` | string | 素材策略 learning |
212
+
213
+ ## 10. 更新投放策略
106
214
 
107
215
  `POST /sino-opti-hive/biz-line/strategy/update`
108
216
 
109
- ⚠️ 写操作。成功时 result 为 Boolean。version 为乐观锁;overwrite=true 强制覆盖。
217
+ 更新投放策略
218
+
219
+ **请求体**
110
220
 
111
- ## 12. 删除策略
221
+ | 字段 | 类型 | 说明 |
222
+ | --- | --- | --- |
223
+ | `id` | integer | 通过 POST /sino-opti-hive/biz-line/strategy/list 取 result.id,或 POST /sino-opti-hive/biz-line/strategy/period-list 取 items.id |
224
+ | `version` | integer | 乐观锁版本号 |
225
+ | `overwrite` | boolean | 默认 false:版本冲突则报错;true 强制覆盖 |
226
+ | `bizLineId` | integer | 通过 POST /sino-opti-hive/biz-line/list 取 result.id |
227
+ | `periodStart` | string | 策略周期起(日期) |
228
+ | `periodEnd` | string | 策略周期止(日期) |
229
+ | `budgetStrategyTags` | array | 预算策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=BUDGET_STRATEGY 取 id |
230
+ | `budgetStrategySupplement` | string | 预算策略补充说明 |
231
+ | `mediaStrategyTags` | array | 媒介策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=MEDIA_STRATEGY 取 id |
232
+ | `mediaStrategySupplement` | string | 媒介策略补充说明 |
233
+ | `audienceStrategyTags` | array | 受众策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=AUDIENCE_STRATEGY 取 id |
234
+ | `audienceStrategySupplement` | string | 受众策略补充说明 |
235
+ | `creativeStrategy` | string | 素材创意策略说明,最大 5000 字 |
236
+ | `previewPeriodStart` | string | 上期(preview)策略周期起;缺省为本期 periodStart 的上一自然周周一 |
237
+ | `previewPeriodEnd` | string | 上期(preview)策略周期止;缺省为 previewPeriodStart+6(周日) |
238
+ | `previewBudgetStrategyTags` | array | 上期预算策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=BUDGET_STRATEGY 取 id |
239
+ | `previewBudgetStrategySupplement` | string | 上期预算策略补充说明 |
240
+ | `previewMediaStrategyTags` | array | 上期媒介策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=MEDIA_STRATEGY 取 id |
241
+ | `previewMediaStrategySupplement` | string | 上期媒介策略补充说明 |
242
+ | `previewAudienceStrategyTags` | array | 上期受众策略标签 ID。通过 GET /sino-opti-hive/dict/items?sceneCode=AUDIENCE_STRATEGY 取 id |
243
+ | `previewAudienceStrategySupplement` | string | 上期受众策略补充说明 |
244
+ | `previewCreativeStrategy` | string | 上期素材创意策略说明,最大 5000 字 |
245
+ | `trafficLight` | integer | 红绿灯:1 KPI达标、2 距GAP 20%内、3 距GAP 20%以上、4 已暂停、5 存在风险、6 KPI达标且项目顺利 |
246
+ | `coreIssueCategories` | array | 1=受众策略问题,2=跨媒介策略问题,3=媒介广告产品使用策略问题,4=出价策略问题,5=素材策略问题,6=素材执行问题,7=素材管理问题,8=投放规划问题,9=媒体素材政策/尺度/风控问题,10=媒体适配/潜力问题,11=市场选择/竞争问题,12=客户对接不顺畅,13=客户侧:数据对接问题,14=客户侧:产品问题/投放生命周期问题,15=客户侧:运营/基建问题,16=客户侧:存在投放限制,17=客户侧:转自投,18=客户侧:需求临时无规划,19=客户侧:KPI不合理,20=投放生命周期问题/素材疲劳问题,21=内部团队人员调配问题,22=其他 |
247
+ | `issuesAndOpportunities` | string | 项目问题&机会,最大 5000 字 |
248
+ | `spend` | string | 周期消耗(回顾,展示用字符串),最大 50 字 |
249
+ | `customerSatisfaction` | integer | 客户满意度:1满意 2不满意 |
250
+ | `satisfactionReason` | string | 满意度原因说明,最大 5000 字 |
251
+ | `coreEffectIndex` | string | 核心效果指标,最大 5000 字 |
252
+ | `budgetStrategyEffect` | integer | 预算策略效果:1有效 2无效 3待观察 |
253
+ | `budgetStrategyLearning` | string | 预算策略 learning |
254
+ | `mediaStrategyEffect` | integer | 媒介策略效果:1有效 2无效 3待观察 |
255
+ | `mediaStrategyLearning` | string | 媒介策略 learning |
256
+ | `audienceStrategyEffect` | integer | 受众策略效果:1有效 2无效 3待观察 |
257
+ | `audienceStrategyLearning` | string | 受众策略 learning |
258
+ | `creativeStrategyEffect` | integer | 素材策略效果:1有效 2无效 3待观察 |
259
+ | `creativeStrategyLearning` | string | 素材策略 learning |
260
+
261
+ ## 11. 删除投放策略
112
262
 
113
263
  `POST /sino-opti-hive/biz-line/strategy/del`
114
264
 
115
- ⚠️ 写操作。成功时 result 为 Boolean,表示是否删除成功。
265
+ 删除投放策略
116
266
 
117
- ## 13. 业务线关联项目列表
267
+ **请求体**
118
268
 
119
- `POST /sino-opti-hive/biz-line/project-list`
269
+ | 字段 | 类型 | 说明 |
270
+ | --- | --- | --- |
271
+ | `id` | integer | 通过 POST /sino-opti-hive/biz-line/strategy/list 取 result.id,或 POST /sino-opti-hive/biz-line/strategy/period-list 取 items.id |
120
272
 
121
- 按业务线 ID 查询该业务线绑定的项目列表,每个项目附带其绑定的广告账号。
273
+ ## 12. 查询业务线关联项目和广告账号
122
274
 
123
- 用途:已知业务线时,查看它下面挂了哪些项目、每个项目在投哪些渠道的哪些广告账号。常用于业务线消耗/成效数据的下钻,或校对业务线与项目的关联关系。
275
+ `POST /sino-opti-hive/biz-line/project-list`
124
276
 
125
- 入参:bizLineId(必填,业务线 ID)。业务线 ID 从 POST /sino-opti-hive/biz-line/list 的 result.result[].id 获得。
277
+ 根据业务线 ID 查询业务线关联项目和广告账号
126
278
 
127
- 返回:result 为项目数组,不分页、返回全量,元素含 projectId、projectName、adAccounts(广告账号列表,元素含 adAccountId、channelId、channelName)。
128
279
 
129
- 注意事项:
130
- 1. 只返回未删除的关联关系,且项目本身已删除的会被过滤,因此返回的项目数可能少于业务线实际配置过的项目数。
131
- 2. adAccounts 只含分配状态为「已绑定」且未删除的广告账号;项目没有绑定账号时 adAccounts 为空数组,不是 null。
132
- 3. channelName 由服务端按 channelId 从渠道缓存解析,缓存未命中时为 null,此时以 channelId 为准(取值同 GET /sino-opti-hive/biz-line-open/channels 的 code)。
133
- 4. 业务线不存在、或没有任何有效关联项目时,返回空数组而不是报错。
280
+ **请求体**
134
281
 
135
- ## 14. 查询优化项目分页列表
282
+ | 字段 | 类型 | 说明 |
283
+ | --- | --- | --- |
284
+ | `bizLineId` | integer | 业务线 ID,必填 |
136
285
 
137
- `POST /sino-opti-hive/optimize/project/queryByPage`
286
+ ## 13. 查询项目分页列表
138
287
 
139
- 分页查询优化工作台项目列表。常用于给业务线挑选关联项目:出参 projectId 填入 POST /sino-opti-hive/biz-line/save(或 /update)的 projectIds。
288
+ `POST /sino-opti-hive/optimize/project/queryByPage`
140
289
 
141
- result 为公司分页对象:total=总条数,result=当前页 OptimizeProjectVO。
290
+ 查询项目分页列表
142
291
 
143
- 注意事项:
144
- 1. userId 由网关注入,不要传。
145
- 2. 不传 serviceCodeList 时,服务端默认只查代投类项目(code=1、85)。
146
- 3. 排序用 sortType(lastWeekSpend / lastWeekSpendQoq / createTime)和 sortDirection(ASC/DESC),默认创建时间倒序。
147
- 4. PageRequest 里 pagination、count、startIndex 等本接口未使用,不要传。
292
+ **请求体**
148
293
 
149
- ## 15. Facebook广告策略维度数据
294
+ | 字段 | 类型 | 说明 |
295
+ | --- | --- | --- |
296
+ | `pageNum` | integer | 页码,从 1 开始 |
297
+ | `pageSize` | integer | 每页条数 |
298
+ | `sortType` | string | lastWeekSpend=上周消耗;lastWeekSpendQoq=上周消耗环比;createTime=创建时间。不传默认 createTime |
299
+ | `sortDirection` | string | ASC 升序,DESC 降序;默认 DESC |
300
+ | `corporationId` | integer | 签约主体 ID |
301
+ | `corporationIdList` | array | 签约主体 ID 多选 |
302
+ | `projectId` | integer | 项目 ID,精确匹配 |
303
+ | `projectIdList` | array | 项目 ID 多选。已知 ID 时直接传入;本接口出参 projectId 也可回填 |
304
+ | `projectName` | string | 项目名称,模糊查询 |
305
+ | `projectKeyword` | string | 项目 ID 精确,或项目名称分词模糊(空格分词,词之间 AND) |
306
+ | `startDate` | string | 项目周期开始日期 yyyy-MM-dd |
307
+ | `endDate` | string | 项目周期结束日期 yyyy-MM-dd |
308
+ | `projectUserIdList` | array | 项目成员用户 ID 多选。通过 POST /sino-opti-hive/sso-team/getMemberList 取 userId,也可 POST /sino-opti-hive/user/getSsoUserList 按姓名搜 |
309
+ | `ssoTeamCodeList` | array | 组别 code 多选,按该组别下 PM 成员筛项目。通过 GET /sino-opti-hive/sso-team/group-list 取 code |
310
+ | `adAccountId` | string | 广告账号 ID 模糊查询,至少 2 个字符 |
311
+ | `demandOrderKeyword` | string | 需求单编号精确,或需求单名称分词模糊(空格分词) |
312
+ | `signalLightList` | array | 项目红绿灯多选,与出参 signalLight 同值(字符串,不是业务线策略 trafficLight 的整数枚举) |
313
+ | `projectStatusList` | array | 项目执行状态多选。本接口查的是项目(非需求):4=待分配,5=执行中,6=已暂停,7=已完成,8=终止。出参 projectStatusName 为对应中文名 |
314
+ | `isLast7DSpend` | array | 0=否,1=是。仅传一个值时生效;同时传 0 和 1 等于不筛 |
315
+ | `uploadInfoTypeList` | array | 0=无上传,1=仅上传brief,2=仅上传mediaPlan,3=上传brief和mediaPlan。多选 |
316
+ | `serviceCodeList` | array | 服务/产品 code 多选。不传时服务端默认 1、85(代投类项目) |
317
+ | `bizLineIdList` | array | 按已关联业务线过滤项目。通过 POST /sino-opti-hive/biz-line/list 取 result.id |
318
+
319
+ ## 14. Facebook广告策略维度数据
150
320
 
151
321
  `POST /sino-icenter/mcp/strategy/dimension/facebook/ad/list`
152
322
 
@@ -203,7 +373,7 @@ result.total 为总条数,result.page 和 result.size 为当前分页。
203
373
  | `page` | integer | 页码,从 1 开始,默认 1。 |
204
374
  | `size` | integer | 每页条数,默认 10,建议显式指定。返回的 result.total 为总条数,据此判断是否还有下一页。 |
205
375
 
206
- ## 16. Google广告策略维度数据
376
+ ## 15. Google广告策略维度数据
207
377
 
208
378
  `POST /sino-icenter/mcp/strategy/dimension/google/ad/list`
209
379
 
@@ -229,10 +399,11 @@ result.total 为总条数,result.page 和 result.size 为当前分页。
229
399
  | `dimensions` | array | 分组维度,必传且不能为空数组,否则返回结果为空。各维度含义:calendar_date(投放日期)、account_id(广告账户ID)、account_name(广告账户名称)、campaign_id(广告系列ID)、campaign_name(广告系列名称)、adgroup_id(广告组ID)、adgroup_name(广告组名称)、ad_id(广告ID)、ad_name(广告名称)、optimization_goal(成效目标)、ad_format(创意类型)、bid_strategy(出价方式)、audience_type(受众类型)、targeting_age(年龄)、targeting_genders(性别)、cpc_bid_amount(CPC出价)、cpm_bid_amount(CPM出价)、cpv_bid_amount(CPV出价)、advertising_channel_type(广告系列类型)、keywords(关键字)、country_code(国家,必须单独传,不能和其他维度同时传) |
230
400
  | `order` | string | 排序字段,填单个 code,取值范围为 dimensions 的可选值。不必包含在已传的字段中,服务端会自动补入参与排序,但该字段不会作为列返回 |
231
401
  | `orderType` | string | 排序方向,默认 asc |
402
+ | `orders` | object | 多字段排序,结构为「字段名 → 排序方向」的有序键值对(Java 类型 LinkedHashMap<String, String>),按 key 的书写顺序依次排序,方向取值 desc 或 asc。示例:{"calendar_date":"desc","account_id":"asc"}。只需单字段排序时用 order + orderType 即可,不必传本字段。 |
232
403
  | `page` | integer | 页码,从1开始,默认1 |
233
404
  | `size` | integer | 每页条数,默认10,建议显式传且不超过1000 |
234
405
 
235
- ## 17. TikTok广告策略维度数据
406
+ ## 16. TikTok广告策略维度数据
236
407
 
237
408
  `POST /sino-icenter/mcp/strategy/dimension/tiktok/ad/list`
238
409
 
@@ -289,7 +460,7 @@ result.total 为总条数,result.page 和 result.size 为当前分页。
289
460
  | `page` | integer | 页码,从 1 开始,默认 1。 |
290
461
  | `size` | integer | 每页条数,默认 10,建议显式指定。返回的 result.total 为总条数,据此判断是否还有下一页。 |
291
462
 
292
- ## 18. Facebook广告策略成效数据
463
+ ## 17. Facebook广告策略成效数据
293
464
 
294
465
  `POST /sino-icenter/mcp/strategy/metrics/facebook/ad/list`
295
466
 
@@ -351,7 +522,7 @@ result.conflictField 是传入但当前渠道不支持的指标,会被忽略
351
522
  | `page` | integer | 页码,从 1 开始,默认 1。 |
352
523
  | `size` | integer | 每页条数,默认 10,建议显式指定。返回的 result.total 为总条数,据此判断是否还有下一页。 |
353
524
 
354
- ## 19. Google广告策略成效数据
525
+ ## 18. Google广告策略成效数据
355
526
 
356
527
  `POST /sino-icenter/mcp/strategy/metrics/google/ad/list`
357
528
 
@@ -377,10 +548,11 @@ result.conflictField 是传入但当前渠道不支持的指标,会被忽略
377
548
  | `indicators` | array | 成效指标,必传且不能为空数组。各指标含义:spend_usd(消耗金额,美元)、impressions(曝光量)、clicks(点击量)、video_views(视频观看次数)、add_to_cart(添加购物车次数)、checkouts(发起结账次数)、purchase(购买次数)、purchase_value(购买金额,美元)、installs(应用安装量)、complete_registration(完成注册量)、leads(留下潜客信息次数)、engagement(互动次数) |
378
549
  | `order` | string | 排序字段,填单个 code,取值范围为 dimensions 或 indicators 的可选值。不必包含在已传的字段中,服务端会自动补入参与排序,但该字段不会作为列返回 |
379
550
  | `orderType` | string | 排序方向,默认 asc |
551
+ | `orders` | object | 多字段排序,结构为「字段名 → 排序方向」的有序键值对(Java 类型 LinkedHashMap<String, String>),按 key 的书写顺序依次排序,方向取值 desc 或 asc。示例:{"spend_usd":"desc","clicks":"asc"}。只需单字段排序时用 order + orderType 即可,不必传本字段。 |
380
552
  | `page` | integer | 页码,从1开始,默认1 |
381
553
  | `size` | integer | 每页条数,默认10,建议显式传且不超过1000 |
382
554
 
383
- ## 20. TikTok广告策略成效数据
555
+ ## 19. TikTok广告策略成效数据
384
556
 
385
557
  `POST /sino-icenter/mcp/strategy/metrics/tiktok/ad/list`
386
558
 
@@ -406,5 +578,6 @@ result.conflictField 是传入但当前渠道不支持的指标,会被忽略
406
578
  | `indicators` | array | 成效指标,必传且不能为空数组。各指标含义:spend_usd(消耗金额,美元)、impressions(曝光量)、clicks(点击量)、video_views(视频观看次数)、add_to_cart(添加购物车次数)、checkouts(发起结账次数)、purchase(购买次数)、purchase_value(购买金额,美元)、installs(应用安装量)、complete_registration(完成注册量)、leads(留下潜客信息次数)、engagement(互动次数) |
407
579
  | `order` | string | 排序字段,填单个 code,取值范围为 dimensions 或 indicators 的可选值。不必包含在已传的字段中,服务端会自动补入参与排序,但该字段不会作为列返回 |
408
580
  | `orderType` | string | 排序方向,默认 asc |
581
+ | `orders` | object | 多字段排序,结构为「字段名 → 排序方向」的有序键值对(Java 类型 LinkedHashMap<String, String>),按 key 的书写顺序依次排序,方向取值 desc 或 asc。示例:{"spend_usd":"desc","clicks":"asc"}。只需单字段排序时用 order + orderType 即可,不必传本字段。 |
409
582
  | `page` | integer | 页码,从1开始,默认1 |
410
583
  | `size` | integer | 每页条数,默认10,建议显式传且不超过1000 |
@@ -10,4 +10,4 @@
10
10
 
11
11
  `GET /sino-opti-hive/sso-team/group-list`
12
12
 
13
- 无入参。返回 SSO 组别全量:code = teamCode(业务线 ssoTeamCode / ssoTeamCodeList),name = 组别名称。AccessContext 由网关注入,不出现在协议里。
13
+ 查询组别列表