@social-data/social-neuron-subscription 1.0.0-beta.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/manifest.json ADDED
@@ -0,0 +1,1673 @@
1
+ {
2
+ "revision": 6,
3
+ "capability": "subscription",
4
+ "command": "social-neuron-subscription",
5
+ "mcp_path": "/subscription/mcp",
6
+ "tools": [
7
+ {
8
+ "action": "job-create",
9
+ "op": "job_create",
10
+ "name": "subscription/job_create",
11
+ "summary": "创建订阅 job:数据范围 + 频率 + 投递 target(默认 octo);系统生成 job_id/cron。",
12
+ "description": "创建订阅 job:数据范围 + 频率 + 投递 target(默认 octo);系统生成 job_id/cron。",
13
+ "input_schema": {
14
+ "$defs": {
15
+ "KafkaTarget": {
16
+ "additionalProperties": false,
17
+ "description": "kafka(规划):把记录流投送到 topic(无文件)。",
18
+ "properties": {
19
+ "type": {
20
+ "const": "kafka",
21
+ "description": "固定 kafka",
22
+ "title": "Type",
23
+ "type": "string"
24
+ },
25
+ "brokers": {
26
+ "description": "broker 列表(逗号分隔)",
27
+ "title": "Brokers",
28
+ "type": "string"
29
+ },
30
+ "topic": {
31
+ "description": "目标 topic",
32
+ "title": "Topic",
33
+ "type": "string"
34
+ },
35
+ "key_field": {
36
+ "anyOf": [
37
+ {
38
+ "type": "string"
39
+ },
40
+ {
41
+ "type": "null"
42
+ }
43
+ ],
44
+ "default": null,
45
+ "description": "作为消息 key 的字段名",
46
+ "title": "Key Field"
47
+ }
48
+ },
49
+ "required": [
50
+ "type",
51
+ "brokers",
52
+ "topic"
53
+ ],
54
+ "title": "KafkaTarget",
55
+ "type": "object"
56
+ },
57
+ "OctoTarget": {
58
+ "additionalProperties": false,
59
+ "description": "octo(本期,默认):导出文件上传 octo 存储,产出 CDN 下载 url(写入 file_info.url)。",
60
+ "properties": {
61
+ "type": {
62
+ "const": "octo",
63
+ "description": "固定 octo",
64
+ "title": "Type",
65
+ "type": "string"
66
+ },
67
+ "format": {
68
+ "default": "json",
69
+ "description": "文件格式:csv/excel/json(默认 json)",
70
+ "enum": [
71
+ "csv",
72
+ "excel",
73
+ "json"
74
+ ],
75
+ "title": "Format",
76
+ "type": "string"
77
+ }
78
+ },
79
+ "required": [
80
+ "type"
81
+ ],
82
+ "title": "OctoTarget",
83
+ "type": "object"
84
+ },
85
+ "SftpTarget": {
86
+ "additionalProperties": false,
87
+ "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。",
88
+ "properties": {
89
+ "type": {
90
+ "const": "sftp",
91
+ "description": "固定 sftp",
92
+ "title": "Type",
93
+ "type": "string"
94
+ },
95
+ "host": {
96
+ "description": "SFTP 主机",
97
+ "title": "Host",
98
+ "type": "string"
99
+ },
100
+ "port": {
101
+ "default": 22,
102
+ "description": "端口,默认 22",
103
+ "title": "Port",
104
+ "type": "integer"
105
+ },
106
+ "username": {
107
+ "description": "登录用户名",
108
+ "title": "Username",
109
+ "type": "string"
110
+ },
111
+ "password": {
112
+ "description": "登录密码",
113
+ "title": "Password",
114
+ "type": "string"
115
+ },
116
+ "remote_path": {
117
+ "description": "远端目录/路径",
118
+ "title": "Remote Path",
119
+ "type": "string"
120
+ },
121
+ "format": {
122
+ "default": "json",
123
+ "description": "文件格式:csv/excel/json(默认 json)",
124
+ "enum": [
125
+ "csv",
126
+ "excel",
127
+ "json"
128
+ ],
129
+ "title": "Format",
130
+ "type": "string"
131
+ }
132
+ },
133
+ "required": [
134
+ "type",
135
+ "host",
136
+ "username",
137
+ "password",
138
+ "remote_path"
139
+ ],
140
+ "title": "SftpTarget",
141
+ "type": "object"
142
+ }
143
+ },
144
+ "additionalProperties": false,
145
+ "properties": {
146
+ "name": {
147
+ "description": "job 名称,全局唯一",
148
+ "maxLength": 128,
149
+ "minLength": 1,
150
+ "title": "Name",
151
+ "type": "string"
152
+ },
153
+ "rule_ids": {
154
+ "description": "魔方规则ID数组,至少 1 个",
155
+ "items": {
156
+ "minLength": 1,
157
+ "type": "string"
158
+ },
159
+ "minItems": 1,
160
+ "title": "Rule Ids",
161
+ "type": "array"
162
+ },
163
+ "source": {
164
+ "description": "站点数组,至少 1 个;只能取已配置站点",
165
+ "items": {
166
+ "minLength": 1,
167
+ "type": "string"
168
+ },
169
+ "minItems": 1,
170
+ "title": "Source",
171
+ "type": "array"
172
+ },
173
+ "published": {
174
+ "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天到昨天)",
175
+ "enum": [
176
+ "T-0",
177
+ "T-1",
178
+ "T-7"
179
+ ],
180
+ "title": "Published",
181
+ "type": "string"
182
+ },
183
+ "frequency": {
184
+ "description": "自然语言同步频率,系统转 cron(东八区)。可指定具体时间、并**支持一天多次**:如「每天9点」「每天9点和15点」(一天跑两次)「每周一9点」「每小时」「每30分钟」。无法解析为 cron 会被拒绝。",
185
+ "maxLength": 64,
186
+ "minLength": 1,
187
+ "title": "Frequency",
188
+ "type": "string"
189
+ },
190
+ "fields": {
191
+ "description": "拉取/导出字段;不填拉全量",
192
+ "items": {
193
+ "minLength": 1,
194
+ "type": "string"
195
+ },
196
+ "title": "Fields",
197
+ "type": "array"
198
+ },
199
+ "target": {
200
+ "anyOf": [
201
+ {
202
+ "discriminator": {
203
+ "mapping": {
204
+ "kafka": "#/$defs/KafkaTarget",
205
+ "octo": "#/$defs/OctoTarget",
206
+ "sftp": "#/$defs/SftpTarget"
207
+ },
208
+ "propertyName": "type"
209
+ },
210
+ "oneOf": [
211
+ {
212
+ "$ref": "#/$defs/OctoTarget"
213
+ },
214
+ {
215
+ "$ref": "#/$defs/SftpTarget"
216
+ },
217
+ {
218
+ "$ref": "#/$defs/KafkaTarget"
219
+ }
220
+ ]
221
+ },
222
+ {
223
+ "type": "null"
224
+ }
225
+ ],
226
+ "default": null,
227
+ "description": "投递目标;省略默认 octo(excel)。本期仅接受 octo",
228
+ "title": "Target"
229
+ }
230
+ },
231
+ "required": [
232
+ "name",
233
+ "rule_ids",
234
+ "source",
235
+ "published",
236
+ "frequency"
237
+ ],
238
+ "title": "SubJobCreateInput",
239
+ "type": "object"
240
+ },
241
+ "output_schema": {
242
+ "additionalProperties": false,
243
+ "description": "订阅 job 出参对象(= sub_job 全字段,id 暴露为 job_id)。",
244
+ "properties": {
245
+ "job_id": {
246
+ "description": "job ID(sub_job.id)",
247
+ "title": "Job Id",
248
+ "type": "integer"
249
+ },
250
+ "name": {
251
+ "description": "job 名称,全局唯一",
252
+ "title": "Name",
253
+ "type": "string"
254
+ },
255
+ "rule_ids": {
256
+ "description": "魔方规则ID数组",
257
+ "items": {
258
+ "type": "string"
259
+ },
260
+ "title": "Rule Ids",
261
+ "type": "array"
262
+ },
263
+ "source": {
264
+ "description": "站点数组",
265
+ "items": {
266
+ "type": "string"
267
+ },
268
+ "title": "Source",
269
+ "type": "array"
270
+ },
271
+ "published": {
272
+ "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天)",
273
+ "title": "Published",
274
+ "type": "string"
275
+ },
276
+ "fields": {
277
+ "description": "拉取/导出字段(空=全量)",
278
+ "items": {
279
+ "type": "string"
280
+ },
281
+ "title": "Fields",
282
+ "type": "array"
283
+ },
284
+ "frequency": {
285
+ "description": "自然语言频率",
286
+ "title": "Frequency",
287
+ "type": "string"
288
+ },
289
+ "cron": {
290
+ "description": "系统由 frequency 转换的 cron",
291
+ "title": "Cron",
292
+ "type": "string"
293
+ },
294
+ "target_type": {
295
+ "description": "投递类型:octo(本期)/sftp/kafka",
296
+ "title": "Target Type",
297
+ "type": "string"
298
+ },
299
+ "target_info": {
300
+ "additionalProperties": true,
301
+ "description": "投递配置",
302
+ "title": "Target Info",
303
+ "type": "object"
304
+ },
305
+ "active": {
306
+ "description": "1 生效 / 0 停用",
307
+ "title": "Active",
308
+ "type": "integer"
309
+ },
310
+ "created_at": {
311
+ "description": "创建时间(ISO8601,UTC+8)",
312
+ "title": "Created At",
313
+ "type": "string"
314
+ },
315
+ "updated_at": {
316
+ "description": "更新时间(ISO8601,UTC+8)",
317
+ "title": "Updated At",
318
+ "type": "string"
319
+ }
320
+ },
321
+ "required": [
322
+ "job_id",
323
+ "name",
324
+ "rule_ids",
325
+ "source",
326
+ "published",
327
+ "fields",
328
+ "frequency",
329
+ "cron",
330
+ "target_type",
331
+ "target_info",
332
+ "active",
333
+ "created_at",
334
+ "updated_at"
335
+ ],
336
+ "title": "SubJob",
337
+ "type": "object"
338
+ },
339
+ "flags": [
340
+ {
341
+ "flag": "--name",
342
+ "field": "name",
343
+ "type": "string",
344
+ "required": true,
345
+ "desc": "job 名称,全局唯一"
346
+ },
347
+ {
348
+ "flag": "--rule-ids",
349
+ "field": "rule_ids",
350
+ "type": "list[str]",
351
+ "required": true,
352
+ "desc": "魔方规则ID数组,至少 1 个"
353
+ },
354
+ {
355
+ "flag": "--source",
356
+ "field": "source",
357
+ "type": "list[str]",
358
+ "required": true,
359
+ "desc": "站点数组,至少 1 个;只能取已配置站点"
360
+ },
361
+ {
362
+ "flag": "--published",
363
+ "field": "published",
364
+ "type": "enum(T-0、T-1、T-7)",
365
+ "required": true,
366
+ "desc": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天到昨天)"
367
+ },
368
+ {
369
+ "flag": "--frequency",
370
+ "field": "frequency",
371
+ "type": "string",
372
+ "required": true,
373
+ "desc": "自然语言同步频率,系统转 cron(东八区)。可指定具体时间、并**支持一天多次**:如「每天9点」「每天9点和15点」(一天跑两次)「每周一9点」「每小时」「每30分钟」。无法解析为 cron 会被拒绝。"
374
+ },
375
+ {
376
+ "flag": "--fields",
377
+ "field": "fields",
378
+ "type": "list[str]",
379
+ "required": false,
380
+ "desc": "拉取/导出字段;不填拉全量"
381
+ },
382
+ {
383
+ "flag": "--target",
384
+ "field": "target",
385
+ "type": "object(json)",
386
+ "required": false,
387
+ "desc": "投递目标;省略默认 octo(excel)。本期仅接受 octo"
388
+ }
389
+ ],
390
+ "transport": {
391
+ "method": "POST",
392
+ "path": "/subscription/job_create",
393
+ "send": "args"
394
+ },
395
+ "errors": [
396
+ "auth_error",
397
+ "validation",
398
+ "api_error",
399
+ "network",
400
+ "internal"
401
+ ]
402
+ },
403
+ {
404
+ "action": "job-delete",
405
+ "op": "job_delete",
406
+ "name": "subscription/job_delete",
407
+ "summary": "软删除本人 job:置 active=0(记录保留,可 job_update 恢复)。",
408
+ "description": "软删除本人 job:置 active=0(记录保留,可 job_update 恢复)。",
409
+ "input_schema": {
410
+ "additionalProperties": false,
411
+ "properties": {
412
+ "job_id": {
413
+ "description": "要停用的 job(须本人)",
414
+ "title": "Job Id",
415
+ "type": "integer"
416
+ }
417
+ },
418
+ "required": [
419
+ "job_id"
420
+ ],
421
+ "title": "SubJobDeleteInput",
422
+ "type": "object"
423
+ },
424
+ "output_schema": {
425
+ "additionalProperties": false,
426
+ "properties": {
427
+ "job_id": {
428
+ "description": "被停用的 job",
429
+ "title": "Job Id",
430
+ "type": "integer"
431
+ },
432
+ "active": {
433
+ "description": "停用后固定为 0",
434
+ "title": "Active",
435
+ "type": "integer"
436
+ }
437
+ },
438
+ "required": [
439
+ "job_id",
440
+ "active"
441
+ ],
442
+ "title": "DeletedSubJob",
443
+ "type": "object"
444
+ },
445
+ "flags": [
446
+ {
447
+ "flag": "--job-id",
448
+ "field": "job_id",
449
+ "type": "integer",
450
+ "required": true,
451
+ "desc": "要停用的 job(须本人)"
452
+ }
453
+ ],
454
+ "transport": {
455
+ "method": "POST",
456
+ "path": "/subscription/job_delete",
457
+ "send": "args"
458
+ },
459
+ "errors": [
460
+ "auth_error",
461
+ "validation",
462
+ "api_error",
463
+ "network",
464
+ "internal"
465
+ ]
466
+ },
467
+ {
468
+ "action": "job-list",
469
+ "op": "job_list",
470
+ "name": "subscription/job_list",
471
+ "summary": "列出本人全部订阅 job(不翻页),可按 active 过滤。",
472
+ "description": "列出本人全部订阅 job(不翻页),可按 active 过滤。",
473
+ "input_schema": {
474
+ "additionalProperties": false,
475
+ "properties": {
476
+ "active": {
477
+ "anyOf": [
478
+ {
479
+ "enum": [
480
+ 0,
481
+ 1
482
+ ],
483
+ "type": "integer"
484
+ },
485
+ {
486
+ "type": "null"
487
+ }
488
+ ],
489
+ "default": null,
490
+ "description": "按启停过滤;不传返回全部",
491
+ "title": "Active"
492
+ }
493
+ },
494
+ "title": "SubJobListInput",
495
+ "type": "object"
496
+ },
497
+ "output_schema": {
498
+ "$defs": {
499
+ "SubJob": {
500
+ "additionalProperties": false,
501
+ "description": "订阅 job 出参对象(= sub_job 全字段,id 暴露为 job_id)。",
502
+ "properties": {
503
+ "job_id": {
504
+ "description": "job ID(sub_job.id)",
505
+ "title": "Job Id",
506
+ "type": "integer"
507
+ },
508
+ "name": {
509
+ "description": "job 名称,全局唯一",
510
+ "title": "Name",
511
+ "type": "string"
512
+ },
513
+ "rule_ids": {
514
+ "description": "魔方规则ID数组",
515
+ "items": {
516
+ "type": "string"
517
+ },
518
+ "title": "Rule Ids",
519
+ "type": "array"
520
+ },
521
+ "source": {
522
+ "description": "站点数组",
523
+ "items": {
524
+ "type": "string"
525
+ },
526
+ "title": "Source",
527
+ "type": "array"
528
+ },
529
+ "published": {
530
+ "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天)",
531
+ "title": "Published",
532
+ "type": "string"
533
+ },
534
+ "fields": {
535
+ "description": "拉取/导出字段(空=全量)",
536
+ "items": {
537
+ "type": "string"
538
+ },
539
+ "title": "Fields",
540
+ "type": "array"
541
+ },
542
+ "frequency": {
543
+ "description": "自然语言频率",
544
+ "title": "Frequency",
545
+ "type": "string"
546
+ },
547
+ "cron": {
548
+ "description": "系统由 frequency 转换的 cron",
549
+ "title": "Cron",
550
+ "type": "string"
551
+ },
552
+ "target_type": {
553
+ "description": "投递类型:octo(本期)/sftp/kafka",
554
+ "title": "Target Type",
555
+ "type": "string"
556
+ },
557
+ "target_info": {
558
+ "additionalProperties": true,
559
+ "description": "投递配置",
560
+ "title": "Target Info",
561
+ "type": "object"
562
+ },
563
+ "active": {
564
+ "description": "1 生效 / 0 停用",
565
+ "title": "Active",
566
+ "type": "integer"
567
+ },
568
+ "created_at": {
569
+ "description": "创建时间(ISO8601,UTC+8)",
570
+ "title": "Created At",
571
+ "type": "string"
572
+ },
573
+ "updated_at": {
574
+ "description": "更新时间(ISO8601,UTC+8)",
575
+ "title": "Updated At",
576
+ "type": "string"
577
+ }
578
+ },
579
+ "required": [
580
+ "job_id",
581
+ "name",
582
+ "rule_ids",
583
+ "source",
584
+ "published",
585
+ "fields",
586
+ "frequency",
587
+ "cron",
588
+ "target_type",
589
+ "target_info",
590
+ "active",
591
+ "created_at",
592
+ "updated_at"
593
+ ],
594
+ "title": "SubJob",
595
+ "type": "object"
596
+ }
597
+ },
598
+ "additionalProperties": false,
599
+ "properties": {
600
+ "items": {
601
+ "description": "本人 job 列表,按创建时间倒序(全量)",
602
+ "items": {
603
+ "$ref": "#/$defs/SubJob"
604
+ },
605
+ "title": "Items",
606
+ "type": "array"
607
+ },
608
+ "total": {
609
+ "description": "命中总数",
610
+ "title": "Total",
611
+ "type": "integer"
612
+ }
613
+ },
614
+ "required": [
615
+ "items",
616
+ "total"
617
+ ],
618
+ "title": "SubJobList",
619
+ "type": "object"
620
+ },
621
+ "flags": [
622
+ {
623
+ "flag": "--active",
624
+ "field": "active",
625
+ "type": "enum(0、1)",
626
+ "required": false,
627
+ "desc": "按启停过滤;不传返回全部"
628
+ }
629
+ ],
630
+ "transport": {
631
+ "method": "POST",
632
+ "path": "/subscription/job_list",
633
+ "send": "args"
634
+ },
635
+ "errors": [
636
+ "auth_error",
637
+ "validation",
638
+ "api_error",
639
+ "network",
640
+ "internal"
641
+ ]
642
+ },
643
+ {
644
+ "action": "job-trigger",
645
+ "op": "job_trigger",
646
+ "name": "subscription/job_trigger",
647
+ "summary": "临时触发一次本人 job,落一条 sub_task(manual);默认用 job 存的 target,可覆盖。",
648
+ "description": "临时触发一次本人 job,落一条 sub_task(manual);默认用 job 存的 target,可覆盖。\n\n落 pending task 后触发 Airflow DAG(``social_neuron_subscription``)跑取数→组装→投递(上传取 url);\n未配 airflow_base_url 时(本地/测试)触发被跳过,仅留 pending task。**无通知**:结果落\n``file_info.url``,调用方轮询 ``task-list`` 拉取。",
649
+ "input_schema": {
650
+ "$defs": {
651
+ "KafkaTarget": {
652
+ "additionalProperties": false,
653
+ "description": "kafka(规划):把记录流投送到 topic(无文件)。",
654
+ "properties": {
655
+ "type": {
656
+ "const": "kafka",
657
+ "description": "固定 kafka",
658
+ "title": "Type",
659
+ "type": "string"
660
+ },
661
+ "brokers": {
662
+ "description": "broker 列表(逗号分隔)",
663
+ "title": "Brokers",
664
+ "type": "string"
665
+ },
666
+ "topic": {
667
+ "description": "目标 topic",
668
+ "title": "Topic",
669
+ "type": "string"
670
+ },
671
+ "key_field": {
672
+ "anyOf": [
673
+ {
674
+ "type": "string"
675
+ },
676
+ {
677
+ "type": "null"
678
+ }
679
+ ],
680
+ "default": null,
681
+ "description": "作为消息 key 的字段名",
682
+ "title": "Key Field"
683
+ }
684
+ },
685
+ "required": [
686
+ "type",
687
+ "brokers",
688
+ "topic"
689
+ ],
690
+ "title": "KafkaTarget",
691
+ "type": "object"
692
+ },
693
+ "OctoTarget": {
694
+ "additionalProperties": false,
695
+ "description": "octo(本期,默认):导出文件上传 octo 存储,产出 CDN 下载 url(写入 file_info.url)。",
696
+ "properties": {
697
+ "type": {
698
+ "const": "octo",
699
+ "description": "固定 octo",
700
+ "title": "Type",
701
+ "type": "string"
702
+ },
703
+ "format": {
704
+ "default": "json",
705
+ "description": "文件格式:csv/excel/json(默认 json)",
706
+ "enum": [
707
+ "csv",
708
+ "excel",
709
+ "json"
710
+ ],
711
+ "title": "Format",
712
+ "type": "string"
713
+ }
714
+ },
715
+ "required": [
716
+ "type"
717
+ ],
718
+ "title": "OctoTarget",
719
+ "type": "object"
720
+ },
721
+ "SftpTarget": {
722
+ "additionalProperties": false,
723
+ "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。",
724
+ "properties": {
725
+ "type": {
726
+ "const": "sftp",
727
+ "description": "固定 sftp",
728
+ "title": "Type",
729
+ "type": "string"
730
+ },
731
+ "host": {
732
+ "description": "SFTP 主机",
733
+ "title": "Host",
734
+ "type": "string"
735
+ },
736
+ "port": {
737
+ "default": 22,
738
+ "description": "端口,默认 22",
739
+ "title": "Port",
740
+ "type": "integer"
741
+ },
742
+ "username": {
743
+ "description": "登录用户名",
744
+ "title": "Username",
745
+ "type": "string"
746
+ },
747
+ "password": {
748
+ "description": "登录密码",
749
+ "title": "Password",
750
+ "type": "string"
751
+ },
752
+ "remote_path": {
753
+ "description": "远端目录/路径",
754
+ "title": "Remote Path",
755
+ "type": "string"
756
+ },
757
+ "format": {
758
+ "default": "json",
759
+ "description": "文件格式:csv/excel/json(默认 json)",
760
+ "enum": [
761
+ "csv",
762
+ "excel",
763
+ "json"
764
+ ],
765
+ "title": "Format",
766
+ "type": "string"
767
+ }
768
+ },
769
+ "required": [
770
+ "type",
771
+ "host",
772
+ "username",
773
+ "password",
774
+ "remote_path"
775
+ ],
776
+ "title": "SftpTarget",
777
+ "type": "object"
778
+ }
779
+ },
780
+ "additionalProperties": false,
781
+ "properties": {
782
+ "job_id": {
783
+ "description": "目标 job",
784
+ "title": "Job Id",
785
+ "type": "integer"
786
+ },
787
+ "start_time": {
788
+ "anyOf": [
789
+ {
790
+ "type": "string"
791
+ },
792
+ {
793
+ "type": "null"
794
+ }
795
+ ],
796
+ "default": null,
797
+ "description": "回溯起始;与 end_time 同传同不传",
798
+ "title": "Start Time"
799
+ },
800
+ "end_time": {
801
+ "anyOf": [
802
+ {
803
+ "type": "string"
804
+ },
805
+ {
806
+ "type": "null"
807
+ }
808
+ ],
809
+ "default": null,
810
+ "description": "回溯结束",
811
+ "title": "End Time"
812
+ },
813
+ "target": {
814
+ "anyOf": [
815
+ {
816
+ "discriminator": {
817
+ "mapping": {
818
+ "kafka": "#/$defs/KafkaTarget",
819
+ "octo": "#/$defs/OctoTarget",
820
+ "sftp": "#/$defs/SftpTarget"
821
+ },
822
+ "propertyName": "type"
823
+ },
824
+ "oneOf": [
825
+ {
826
+ "$ref": "#/$defs/OctoTarget"
827
+ },
828
+ {
829
+ "$ref": "#/$defs/SftpTarget"
830
+ },
831
+ {
832
+ "$ref": "#/$defs/KafkaTarget"
833
+ }
834
+ ]
835
+ },
836
+ {
837
+ "type": "null"
838
+ }
839
+ ],
840
+ "default": null,
841
+ "description": "覆盖本次投递目标",
842
+ "title": "Target"
843
+ }
844
+ },
845
+ "required": [
846
+ "job_id"
847
+ ],
848
+ "title": "SubJobTriggerInput",
849
+ "type": "object"
850
+ },
851
+ "output_schema": {
852
+ "additionalProperties": false,
853
+ "properties": {
854
+ "task_id": {
855
+ "description": "task ID(异步)",
856
+ "title": "Task Id",
857
+ "type": "integer"
858
+ },
859
+ "status": {
860
+ "description": "初始状态:pending",
861
+ "title": "Status",
862
+ "type": "string"
863
+ }
864
+ },
865
+ "required": [
866
+ "task_id",
867
+ "status"
868
+ ],
869
+ "title": "SubJobTriggerResult",
870
+ "type": "object"
871
+ },
872
+ "flags": [
873
+ {
874
+ "flag": "--job-id",
875
+ "field": "job_id",
876
+ "type": "integer",
877
+ "required": true,
878
+ "desc": "目标 job"
879
+ },
880
+ {
881
+ "flag": "--start-time",
882
+ "field": "start_time",
883
+ "type": "string",
884
+ "required": false,
885
+ "desc": "回溯起始;与 end_time 同传同不传"
886
+ },
887
+ {
888
+ "flag": "--end-time",
889
+ "field": "end_time",
890
+ "type": "string",
891
+ "required": false,
892
+ "desc": "回溯结束"
893
+ },
894
+ {
895
+ "flag": "--target",
896
+ "field": "target",
897
+ "type": "object(json)",
898
+ "required": false,
899
+ "desc": "覆盖本次投递目标"
900
+ }
901
+ ],
902
+ "transport": {
903
+ "method": "POST",
904
+ "path": "/subscription/job_trigger",
905
+ "send": "args"
906
+ },
907
+ "errors": [
908
+ "auth_error",
909
+ "validation",
910
+ "api_error",
911
+ "network",
912
+ "internal"
913
+ ]
914
+ },
915
+ {
916
+ "action": "job-update",
917
+ "op": "job_update",
918
+ "name": "subscription/job_update",
919
+ "summary": "以 job_id 定位改本人 job:数组整组覆盖,target 整体替换,改 frequency 重算 cron。",
920
+ "description": "以 job_id 定位改本人 job:数组整组覆盖,target 整体替换,改 frequency 重算 cron。",
921
+ "input_schema": {
922
+ "$defs": {
923
+ "KafkaTarget": {
924
+ "additionalProperties": false,
925
+ "description": "kafka(规划):把记录流投送到 topic(无文件)。",
926
+ "properties": {
927
+ "type": {
928
+ "const": "kafka",
929
+ "description": "固定 kafka",
930
+ "title": "Type",
931
+ "type": "string"
932
+ },
933
+ "brokers": {
934
+ "description": "broker 列表(逗号分隔)",
935
+ "title": "Brokers",
936
+ "type": "string"
937
+ },
938
+ "topic": {
939
+ "description": "目标 topic",
940
+ "title": "Topic",
941
+ "type": "string"
942
+ },
943
+ "key_field": {
944
+ "anyOf": [
945
+ {
946
+ "type": "string"
947
+ },
948
+ {
949
+ "type": "null"
950
+ }
951
+ ],
952
+ "default": null,
953
+ "description": "作为消息 key 的字段名",
954
+ "title": "Key Field"
955
+ }
956
+ },
957
+ "required": [
958
+ "type",
959
+ "brokers",
960
+ "topic"
961
+ ],
962
+ "title": "KafkaTarget",
963
+ "type": "object"
964
+ },
965
+ "OctoTarget": {
966
+ "additionalProperties": false,
967
+ "description": "octo(本期,默认):导出文件上传 octo 存储,产出 CDN 下载 url(写入 file_info.url)。",
968
+ "properties": {
969
+ "type": {
970
+ "const": "octo",
971
+ "description": "固定 octo",
972
+ "title": "Type",
973
+ "type": "string"
974
+ },
975
+ "format": {
976
+ "default": "json",
977
+ "description": "文件格式:csv/excel/json(默认 json)",
978
+ "enum": [
979
+ "csv",
980
+ "excel",
981
+ "json"
982
+ ],
983
+ "title": "Format",
984
+ "type": "string"
985
+ }
986
+ },
987
+ "required": [
988
+ "type"
989
+ ],
990
+ "title": "OctoTarget",
991
+ "type": "object"
992
+ },
993
+ "SftpTarget": {
994
+ "additionalProperties": false,
995
+ "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。",
996
+ "properties": {
997
+ "type": {
998
+ "const": "sftp",
999
+ "description": "固定 sftp",
1000
+ "title": "Type",
1001
+ "type": "string"
1002
+ },
1003
+ "host": {
1004
+ "description": "SFTP 主机",
1005
+ "title": "Host",
1006
+ "type": "string"
1007
+ },
1008
+ "port": {
1009
+ "default": 22,
1010
+ "description": "端口,默认 22",
1011
+ "title": "Port",
1012
+ "type": "integer"
1013
+ },
1014
+ "username": {
1015
+ "description": "登录用户名",
1016
+ "title": "Username",
1017
+ "type": "string"
1018
+ },
1019
+ "password": {
1020
+ "description": "登录密码",
1021
+ "title": "Password",
1022
+ "type": "string"
1023
+ },
1024
+ "remote_path": {
1025
+ "description": "远端目录/路径",
1026
+ "title": "Remote Path",
1027
+ "type": "string"
1028
+ },
1029
+ "format": {
1030
+ "default": "json",
1031
+ "description": "文件格式:csv/excel/json(默认 json)",
1032
+ "enum": [
1033
+ "csv",
1034
+ "excel",
1035
+ "json"
1036
+ ],
1037
+ "title": "Format",
1038
+ "type": "string"
1039
+ }
1040
+ },
1041
+ "required": [
1042
+ "type",
1043
+ "host",
1044
+ "username",
1045
+ "password",
1046
+ "remote_path"
1047
+ ],
1048
+ "title": "SftpTarget",
1049
+ "type": "object"
1050
+ }
1051
+ },
1052
+ "additionalProperties": false,
1053
+ "properties": {
1054
+ "job_id": {
1055
+ "description": "目标 job",
1056
+ "title": "Job Id",
1057
+ "type": "integer"
1058
+ },
1059
+ "name": {
1060
+ "anyOf": [
1061
+ {
1062
+ "maxLength": 128,
1063
+ "minLength": 1,
1064
+ "type": "string"
1065
+ },
1066
+ {
1067
+ "type": "null"
1068
+ }
1069
+ ],
1070
+ "default": null,
1071
+ "description": "新名称(全局唯一)",
1072
+ "title": "Name"
1073
+ },
1074
+ "rule_ids": {
1075
+ "anyOf": [
1076
+ {
1077
+ "items": {
1078
+ "minLength": 1,
1079
+ "type": "string"
1080
+ },
1081
+ "minItems": 1,
1082
+ "type": "array"
1083
+ },
1084
+ {
1085
+ "type": "null"
1086
+ }
1087
+ ],
1088
+ "default": null,
1089
+ "description": "整组全量覆盖",
1090
+ "title": "Rule Ids"
1091
+ },
1092
+ "source": {
1093
+ "anyOf": [
1094
+ {
1095
+ "items": {
1096
+ "minLength": 1,
1097
+ "type": "string"
1098
+ },
1099
+ "minItems": 1,
1100
+ "type": "array"
1101
+ },
1102
+ {
1103
+ "type": "null"
1104
+ }
1105
+ ],
1106
+ "default": null,
1107
+ "description": "整组全量覆盖",
1108
+ "title": "Source"
1109
+ },
1110
+ "published": {
1111
+ "anyOf": [
1112
+ {
1113
+ "enum": [
1114
+ "T-0",
1115
+ "T-1",
1116
+ "T-7"
1117
+ ],
1118
+ "type": "string"
1119
+ },
1120
+ {
1121
+ "type": "null"
1122
+ }
1123
+ ],
1124
+ "default": null,
1125
+ "description": "发布时间口径:T-0 / T-1 / T-7",
1126
+ "title": "Published"
1127
+ },
1128
+ "fields": {
1129
+ "anyOf": [
1130
+ {
1131
+ "items": {
1132
+ "minLength": 1,
1133
+ "type": "string"
1134
+ },
1135
+ "type": "array"
1136
+ },
1137
+ {
1138
+ "type": "null"
1139
+ }
1140
+ ],
1141
+ "default": null,
1142
+ "description": "整组全量覆盖",
1143
+ "title": "Fields"
1144
+ },
1145
+ "frequency": {
1146
+ "anyOf": [
1147
+ {
1148
+ "maxLength": 64,
1149
+ "minLength": 1,
1150
+ "type": "string"
1151
+ },
1152
+ {
1153
+ "type": "null"
1154
+ }
1155
+ ],
1156
+ "default": null,
1157
+ "description": "传入则按新频率重算 cron(用法同创建;支持一天多次,如「每天9点和15点」);无法解析为 cron 会被拒绝",
1158
+ "title": "Frequency"
1159
+ },
1160
+ "target": {
1161
+ "anyOf": [
1162
+ {
1163
+ "discriminator": {
1164
+ "mapping": {
1165
+ "kafka": "#/$defs/KafkaTarget",
1166
+ "octo": "#/$defs/OctoTarget",
1167
+ "sftp": "#/$defs/SftpTarget"
1168
+ },
1169
+ "propertyName": "type"
1170
+ },
1171
+ "oneOf": [
1172
+ {
1173
+ "$ref": "#/$defs/OctoTarget"
1174
+ },
1175
+ {
1176
+ "$ref": "#/$defs/SftpTarget"
1177
+ },
1178
+ {
1179
+ "$ref": "#/$defs/KafkaTarget"
1180
+ }
1181
+ ]
1182
+ },
1183
+ {
1184
+ "type": "null"
1185
+ }
1186
+ ],
1187
+ "default": null,
1188
+ "description": "整体替换投递目标",
1189
+ "title": "Target"
1190
+ },
1191
+ "active": {
1192
+ "anyOf": [
1193
+ {
1194
+ "enum": [
1195
+ 0,
1196
+ 1
1197
+ ],
1198
+ "type": "integer"
1199
+ },
1200
+ {
1201
+ "type": "null"
1202
+ }
1203
+ ],
1204
+ "default": null,
1205
+ "description": "启停:1 / 0",
1206
+ "title": "Active"
1207
+ }
1208
+ },
1209
+ "required": [
1210
+ "job_id"
1211
+ ],
1212
+ "title": "SubJobUpdateInput",
1213
+ "type": "object"
1214
+ },
1215
+ "output_schema": {
1216
+ "additionalProperties": false,
1217
+ "description": "订阅 job 出参对象(= sub_job 全字段,id 暴露为 job_id)。",
1218
+ "properties": {
1219
+ "job_id": {
1220
+ "description": "job ID(sub_job.id)",
1221
+ "title": "Job Id",
1222
+ "type": "integer"
1223
+ },
1224
+ "name": {
1225
+ "description": "job 名称,全局唯一",
1226
+ "title": "Name",
1227
+ "type": "string"
1228
+ },
1229
+ "rule_ids": {
1230
+ "description": "魔方规则ID数组",
1231
+ "items": {
1232
+ "type": "string"
1233
+ },
1234
+ "title": "Rule Ids",
1235
+ "type": "array"
1236
+ },
1237
+ "source": {
1238
+ "description": "站点数组",
1239
+ "items": {
1240
+ "type": "string"
1241
+ },
1242
+ "title": "Source",
1243
+ "type": "array"
1244
+ },
1245
+ "published": {
1246
+ "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天)",
1247
+ "title": "Published",
1248
+ "type": "string"
1249
+ },
1250
+ "fields": {
1251
+ "description": "拉取/导出字段(空=全量)",
1252
+ "items": {
1253
+ "type": "string"
1254
+ },
1255
+ "title": "Fields",
1256
+ "type": "array"
1257
+ },
1258
+ "frequency": {
1259
+ "description": "自然语言频率",
1260
+ "title": "Frequency",
1261
+ "type": "string"
1262
+ },
1263
+ "cron": {
1264
+ "description": "系统由 frequency 转换的 cron",
1265
+ "title": "Cron",
1266
+ "type": "string"
1267
+ },
1268
+ "target_type": {
1269
+ "description": "投递类型:octo(本期)/sftp/kafka",
1270
+ "title": "Target Type",
1271
+ "type": "string"
1272
+ },
1273
+ "target_info": {
1274
+ "additionalProperties": true,
1275
+ "description": "投递配置",
1276
+ "title": "Target Info",
1277
+ "type": "object"
1278
+ },
1279
+ "active": {
1280
+ "description": "1 生效 / 0 停用",
1281
+ "title": "Active",
1282
+ "type": "integer"
1283
+ },
1284
+ "created_at": {
1285
+ "description": "创建时间(ISO8601,UTC+8)",
1286
+ "title": "Created At",
1287
+ "type": "string"
1288
+ },
1289
+ "updated_at": {
1290
+ "description": "更新时间(ISO8601,UTC+8)",
1291
+ "title": "Updated At",
1292
+ "type": "string"
1293
+ }
1294
+ },
1295
+ "required": [
1296
+ "job_id",
1297
+ "name",
1298
+ "rule_ids",
1299
+ "source",
1300
+ "published",
1301
+ "fields",
1302
+ "frequency",
1303
+ "cron",
1304
+ "target_type",
1305
+ "target_info",
1306
+ "active",
1307
+ "created_at",
1308
+ "updated_at"
1309
+ ],
1310
+ "title": "SubJob",
1311
+ "type": "object"
1312
+ },
1313
+ "flags": [
1314
+ {
1315
+ "flag": "--job-id",
1316
+ "field": "job_id",
1317
+ "type": "integer",
1318
+ "required": true,
1319
+ "desc": "目标 job"
1320
+ },
1321
+ {
1322
+ "flag": "--name",
1323
+ "field": "name",
1324
+ "type": "string",
1325
+ "required": false,
1326
+ "desc": "新名称(全局唯一)"
1327
+ },
1328
+ {
1329
+ "flag": "--rule-ids",
1330
+ "field": "rule_ids",
1331
+ "type": "list[str]",
1332
+ "required": false,
1333
+ "desc": "整组全量覆盖"
1334
+ },
1335
+ {
1336
+ "flag": "--source",
1337
+ "field": "source",
1338
+ "type": "list[str]",
1339
+ "required": false,
1340
+ "desc": "整组全量覆盖"
1341
+ },
1342
+ {
1343
+ "flag": "--published",
1344
+ "field": "published",
1345
+ "type": "enum(T-0、T-1、T-7)",
1346
+ "required": false,
1347
+ "desc": "发布时间口径:T-0 / T-1 / T-7"
1348
+ },
1349
+ {
1350
+ "flag": "--fields",
1351
+ "field": "fields",
1352
+ "type": "list[str]",
1353
+ "required": false,
1354
+ "desc": "整组全量覆盖"
1355
+ },
1356
+ {
1357
+ "flag": "--frequency",
1358
+ "field": "frequency",
1359
+ "type": "string",
1360
+ "required": false,
1361
+ "desc": "传入则按新频率重算 cron(用法同创建;支持一天多次,如「每天9点和15点」);无法解析为 cron 会被拒绝"
1362
+ },
1363
+ {
1364
+ "flag": "--target",
1365
+ "field": "target",
1366
+ "type": "object(json)",
1367
+ "required": false,
1368
+ "desc": "整体替换投递目标"
1369
+ },
1370
+ {
1371
+ "flag": "--active",
1372
+ "field": "active",
1373
+ "type": "enum(0、1)",
1374
+ "required": false,
1375
+ "desc": "启停:1 / 0"
1376
+ }
1377
+ ],
1378
+ "transport": {
1379
+ "method": "POST",
1380
+ "path": "/subscription/job_update",
1381
+ "send": "args"
1382
+ },
1383
+ "errors": [
1384
+ "auth_error",
1385
+ "validation",
1386
+ "api_error",
1387
+ "network",
1388
+ "internal"
1389
+ ]
1390
+ },
1391
+ {
1392
+ "action": "task-list",
1393
+ "op": "task_list",
1394
+ "name": "subscription/task_list",
1395
+ "summary": "列出某本人 job 的执行 task(翻页),可按 task_id 查单条、status/创建时间过滤,按创建时间排序。",
1396
+ "description": "列出某本人 job 的执行 task(翻页),可按 task_id 查单条、status/创建时间过滤,按创建时间排序。",
1397
+ "input_schema": {
1398
+ "additionalProperties": false,
1399
+ "properties": {
1400
+ "job_id": {
1401
+ "description": "所属 job",
1402
+ "title": "Job Id",
1403
+ "type": "integer"
1404
+ },
1405
+ "task_id": {
1406
+ "anyOf": [
1407
+ {
1408
+ "type": "integer"
1409
+ },
1410
+ {
1411
+ "type": "null"
1412
+ }
1413
+ ],
1414
+ "default": null,
1415
+ "description": "传则查单条详情",
1416
+ "title": "Task Id"
1417
+ },
1418
+ "status": {
1419
+ "anyOf": [
1420
+ {
1421
+ "enum": [
1422
+ "pending",
1423
+ "running",
1424
+ "success",
1425
+ "failed",
1426
+ "terminated"
1427
+ ],
1428
+ "type": "string"
1429
+ },
1430
+ {
1431
+ "type": "null"
1432
+ }
1433
+ ],
1434
+ "default": null,
1435
+ "description": "按状态过滤",
1436
+ "title": "Status"
1437
+ },
1438
+ "start": {
1439
+ "anyOf": [
1440
+ {
1441
+ "type": "string"
1442
+ },
1443
+ {
1444
+ "type": "null"
1445
+ }
1446
+ ],
1447
+ "default": null,
1448
+ "description": "按创建时间过滤下界(created_at ≥ start,ISO8601 UTC+8)",
1449
+ "title": "Start"
1450
+ },
1451
+ "end": {
1452
+ "anyOf": [
1453
+ {
1454
+ "type": "string"
1455
+ },
1456
+ {
1457
+ "type": "null"
1458
+ }
1459
+ ],
1460
+ "default": null,
1461
+ "description": "按创建时间过滤上界(created_at ≤ end,ISO8601 UTC+8)",
1462
+ "title": "End"
1463
+ },
1464
+ "sort": {
1465
+ "default": "desc",
1466
+ "description": "按 created_at 排序:asc 正序 / desc 倒序(默认 desc)",
1467
+ "enum": [
1468
+ "asc",
1469
+ "desc"
1470
+ ],
1471
+ "title": "Sort",
1472
+ "type": "string"
1473
+ },
1474
+ "page": {
1475
+ "default": 1,
1476
+ "description": "页码,默认 1",
1477
+ "minimum": 1,
1478
+ "title": "Page",
1479
+ "type": "integer"
1480
+ },
1481
+ "page_size": {
1482
+ "default": 10,
1483
+ "description": "每页条数,默认 10,范围 1–100",
1484
+ "maximum": 100,
1485
+ "minimum": 1,
1486
+ "title": "Page Size",
1487
+ "type": "integer"
1488
+ }
1489
+ },
1490
+ "required": [
1491
+ "job_id"
1492
+ ],
1493
+ "title": "SubTaskListInput",
1494
+ "type": "object"
1495
+ },
1496
+ "output_schema": {
1497
+ "$defs": {
1498
+ "SubTask": {
1499
+ "additionalProperties": false,
1500
+ "description": "订阅 task 出参对象(**对外精简**:只给调用方轮询/下载所需;其余字段仅存 sub_task 表供排查)。",
1501
+ "properties": {
1502
+ "task_id": {
1503
+ "description": "task ID(sub_task.id)",
1504
+ "title": "Task Id",
1505
+ "type": "integer"
1506
+ },
1507
+ "job_id": {
1508
+ "description": "所属 job",
1509
+ "title": "Job Id",
1510
+ "type": "integer"
1511
+ },
1512
+ "status": {
1513
+ "description": "pending/running/success/failed/terminated",
1514
+ "title": "Status",
1515
+ "type": "string"
1516
+ },
1517
+ "file_info": {
1518
+ "anyOf": [
1519
+ {
1520
+ "additionalProperties": true,
1521
+ "type": "object"
1522
+ },
1523
+ {
1524
+ "type": "null"
1525
+ }
1526
+ ],
1527
+ "default": null,
1528
+ "description": "产物 + 下载入口,含 type 标识:octo→{type,name,format,rows,url};sftp→{...,url,path};kafka→{type,brokers,topic}",
1529
+ "title": "File Info"
1530
+ },
1531
+ "error_msg": {
1532
+ "anyOf": [
1533
+ {
1534
+ "type": "string"
1535
+ },
1536
+ {
1537
+ "type": "null"
1538
+ }
1539
+ ],
1540
+ "default": null,
1541
+ "description": "失败原因(status=failed 时给出;成功/进行中为空)",
1542
+ "title": "Error Msg"
1543
+ },
1544
+ "created_at": {
1545
+ "description": "创建时间",
1546
+ "title": "Created At",
1547
+ "type": "string"
1548
+ },
1549
+ "updated_at": {
1550
+ "description": "更新时间",
1551
+ "title": "Updated At",
1552
+ "type": "string"
1553
+ }
1554
+ },
1555
+ "required": [
1556
+ "task_id",
1557
+ "job_id",
1558
+ "status",
1559
+ "created_at",
1560
+ "updated_at"
1561
+ ],
1562
+ "title": "SubTask",
1563
+ "type": "object"
1564
+ }
1565
+ },
1566
+ "additionalProperties": false,
1567
+ "properties": {
1568
+ "items": {
1569
+ "description": "task 列表,按 created_at 排序(方向由 sort 定,默认倒序)",
1570
+ "items": {
1571
+ "$ref": "#/$defs/SubTask"
1572
+ },
1573
+ "title": "Items",
1574
+ "type": "array"
1575
+ },
1576
+ "total": {
1577
+ "description": "命中总数",
1578
+ "title": "Total",
1579
+ "type": "integer"
1580
+ }
1581
+ },
1582
+ "required": [
1583
+ "items",
1584
+ "total"
1585
+ ],
1586
+ "title": "SubTaskList",
1587
+ "type": "object"
1588
+ },
1589
+ "flags": [
1590
+ {
1591
+ "flag": "--job-id",
1592
+ "field": "job_id",
1593
+ "type": "integer",
1594
+ "required": true,
1595
+ "desc": "所属 job"
1596
+ },
1597
+ {
1598
+ "flag": "--task-id",
1599
+ "field": "task_id",
1600
+ "type": "integer",
1601
+ "required": false,
1602
+ "desc": "传则查单条详情"
1603
+ },
1604
+ {
1605
+ "flag": "--status",
1606
+ "field": "status",
1607
+ "type": "enum(pending、running、success、failed、terminated)",
1608
+ "required": false,
1609
+ "desc": "按状态过滤"
1610
+ },
1611
+ {
1612
+ "flag": "--start",
1613
+ "field": "start",
1614
+ "type": "string",
1615
+ "required": false,
1616
+ "desc": "按创建时间过滤下界(created_at ≥ start,ISO8601 UTC+8)"
1617
+ },
1618
+ {
1619
+ "flag": "--end",
1620
+ "field": "end",
1621
+ "type": "string",
1622
+ "required": false,
1623
+ "desc": "按创建时间过滤上界(created_at ≤ end,ISO8601 UTC+8)"
1624
+ },
1625
+ {
1626
+ "flag": "--sort",
1627
+ "field": "sort",
1628
+ "type": "enum(asc、desc)",
1629
+ "required": false,
1630
+ "desc": "按 created_at 排序:asc 正序 / desc 倒序(默认 desc)"
1631
+ },
1632
+ {
1633
+ "flag": "--page",
1634
+ "field": "page",
1635
+ "type": "integer",
1636
+ "required": false,
1637
+ "desc": "页码,默认 1"
1638
+ },
1639
+ {
1640
+ "flag": "--page-size",
1641
+ "field": "page_size",
1642
+ "type": "integer",
1643
+ "required": false,
1644
+ "desc": "每页条数,默认 10,范围 1–100"
1645
+ }
1646
+ ],
1647
+ "transport": {
1648
+ "method": "POST",
1649
+ "path": "/subscription/task_list",
1650
+ "send": "args"
1651
+ },
1652
+ "errors": [
1653
+ "auth_error",
1654
+ "validation",
1655
+ "api_error",
1656
+ "network",
1657
+ "internal"
1658
+ ]
1659
+ }
1660
+ ],
1661
+ "skill": {
1662
+ "slug": "social-neuron-subscription",
1663
+ "description": "使用场景:定时导出/订阅推送/定期拉数/大批量出文件——需异步产出文件并下载时用能力:按魔方规则、定时 cron 或手动触发,把大库数据异步导出为文件,上传 octo/sftp,产出下载 url 供调用方轮询拉取;可创建/修改/列出/删除/触发订阅 job、翻页查询 task。概念:job=订阅定义(数据范围+频率+投递方式,系统按频率生成 cron);task=job 的一次执行,产物与下载地址落在 file_info。边界:①每 token 生效 job 默认≤10;②单次拉数≤10 万行,超出截断;③投递仅 octo/sftp(kafka 规划中,暂不支持),无主动通知、须轮询 task 取结果。",
1664
+ "actions": [
1665
+ "job-create",
1666
+ "job-delete",
1667
+ "job-list",
1668
+ "job-trigger",
1669
+ "job-update",
1670
+ "task-list"
1671
+ ]
1672
+ }
1673
+ }