@bluevs/vhcli 0.5.8 → 0.5.9

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.
@@ -0,0 +1,191 @@
1
+ # Material Report - 素材与广告效果报表
2
+
3
+ > 素材报表、归因报表(Adjust/AppsFlyer)、TikTok 素材报表、广告预览。
4
+
5
+ ---
6
+
7
+ ## get
8
+
9
+ 获取素材报表(Meta/Google/TikTok 等平台)。
10
+
11
+ **CLI:**
12
+ ```bash
13
+ vhcli material-report get \
14
+ --customer-project-id <int> \
15
+ --platform <Meta|Google|TikTok> \
16
+ --start-time 2025-01-01 \
17
+ --end-time 2025-01-31 \
18
+ [--campaign-names <name1,name2>] \
19
+ [--ad-group-name <name>] \
20
+ [--ad-name <name>] \
21
+ [--material-name <name>] \
22
+ [--material-formats <image,video>] \
23
+ [--account-ids <id1,id2>] \
24
+ [--page-size 20] [--page-num 1] \
25
+ [--order-param <field:asc|desc>]
26
+ ```
27
+
28
+ **参数:**
29
+
30
+ | 参数 | 类型 | 必填 | 默认 | 说明 |
31
+ |------|------|------|------|------|
32
+ | customer_project_id | int32 | ✅ | | 客户项目 ID |
33
+ | platform | string | ✅ | | 广告平台(Meta/Google/TikTok) |
34
+ | start_time | string | ✅ | | 开始日期(2025-01-01) |
35
+ | end_time | string | ✅ | | 结束日期(2025-01-01) |
36
+ | campaign_names | []string | | | 广告系列名称过滤 |
37
+ | ad_group_name | string | | | 广告组名模糊搜索 |
38
+ | ad_name | string | | | 广告名模糊搜索 |
39
+ | material_name | string | | | 素材名模糊搜索 |
40
+ | material_formats | []string | | | 素材格式(image/video) |
41
+ | account_ids | []string | | | 账户 ID 过滤 |
42
+ | page_size | int32 | | 20 | 每页条数 |
43
+ | page_num | int32 | | 1 | 页码 |
44
+ | order_param | Sort | | | 排序(字段+顺序) |
45
+
46
+ **响应:** MaterialReportData(含 pagination + list)
47
+
48
+ ---
49
+
50
+ ## filter
51
+
52
+ 获取素材报表筛选选项(可用的 campaign 名称列表)。
53
+
54
+ **CLI:**
55
+ ```bash
56
+ vhcli material-report filter \
57
+ --customer-project-id <int> \
58
+ --platform <Meta|Google|TikTok> \
59
+ --start-time 2025-01-01 \
60
+ --end-time 2025-01-31 \
61
+ [--campaign-name <fuzzy>]
62
+ ```
63
+
64
+ **参数:**
65
+
66
+ | 参数 | 类型 | 必填 | 说明 |
67
+ |------|------|------|------|
68
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
69
+ | platform | string | ✅ | 广告平台 |
70
+ | start_time | string | ✅ | 开始日期 |
71
+ | end_time | string | ✅ | 结束日期 |
72
+ | campaign_name | string | | Campaign 名模糊搜索 |
73
+
74
+ **响应:** []string(campaign 名称列表)
75
+
76
+ ---
77
+
78
+ ## adjust
79
+
80
+ 获取 Adjust 归因报表。
81
+
82
+ **CLI:**
83
+ ```bash
84
+ vhcli material-report adjust \
85
+ --customer-project-id <int> \
86
+ --start-time 2025-01-01 \
87
+ --end-time 2025-01-31 \
88
+ [--keyword <search>] \
89
+ [--page-size 20] [--page-num 1] \
90
+ [--order-param <field:asc|desc>]
91
+ ```
92
+
93
+ **参数:**
94
+
95
+ | 参数 | 类型 | 必填 | 默认 | 说明 |
96
+ |------|------|------|------|------|
97
+ | customer_project_id | int32 | ✅ | | 客户项目 ID |
98
+ | start_time | string | ✅ | | 开始日期 |
99
+ | end_time | string | ✅ | | 结束日期 |
100
+ | keyword | string | | | 关键词搜索 |
101
+ | page_size | int32 | | 20 | 每页条数 |
102
+ | page_num | int32 | | 1 | 页码 |
103
+ | order_param | Sort | | | 排序 |
104
+
105
+ **响应:** AdjustReportData(含 pagination + list)
106
+
107
+ ---
108
+
109
+ ## appsflyer
110
+
111
+ 获取 AppsFlyer 归因报表。
112
+
113
+ **CLI:**
114
+ ```bash
115
+ vhcli material-report appsflyer \
116
+ --customer-project-id <int> \
117
+ --start-time 2025-01-01 \
118
+ --end-time 2025-01-31 \
119
+ [--keyword <search>] \
120
+ [--page-size 20] [--page-num 1] \
121
+ [--order-param <field:asc|desc>]
122
+ ```
123
+
124
+ **参数:**
125
+
126
+ | 参数 | 类型 | 必填 | 默认 | 说明 |
127
+ |------|------|------|------|------|
128
+ | customer_project_id | int32 | ✅ | | 客户项目 ID |
129
+ | start_time | string | ✅ | | 开始日期 |
130
+ | end_time | string | ✅ | | 结束日期 |
131
+ | keyword | string | | | 关键词搜索 |
132
+ | page_size | int32 | | 20 | 每页条数 |
133
+ | page_num | int32 | | 1 | 页码 |
134
+ | order_param | Sort | | | 排序 |
135
+
136
+ **响应:** AppsFlyerReportData(含 pagination + list)
137
+
138
+ ---
139
+
140
+ ## tiktok
141
+
142
+ 获取 TikTok 素材报表。
143
+
144
+ **CLI:**
145
+ ```bash
146
+ vhcli material-report tiktok \
147
+ --customer-project-id <int> \
148
+ --platform TikTok \
149
+ --start-time 2025-01-01 \
150
+ --end-time 2025-01-31 \
151
+ [--page-size 20] [--page-num 1]
152
+ ```
153
+
154
+ **参数:**
155
+
156
+ | 参数 | 类型 | 必填 | 默认 | 说明 |
157
+ |------|------|------|------|------|
158
+ | customer_project_id | int32 | ✅ | | 客户项目 ID |
159
+ | platform | string | ✅ | | 广告平台 |
160
+ | start_time | string | ✅ | | 开始日期 |
161
+ | end_time | string | ✅ | | 结束日期 |
162
+ | page_size | int32 | | 20 | 每页条数 |
163
+ | page_num | int32 | | 1 | 页码 |
164
+
165
+ **响应:** TikTokMaterialReportData(含 pagination + list)
166
+
167
+ ---
168
+
169
+ ## ad-preview
170
+
171
+ 获取广告预览 iframe HTML。
172
+
173
+ **CLI:**
174
+ ```bash
175
+ vhcli material-report ad-preview \
176
+ --customer-project-id <int> \
177
+ --platform <Meta|Google|TikTok> \
178
+ --ad-id <string> \
179
+ --account-id <string>
180
+ ```
181
+
182
+ **参数:**
183
+
184
+ | 参数 | 类型 | 必填 | 说明 |
185
+ |------|------|------|------|
186
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
187
+ | platform | string | ✅ | 广告平台 |
188
+ | ad_id | string | ✅ | 广告 ID |
189
+ | account_id | string | ✅ | 广告账户 ID |
190
+
191
+ **响应:** string(iframe HTML)
@@ -0,0 +1,435 @@
1
+ # Project - 项目管理
2
+
3
+ > 项目查询、账户管理、成员管理、授权配置、功能开关。
4
+
5
+ ---
6
+
7
+ ## list
8
+
9
+ 列出项目,支持分页和搜索。
10
+
11
+ **CLI:**
12
+ ```bash
13
+ vhcli project list [--page-size 20] [--page-num 1] [--project-name <name>]
14
+ ```
15
+
16
+ **参数:**
17
+
18
+ | 参数 | 类型 | 必填 | 默认 | 说明 |
19
+ |------|------|------|------|------|
20
+ | page_size | int32 | | 20 | 每页条数 |
21
+ | page_num | int32 | | 1 | 页码 |
22
+ | project_name | string | | | 按项目名搜索 |
23
+
24
+ **响应:** ProjectListData(含 pagination + list)
25
+
26
+ ---
27
+
28
+ ## info
29
+
30
+ 获取项目基本信息和知识库。
31
+
32
+ **CLI:**
33
+ ```bash
34
+ vhcli project info --project-id <po_xxx>
35
+ ```
36
+
37
+ **参数:**
38
+
39
+ | 参数 | 类型 | 必填 | 说明 |
40
+ |------|------|------|------|
41
+ | project_id | string | ✅ | 项目 ID(po_xxxx) |
42
+
43
+ **响应:** ProjectInfoData
44
+ - project, alliance, members, switches, affiliate_operators, brand_category
45
+
46
+ ---
47
+
48
+ ## accounts
49
+
50
+ 获取项目下的广告账户列表。
51
+
52
+ **CLI:**
53
+ ```bash
54
+ vhcli project accounts --project-id <po_xxx> [--platform-list Meta,Google]
55
+ ```
56
+
57
+ **参数:**
58
+
59
+ | 参数 | 类型 | 必填 | 说明 |
60
+ |------|------|------|------|
61
+ | project_id | string | ✅ | 项目 ID |
62
+ | platform_list | string | | 逗号分隔的平台过滤 |
63
+
64
+ **响应:** []AccountListItem(含 account_list + platform)
65
+
66
+ ---
67
+
68
+ ## account_token
69
+
70
+ 获取广告账户的 access token。
71
+
72
+ **CLI:**
73
+ ```bash
74
+ vhcli project account-token --customer-project-id <int> --account-id <string>
75
+ ```
76
+
77
+ **参数:**
78
+
79
+ | 参数 | 类型 | 必填 | 说明 |
80
+ |------|------|------|------|
81
+ | customer_project_id | int32 | ✅ | 客户项目 ID(数字) |
82
+ | account_id | string | ✅ | 广告账户 ID |
83
+
84
+ **响应:** AccountTokenData(含 access_token)
85
+
86
+ ---
87
+
88
+ ## resource
89
+
90
+ 获取项目资源(账户和 campaign)。
91
+
92
+ **CLI:**
93
+ ```bash
94
+ vhcli project resource --project-id <po_xxx>
95
+ ```
96
+
97
+ **参数:**
98
+
99
+ | 参数 | 类型 | 必填 | 说明 |
100
+ |------|------|------|------|
101
+ | project_id | string | ✅ | 项目 ID |
102
+
103
+ **响应:** ProjectResourceData(含 accounts + campaigns)
104
+
105
+ ---
106
+
107
+ ## config_list
108
+
109
+ 获取项目授权配置(绑定了哪些第三方平台授权)。
110
+
111
+ **CLI:**
112
+ ```bash
113
+ vhcli project config-list --customer-project-id <int> [--config-key Meta]
114
+ ```
115
+
116
+ **参数:**
117
+
118
+ | 参数 | 类型 | 必填 | 说明 |
119
+ |------|------|------|------|
120
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
121
+ | config_key | string | | 按平台过滤(Meta/TikTok/Google/Impact/Snapchat) |
122
+
123
+ **响应:** ConfigListData(含 list)
124
+
125
+ ---
126
+
127
+ ## config_save
128
+
129
+ 保存项目授权配置。原子性替换所有配置。⚠️ 需要项目管理员权限,需 `--yes` 确认。
130
+
131
+ **CLI:**
132
+ ```bash
133
+ vhcli project config-save --customer-project-id <int> --config-list '<json>' --yes
134
+ ```
135
+
136
+ **参数:**
137
+
138
+ | 参数 | 类型 | 必填 | 说明 |
139
+ |------|------|------|------|
140
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
141
+ | config_list | []ConfigEntry | ✅ | [{config_key, config_value}] 数组 |
142
+
143
+ **响应:** CommonResponse
144
+
145
+ ---
146
+
147
+ ## account_discover
148
+
149
+ 发现授权下可用的广告账户。用于添加账户前的探索步骤。
150
+
151
+ **前置依赖:** 先调用 `config_list` 和 `account_organizations` 获取 authorization_id 和 organization_id。
152
+
153
+ **CLI:**
154
+ ```bash
155
+ vhcli project account-discover \
156
+ --customer-project-id <int> \
157
+ --config-key <Meta|TikTok|Google> \
158
+ --authorization-id <string> \
159
+ [--organization-id <string>] \
160
+ [--search <keyword>]
161
+ ```
162
+
163
+ **参数:**
164
+
165
+ | 参数 | 类型 | 必填 | 说明 |
166
+ |------|------|------|------|
167
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
168
+ | config_key | string | ✅ | 平台名 |
169
+ | authorization_id | string | ✅ | 授权 ID(从 config_list 获取) |
170
+ | organization_id | string | | 组织 ID(部分平台可选) |
171
+ | search | string | | 搜索关键词 |
172
+
173
+ **响应:** []AccountByAuthData(含 config_key + authorization_id + account_item)
174
+
175
+ ---
176
+
177
+ ## account_organizations
178
+
179
+ 获取授权下的组织列表。添加账户前的中间步骤。
180
+
181
+ **前置依赖:** 先调用 `config_list` 获取 authorization_id。
182
+
183
+ **CLI:**
184
+ ```bash
185
+ vhcli project account-organizations \
186
+ --customer-project-id <int> \
187
+ --config-key <Meta|TikTok|Google> \
188
+ --authorization-id <string>
189
+ ```
190
+
191
+ **参数:**
192
+
193
+ | 参数 | 类型 | 必填 | 说明 |
194
+ |------|------|------|------|
195
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
196
+ | config_key | string | ✅ | 平台名 |
197
+ | authorization_id | string | ✅ | 授权 ID |
198
+
199
+ **响应:** []OrganizationItem(含 organization_id + organization_name)
200
+
201
+ ---
202
+
203
+ ## account_add
204
+
205
+ 添加广告账户到项目。⚠️ 必须先调用 `account_discover`,只接受其返回的账户 ID。需 `--yes` 确认。
206
+
207
+ **前置依赖:** config_list → account_organizations → account_discover
208
+
209
+ **CLI:**
210
+ ```bash
211
+ vhcli project account-add \
212
+ --customer-project-id <int> \
213
+ --platform <Meta|TikTok|Google|Impact|Snapchat|Awin|Adjust|AppsFlyer> \
214
+ --ads-account-list '<json>' \
215
+ --yes
216
+ ```
217
+
218
+ **参数:**
219
+
220
+ | 参数 | 类型 | 必填 | 说明 |
221
+ |------|------|------|------|
222
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
223
+ | platform | string | ✅ | 平台 |
224
+ | ads_account_list | []AdsAccountEntry | ✅ | [{account_id, account_name, authorization_id, organization_id, medium}] |
225
+
226
+ **响应:** CommonResponse
227
+
228
+ ---
229
+
230
+ ## account_enable / account_disable
231
+
232
+ 启用/禁用项目中的广告账户。需项目管理员权限。
233
+
234
+ **CLI:**
235
+ ```bash
236
+ vhcli project account-enable --customer-project-id <int> --ads-account-list <id1,id2>
237
+ vhcli project account-disable --customer-project-id <int> --ads-account-list <id1,id2>
238
+ ```
239
+
240
+ **参数:**
241
+
242
+ | 参数 | 类型 | 必填 | 说明 |
243
+ |------|------|------|------|
244
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
245
+ | ads_account_list | []string | ✅ | 要操作的账户 ID 列表 |
246
+
247
+ **响应:** CommonResponse
248
+
249
+ ---
250
+
251
+ ## account_remove
252
+
253
+ 从项目中移除广告账户。⚠️ 需项目管理员权限,需 `--yes` 确认。
254
+
255
+ **CLI:**
256
+ ```bash
257
+ vhcli project account-remove \
258
+ --customer-project-id <int> \
259
+ --ads-account-list <id1,id2> \
260
+ --platform <Meta|TikTok|Google|Impact|Snapchat|Awin> \
261
+ --yes
262
+ ```
263
+
264
+ **参数:**
265
+
266
+ | 参数 | 类型 | 必填 | 说明 |
267
+ |------|------|------|------|
268
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
269
+ | ads_account_list | []string | ✅ | 要移除的账户 ID |
270
+ | platform | string | ✅ | 平台 |
271
+
272
+ **响应:** CommonResponse
273
+
274
+ ---
275
+
276
+ ## members_list
277
+
278
+ 列出项目成员。
279
+
280
+ **CLI:**
281
+ ```bash
282
+ vhcli project members-list --customer-project-id <int> [--keyword <search>] [--page-num 1] [--page-size 20]
283
+ ```
284
+
285
+ **参数:**
286
+
287
+ | 参数 | 类型 | 必填 | 默认 | 说明 |
288
+ |------|------|------|------|------|
289
+ | customer_project_id | int32 | ✅ | | 客户项目 ID |
290
+ | keyword | string | | | 搜索关键词 |
291
+ | page_num | int32 | | 1 | 页码 |
292
+ | page_size | int32 | | 20 | 每页条数 |
293
+
294
+ **响应:** MembersListData(含 list + pagination)
295
+
296
+ ---
297
+
298
+ ## members_add
299
+
300
+ 添加成员到项目(幂等)。需项目管理员权限。
301
+
302
+ **CLI:**
303
+ ```bash
304
+ vhcli project members-add --customer-project-id <int> --user-ids <id1,id2>
305
+ ```
306
+
307
+ **参数:**
308
+
309
+ | 参数 | 类型 | 必填 | 说明 |
310
+ |------|------|------|------|
311
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
312
+ | user_ids | []int32 | ✅ | 要添加的用户 ID 列表 |
313
+
314
+ **响应:** CommonResponse
315
+
316
+ ---
317
+
318
+ ## members_remove
319
+
320
+ 从项目移除成员。⚠️ 需项目管理员权限,需 `--yes` 确认。
321
+
322
+ **CLI:**
323
+ ```bash
324
+ vhcli project members-remove --customer-project-id <int> --user-id <int> --yes
325
+ ```
326
+
327
+ **参数:**
328
+
329
+ | 参数 | 类型 | 必填 | 说明 |
330
+ |------|------|------|------|
331
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
332
+ | user_id | int32 | ✅ | 要移除的用户 ID |
333
+
334
+ **响应:** CommonResponse
335
+
336
+ ---
337
+
338
+ ## members_update_role
339
+
340
+ 更新成员角色。需项目管理员权限。
341
+
342
+ **CLI:**
343
+ ```bash
344
+ vhcli project members-update-role --customer-project-id <int> --user-id <int> --role <admin|user>
345
+ ```
346
+
347
+ **参数:**
348
+
349
+ | 参数 | 类型 | 必填 | 说明 |
350
+ |------|------|------|------|
351
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
352
+ | user_id | int32 | ✅ | 用户 ID |
353
+ | role | string | ✅ | 新角色(admin / user) |
354
+
355
+ **响应:** CommonResponse
356
+
357
+ ---
358
+
359
+ ## members_roles
360
+
361
+ 获取可分配的角色列表。
362
+
363
+ **CLI:**
364
+ ```bash
365
+ vhcli project members-roles
366
+ ```
367
+
368
+ **响应:** []RoleItem(含 role_key + role_name)
369
+
370
+ ---
371
+
372
+ ## members_transfer_owner
373
+
374
+ 转让项目所有权。⚠️ 需项目所有者权限,需 `--yes` 确认。
375
+
376
+ **CLI:**
377
+ ```bash
378
+ vhcli project members-transfer-owner --customer-project-id <int> --new-owner-id <int64> [--transfer-reason <text>] --yes
379
+ ```
380
+
381
+ **参数:**
382
+
383
+ | 参数 | 类型 | 必填 | 说明 |
384
+ |------|------|------|------|
385
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
386
+ | new_owner_id | int64 | ✅ | 新所有者用户 ID |
387
+ | transfer_reason | string | | 转让原因 |
388
+
389
+ **响应:** CommonResponse
390
+
391
+ ---
392
+
393
+ ## switch_list
394
+
395
+ 获取项目功能开关列表。
396
+
397
+ **CLI:**
398
+ ```bash
399
+ vhcli project switch-list --customer-project-id <int> [--switch-key material_report,adjust_report]
400
+ ```
401
+
402
+ **参数:**
403
+
404
+ | 参数 | 类型 | 必填 | 说明 |
405
+ |------|------|------|------|
406
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
407
+ | switch_key | []string | | 过滤开关:material_report / adjust_report / appsflyer_report / chat_analysis / affiliate_anomaly_det / affiliate_operator |
408
+
409
+ **响应:** SwitchListData(含 list)
410
+
411
+ ---
412
+
413
+ ## switch_save
414
+
415
+ 保存项目功能开关。需项目管理员权限。
416
+
417
+ **CLI:**
418
+ ```bash
419
+ vhcli project switch-save \
420
+ --customer-project-id <int> \
421
+ --switch-key <key> \
422
+ --switch-status <enable|disable> \
423
+ [--switch-value <value>]
424
+ ```
425
+
426
+ **参数:**
427
+
428
+ | 参数 | 类型 | 必填 | 说明 |
429
+ |------|------|------|------|
430
+ | customer_project_id | int32 | ✅ | 客户项目 ID |
431
+ | switch_key | string | ✅ | 开关名 |
432
+ | switch_status | string | ✅ | enable / disable |
433
+ | switch_value | string | | 开关值(取决于类型) |
434
+
435
+ **响应:** CommonResponse