@social-data/social-neuron-subscription 1.0.0-beta.4 → 1.0.0-beta.6

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 CHANGED
@@ -84,7 +84,7 @@
84
84
  },
85
85
  "SftpTarget": {
86
86
  "additionalProperties": false,
87
- "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。",
87
+ "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。\n目录与文件名都支持日期变量 ``yyyyMMdd`` / ``yyyyMM`` / ``yyyy``,同一个 task 重跑多少次,远端路径与文件名都不变。",
88
88
  "properties": {
89
89
  "type": {
90
90
  "const": "sftp",
@@ -114,10 +114,23 @@
114
114
  "type": "string"
115
115
  },
116
116
  "remote_path": {
117
- "description": "远端目录/路径",
117
+ "description": "远端目录/路径。可在**任意一层**用日期变量,但变量必须**独占一层**:`/data/sub/yyyyMM/yyyyMMdd` 合法,`/data/sub_yyyyMMdd` 非法。只认 yyyyMMdd / yyyyMM / yyyy 三种;不允许 '..'、空目录层。",
118
118
  "title": "Remote Path",
119
119
  "type": "string"
120
120
  },
121
+ "filename_template": {
122
+ "anyOf": [
123
+ {
124
+ "type": "string"
125
+ },
126
+ {
127
+ "type": "null"
128
+ }
129
+ ],
130
+ "default": null,
131
+ "description": "自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。",
132
+ "title": "Filename Template"
133
+ },
121
134
  "format": {
122
135
  "default": "json",
123
136
  "description": "文件格式:csv/excel/json(默认 json)",
@@ -171,15 +184,39 @@
171
184
  "type": "array"
172
185
  },
173
186
  "published": {
174
- "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天到昨天)",
175
- "enum": [
176
- "T-0",
177
- "T-1",
178
- "T-7"
179
- ],
187
+ "description": "**发布时间**口径(必填,主口径 —— 它同时决定查哪个月的索引、怎么拆分片,所以不能缺省)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。",
188
+ "pattern": "^T-\\d+~T-\\d+$",
180
189
  "title": "Published",
181
190
  "type": "string"
182
191
  },
192
+ "idate": {
193
+ "anyOf": [
194
+ {
195
+ "pattern": "^T-\\d+~T-\\d+$",
196
+ "type": "string"
197
+ },
198
+ {
199
+ "type": "null"
200
+ }
201
+ ],
202
+ "default": null,
203
+ "description": "**入库时间**口径(选填,不传=该维度不过滤)。在发布时间窗**之内**再 AND 一层:入库时间落在本区间的数据。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。",
204
+ "title": "Idate"
205
+ },
206
+ "udate": {
207
+ "anyOf": [
208
+ {
209
+ "pattern": "^T-\\d+~T-\\d+$",
210
+ "type": "string"
211
+ },
212
+ {
213
+ "type": "null"
214
+ }
215
+ ],
216
+ "default": null,
217
+ "description": "**更新时间**口径(选填,不传=该维度不过滤)。在发布时间窗**之内**再 AND 一层:更新时间落在本区间的数据。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。",
218
+ "title": "Udate"
219
+ },
183
220
  "frequency": {
184
221
  "description": "自然语言同步频率,系统转 cron(东八区)。可指定具体时间、并**支持一天多次**:如「每天9点」「每天9点和15点」(一天跑两次)「每周一9点」「每小时」「每30分钟」。无法解析为 cron 会被拒绝。",
185
222
  "maxLength": 64,
@@ -224,7 +261,7 @@
224
261
  }
225
262
  ],
226
263
  "default": null,
227
- "description": "投递目标;省略默认 octo(excel)。本期仅接受 octo",
264
+ "description": "投递目标;省略默认 octo(json)。本期支持 octo(上传存储→CDN url)与 sftp(账密上传远端,路径/文件名可用日期变量);kafka: 暂未实现。",
228
265
  "title": "Target"
229
266
  }
230
267
  },
@@ -269,10 +306,34 @@
269
306
  "type": "array"
270
307
  },
271
308
  "published": {
272
- "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天)",
309
+ "description": "发布时间口径(相对,规范形态 T-M~T-N,如 T-1~T-1 / T-7~T-3);触发时按 task_time 折算成绝对日期区间",
273
310
  "title": "Published",
274
311
  "type": "string"
275
312
  },
313
+ "idate": {
314
+ "anyOf": [
315
+ {
316
+ "type": "string"
317
+ },
318
+ {
319
+ "type": "null"
320
+ }
321
+ ],
322
+ "description": "入库时间口径(相对,T-M~T-N);null=该维度不过滤",
323
+ "title": "Idate"
324
+ },
325
+ "udate": {
326
+ "anyOf": [
327
+ {
328
+ "type": "string"
329
+ },
330
+ {
331
+ "type": "null"
332
+ }
333
+ ],
334
+ "description": "更新时间口径(相对,T-M~T-N);null=该维度不过滤",
335
+ "title": "Udate"
336
+ },
276
337
  "fields": {
277
338
  "description": "拉取/导出字段(空=全量)",
278
339
  "items": {
@@ -292,7 +353,7 @@
292
353
  "type": "string"
293
354
  },
294
355
  "target_type": {
295
- "description": "投递类型:octo(本期)/sftp/kafka",
356
+ "description": "投递类型:octo、sftp、kafka(暂不支持)",
296
357
  "title": "Target Type",
297
358
  "type": "string"
298
359
  },
@@ -324,6 +385,8 @@
324
385
  "rule_ids",
325
386
  "source",
326
387
  "published",
388
+ "idate",
389
+ "udate",
327
390
  "fields",
328
391
  "frequency",
329
392
  "cron",
@@ -361,9 +424,23 @@
361
424
  {
362
425
  "flag": "--published",
363
426
  "field": "published",
364
- "type": "enum(T-0、T-1、T-7)",
427
+ "type": "string",
365
428
  "required": true,
366
- "desc": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天到昨天)"
429
+ "desc": "**发布时间**口径(必填,主口径 —— 它同时决定查哪个月的索引、怎么拆分片,所以不能缺省)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。"
430
+ },
431
+ {
432
+ "flag": "--idate",
433
+ "field": "idate",
434
+ "type": "string",
435
+ "required": false,
436
+ "desc": "**入库时间**口径(选填,不传=该维度不过滤)。在发布时间窗**之内**再 AND 一层:入库时间落在本区间的数据。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。"
437
+ },
438
+ {
439
+ "flag": "--udate",
440
+ "field": "udate",
441
+ "type": "string",
442
+ "required": false,
443
+ "desc": "**更新时间**口径(选填,不传=该维度不过滤)。在发布时间窗**之内**再 AND 一层:更新时间落在本区间的数据。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。"
367
444
  },
368
445
  {
369
446
  "flag": "--frequency",
@@ -384,7 +461,7 @@
384
461
  "field": "target",
385
462
  "type": "object(json)",
386
463
  "required": false,
387
- "desc": "投递目标;省略默认 octo(excel)。本期仅接受 octo"
464
+ "desc": "投递目标;省略默认 octo(json)。本期支持 octo(上传存储→CDN url)与 sftp(账密上传远端,路径/文件名可用日期变量);kafka: 暂未实现。"
388
465
  }
389
466
  ],
390
467
  "transport": {
@@ -527,10 +604,34 @@
527
604
  "type": "array"
528
605
  },
529
606
  "published": {
530
- "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天)",
607
+ "description": "发布时间口径(相对,规范形态 T-M~T-N,如 T-1~T-1 / T-7~T-3);触发时按 task_time 折算成绝对日期区间",
531
608
  "title": "Published",
532
609
  "type": "string"
533
610
  },
611
+ "idate": {
612
+ "anyOf": [
613
+ {
614
+ "type": "string"
615
+ },
616
+ {
617
+ "type": "null"
618
+ }
619
+ ],
620
+ "description": "入库时间口径(相对,T-M~T-N);null=该维度不过滤",
621
+ "title": "Idate"
622
+ },
623
+ "udate": {
624
+ "anyOf": [
625
+ {
626
+ "type": "string"
627
+ },
628
+ {
629
+ "type": "null"
630
+ }
631
+ ],
632
+ "description": "更新时间口径(相对,T-M~T-N);null=该维度不过滤",
633
+ "title": "Udate"
634
+ },
534
635
  "fields": {
535
636
  "description": "拉取/导出字段(空=全量)",
536
637
  "items": {
@@ -550,7 +651,7 @@
550
651
  "type": "string"
551
652
  },
552
653
  "target_type": {
553
- "description": "投递类型:octo(本期)/sftp/kafka",
654
+ "description": "投递类型:octo、sftp、kafka(暂不支持)",
554
655
  "title": "Target Type",
555
656
  "type": "string"
556
657
  },
@@ -582,6 +683,8 @@
582
683
  "rule_ids",
583
684
  "source",
584
685
  "published",
686
+ "idate",
687
+ "udate",
585
688
  "fields",
586
689
  "frequency",
587
690
  "cron",
@@ -720,7 +823,7 @@
720
823
  },
721
824
  "SftpTarget": {
722
825
  "additionalProperties": false,
723
- "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。",
826
+ "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。\n目录与文件名都支持日期变量 ``yyyyMMdd`` / ``yyyyMM`` / ``yyyy``,同一个 task 重跑多少次,远端路径与文件名都不变。",
724
827
  "properties": {
725
828
  "type": {
726
829
  "const": "sftp",
@@ -750,10 +853,23 @@
750
853
  "type": "string"
751
854
  },
752
855
  "remote_path": {
753
- "description": "远端目录/路径",
856
+ "description": "远端目录/路径。可在**任意一层**用日期变量,但变量必须**独占一层**:`/data/sub/yyyyMM/yyyyMMdd` 合法,`/data/sub_yyyyMMdd` 非法。只认 yyyyMMdd / yyyyMM / yyyy 三种;不允许 '..'、空目录层。",
754
857
  "title": "Remote Path",
755
858
  "type": "string"
756
859
  },
860
+ "filename_template": {
861
+ "anyOf": [
862
+ {
863
+ "type": "string"
864
+ },
865
+ {
866
+ "type": "null"
867
+ }
868
+ ],
869
+ "default": null,
870
+ "description": "自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。",
871
+ "title": "Filename Template"
872
+ },
757
873
  "format": {
758
874
  "default": "json",
759
875
  "description": "文件格式:csv/excel/json(默认 json)",
@@ -794,7 +910,7 @@
794
910
  }
795
911
  ],
796
912
  "default": null,
797
- "description": "回溯起始;与 end_time 同传同不传",
913
+ "description": "本次**发布时间**下界(绝对时间,ISO8601 UTC+8,如 2026-08-14T00:00:00+08:00);与 end_time 同传同不传;不传则按 job 上的 published 相对口径折算",
798
914
  "title": "Start Time"
799
915
  },
800
916
  "end_time": {
@@ -807,9 +923,61 @@
807
923
  }
808
924
  ],
809
925
  "default": null,
810
- "description": "回溯结束",
926
+ "description": "本次**发布时间**上界(绝对时间,ISO8601 UTC+8,如 2026-08-20T23:59:59+08:00)",
811
927
  "title": "End Time"
812
928
  },
929
+ "idate_start": {
930
+ "anyOf": [
931
+ {
932
+ "type": "string"
933
+ },
934
+ {
935
+ "type": "null"
936
+ }
937
+ ],
938
+ "default": null,
939
+ "description": "本次**入库时间**下界(绝对时间,ISO8601 UTC+8);与 idate_end 同传同不传;不传则按 job 上的 idate 相对口径折算,job 也没配=该维度不过滤",
940
+ "title": "Idate Start"
941
+ },
942
+ "idate_end": {
943
+ "anyOf": [
944
+ {
945
+ "type": "string"
946
+ },
947
+ {
948
+ "type": "null"
949
+ }
950
+ ],
951
+ "default": null,
952
+ "description": "本次**入库时间**上界(绝对时间,ISO8601 UTC+8)",
953
+ "title": "Idate End"
954
+ },
955
+ "udate_start": {
956
+ "anyOf": [
957
+ {
958
+ "type": "string"
959
+ },
960
+ {
961
+ "type": "null"
962
+ }
963
+ ],
964
+ "default": null,
965
+ "description": "本次**更新时间**下界(绝对时间,ISO8601 UTC+8);与 udate_end 同传同不传;不传则按 job 上的 udate 相对口径折算,job 也没配=该维度不过滤",
966
+ "title": "Udate Start"
967
+ },
968
+ "udate_end": {
969
+ "anyOf": [
970
+ {
971
+ "type": "string"
972
+ },
973
+ {
974
+ "type": "null"
975
+ }
976
+ ],
977
+ "default": null,
978
+ "description": "本次**更新时间**上界(绝对时间,ISO8601 UTC+8)",
979
+ "title": "Udate End"
980
+ },
813
981
  "target": {
814
982
  "anyOf": [
815
983
  {
@@ -882,14 +1050,42 @@
882
1050
  "field": "start_time",
883
1051
  "type": "string",
884
1052
  "required": false,
885
- "desc": "回溯起始;与 end_time 同传同不传"
1053
+ "desc": "本次**发布时间**下界(绝对时间,ISO8601 UTC+8,如 2026-08-14T00:00:00+08:00);与 end_time 同传同不传;不传则按 job 上的 published 相对口径折算"
886
1054
  },
887
1055
  {
888
1056
  "flag": "--end-time",
889
1057
  "field": "end_time",
890
1058
  "type": "string",
891
1059
  "required": false,
892
- "desc": "回溯结束"
1060
+ "desc": "本次**发布时间**上界(绝对时间,ISO8601 UTC+8,如 2026-08-20T23:59:59+08:00)"
1061
+ },
1062
+ {
1063
+ "flag": "--idate-start",
1064
+ "field": "idate_start",
1065
+ "type": "string",
1066
+ "required": false,
1067
+ "desc": "本次**入库时间**下界(绝对时间,ISO8601 UTC+8);与 idate_end 同传同不传;不传则按 job 上的 idate 相对口径折算,job 也没配=该维度不过滤"
1068
+ },
1069
+ {
1070
+ "flag": "--idate-end",
1071
+ "field": "idate_end",
1072
+ "type": "string",
1073
+ "required": false,
1074
+ "desc": "本次**入库时间**上界(绝对时间,ISO8601 UTC+8)"
1075
+ },
1076
+ {
1077
+ "flag": "--udate-start",
1078
+ "field": "udate_start",
1079
+ "type": "string",
1080
+ "required": false,
1081
+ "desc": "本次**更新时间**下界(绝对时间,ISO8601 UTC+8);与 udate_end 同传同不传;不传则按 job 上的 udate 相对口径折算,job 也没配=该维度不过滤"
1082
+ },
1083
+ {
1084
+ "flag": "--udate-end",
1085
+ "field": "udate_end",
1086
+ "type": "string",
1087
+ "required": false,
1088
+ "desc": "本次**更新时间**上界(绝对时间,ISO8601 UTC+8)"
893
1089
  },
894
1090
  {
895
1091
  "flag": "--target",
@@ -992,7 +1188,7 @@
992
1188
  },
993
1189
  "SftpTarget": {
994
1190
  "additionalProperties": false,
995
- "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。",
1191
+ "description": "sftp(本期):把导出文件上传到 SFTP 远端目录。\n目录与文件名都支持日期变量 ``yyyyMMdd`` / ``yyyyMM`` / ``yyyy``,同一个 task 重跑多少次,远端路径与文件名都不变。",
996
1192
  "properties": {
997
1193
  "type": {
998
1194
  "const": "sftp",
@@ -1022,10 +1218,23 @@
1022
1218
  "type": "string"
1023
1219
  },
1024
1220
  "remote_path": {
1025
- "description": "远端目录/路径",
1221
+ "description": "远端目录/路径。可在**任意一层**用日期变量,但变量必须**独占一层**:`/data/sub/yyyyMM/yyyyMMdd` 合法,`/data/sub_yyyyMMdd` 非法。只认 yyyyMMdd / yyyyMM / yyyy 三种;不允许 '..'、空目录层。",
1026
1222
  "title": "Remote Path",
1027
1223
  "type": "string"
1028
1224
  },
1225
+ "filename_template": {
1226
+ "anyOf": [
1227
+ {
1228
+ "type": "string"
1229
+ },
1230
+ {
1231
+ "type": "null"
1232
+ }
1233
+ ],
1234
+ "default": null,
1235
+ "description": "自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。",
1236
+ "title": "Filename Template"
1237
+ },
1029
1238
  "format": {
1030
1239
  "default": "json",
1031
1240
  "description": "文件格式:csv/excel/json(默认 json)",
@@ -1110,11 +1319,7 @@
1110
1319
  "published": {
1111
1320
  "anyOf": [
1112
1321
  {
1113
- "enum": [
1114
- "T-0",
1115
- "T-1",
1116
- "T-7"
1117
- ],
1322
+ "pattern": "^T-\\d+~T-\\d+$",
1118
1323
  "type": "string"
1119
1324
  },
1120
1325
  {
@@ -1122,9 +1327,37 @@
1122
1327
  }
1123
1328
  ],
1124
1329
  "default": null,
1125
- "description": "发布时间口径:T-0 / T-1 / T-7",
1330
+ "description": "**发布时间**口径(必填字段,只能改不能清)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。",
1126
1331
  "title": "Published"
1127
1332
  },
1333
+ "idate": {
1334
+ "anyOf": [
1335
+ {
1336
+ "pattern": "^(?:T-\\d+~T-\\d+)?$",
1337
+ "type": "string"
1338
+ },
1339
+ {
1340
+ "type": "null"
1341
+ }
1342
+ ],
1343
+ "default": null,
1344
+ "description": "**入库时间**口径。不传=不改;传空串 \"\"=**清除**该维度(恢复成不过滤)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。",
1345
+ "title": "Idate"
1346
+ },
1347
+ "udate": {
1348
+ "anyOf": [
1349
+ {
1350
+ "pattern": "^(?:T-\\d+~T-\\d+)?$",
1351
+ "type": "string"
1352
+ },
1353
+ {
1354
+ "type": "null"
1355
+ }
1356
+ ],
1357
+ "default": null,
1358
+ "description": "**更新时间**口径。不传=不改;传空串 \"\"=**清除**该维度(恢复成不过滤)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。",
1359
+ "title": "Udate"
1360
+ },
1128
1361
  "fields": {
1129
1362
  "anyOf": [
1130
1363
  {
@@ -1243,10 +1476,34 @@
1243
1476
  "type": "array"
1244
1477
  },
1245
1478
  "published": {
1246
- "description": "发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天)",
1479
+ "description": "发布时间口径(相对,规范形态 T-M~T-N,如 T-1~T-1 / T-7~T-3);触发时按 task_time 折算成绝对日期区间",
1247
1480
  "title": "Published",
1248
1481
  "type": "string"
1249
1482
  },
1483
+ "idate": {
1484
+ "anyOf": [
1485
+ {
1486
+ "type": "string"
1487
+ },
1488
+ {
1489
+ "type": "null"
1490
+ }
1491
+ ],
1492
+ "description": "入库时间口径(相对,T-M~T-N);null=该维度不过滤",
1493
+ "title": "Idate"
1494
+ },
1495
+ "udate": {
1496
+ "anyOf": [
1497
+ {
1498
+ "type": "string"
1499
+ },
1500
+ {
1501
+ "type": "null"
1502
+ }
1503
+ ],
1504
+ "description": "更新时间口径(相对,T-M~T-N);null=该维度不过滤",
1505
+ "title": "Udate"
1506
+ },
1250
1507
  "fields": {
1251
1508
  "description": "拉取/导出字段(空=全量)",
1252
1509
  "items": {
@@ -1266,7 +1523,7 @@
1266
1523
  "type": "string"
1267
1524
  },
1268
1525
  "target_type": {
1269
- "description": "投递类型:octo(本期)/sftp/kafka",
1526
+ "description": "投递类型:octo、sftp、kafka(暂不支持)",
1270
1527
  "title": "Target Type",
1271
1528
  "type": "string"
1272
1529
  },
@@ -1298,6 +1555,8 @@
1298
1555
  "rule_ids",
1299
1556
  "source",
1300
1557
  "published",
1558
+ "idate",
1559
+ "udate",
1301
1560
  "fields",
1302
1561
  "frequency",
1303
1562
  "cron",
@@ -1342,9 +1601,23 @@
1342
1601
  {
1343
1602
  "flag": "--published",
1344
1603
  "field": "published",
1345
- "type": "enum(T-0、T-1、T-7)",
1604
+ "type": "string",
1605
+ "required": false,
1606
+ "desc": "**发布时间**口径(必填字段,只能改不能清)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。"
1607
+ },
1608
+ {
1609
+ "flag": "--idate",
1610
+ "field": "idate",
1611
+ "type": "string",
1612
+ "required": false,
1613
+ "desc": "**入库时间**口径。不传=不改;传空串 \"\"=**清除**该维度(恢复成不过滤)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。"
1614
+ },
1615
+ {
1616
+ "flag": "--udate",
1617
+ "field": "udate",
1618
+ "type": "string",
1346
1619
  "required": false,
1347
- "desc": "发布时间口径:T-0 / T-1 / T-7"
1620
+ "desc": "**更新时间**口径。不传=不改;传空串 \"\"=**清除**该维度(恢复成不过滤)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。"
1348
1621
  },
1349
1622
  {
1350
1623
  "flag": "--fields",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-data/social-neuron-subscription",
3
- "version": "1.0.0-beta.4",
3
+ "version": "1.0.0-beta.6",
4
4
  "description": "Social Neuron subscription 能力 CLI —— 一能力一命令(social-neuron-subscription),薄客户端直达 /subscription/{op}。",
5
5
  "bin": {
6
6
  "social-neuron-subscription": "bin/cli.js"
@@ -24,10 +24,12 @@ metadata:
24
24
  | --name | name | string | 是 | minLen=1, maxLen=128 | job 名称,同一凭证(token)下唯一 |
25
25
  | --rule-ids | rule_ids | list[string] | 是 | minItems=1, minLen=1 | 魔方规则ID数组,至少 1 个 |
26
26
  | --source | source | list[string] | 是 | minItems=1, minLen=1 | 站点数组,至少 1 个;只能取已配置站点 |
27
- | --published | published | enum(T-0、T-1、T-7) | 是 | - | 发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天到昨天) |
27
+ | --published | published | string | 是 | - | **发布时间**口径(必填,主口径 —— 它同时决定查哪个月的索引、怎么拆分片,所以不能缺省)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。 |
28
+ | --idate | idate | string | 否 | - | **入库时间**口径(选填,不传=该维度不过滤)。在发布时间窗**之内**再 AND 一层:入库时间落在本区间的数据。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。 |
29
+ | --udate | udate | string | 否 | - | **更新时间**口径(选填,不传=该维度不过滤)。在发布时间窗**之内**再 AND 一层:更新时间落在本区间的数据。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。 |
28
30
  | --frequency | frequency | string | 是 | minLen=1, maxLen=64 | 自然语言同步频率,系统转 cron(东八区)。可指定具体时间、并**支持一天多次**:如「每天9点」「每天9点和15点」(一天跑两次)「每周一9点」「每小时」「每30分钟」。无法解析为 cron 会被拒绝。 |
29
31
  | --fields | fields | list[string] | 否 | minLen=1 | 拉取/导出字段;不填拉全量 |
30
- | --target | target | OctoTarget、SftpTarget、KafkaTarget | 否 | - | 投递目标;省略默认 octo(excel)。本期仅接受 octo |
32
+ | --target | target | OctoTarget、SftpTarget、KafkaTarget | 否 | - | 投递目标;省略默认 octo(json)。本期支持 octo(上传存储→CDN url)与 sftp(账密上传远端,路径/文件名可用日期变量);kafka: 暂未实现。 |
31
33
 
32
34
  **对象 `KafkaTarget`** —— kafka(规划):把记录流投送到 topic(无文件)。
33
35
 
@@ -46,6 +48,7 @@ metadata:
46
48
  | format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
47
49
 
48
50
  **对象 `SftpTarget`** —— sftp(本期):把导出文件上传到 SFTP 远端目录。
51
+ 目录与文件名都支持日期变量 ``yyyyMMdd`` / ``yyyyMM`` / ``yyyy``,同一个 task 重跑多少次,远端路径与文件名都不变。
49
52
 
50
53
  | 键 | 类型 | 必填 | 约束 | 说明 |
51
54
  |---|---|---|---|---|
@@ -54,7 +57,8 @@ metadata:
54
57
  | port | integer | 否 | - | 端口,默认 22 |
55
58
  | username | string | 是 | - | 登录用户名 |
56
59
  | password | string | 是 | - | 登录密码 |
57
- | remote_path | string | 是 | - | 远端目录/路径 |
60
+ | remote_path | string | 是 | - | 远端目录/路径。可在**任意一层**用日期变量,但变量必须**独占一层**:`/data/sub/yyyyMM/yyyyMMdd` 合法,`/data/sub_yyyyMMdd` 非法。只认 yyyyMMdd / yyyyMM / yyyy 三种;不允许 '..'、空目录层。 |
61
+ | filename_template | string | 否 | - | 自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。 |
58
62
  | format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
59
63
 
60
64
  **出参 `SubJob`**
@@ -65,11 +69,13 @@ metadata:
65
69
  | name | string | 是 | - | job 名称,同一凭证(token)下唯一 |
66
70
  | rule_ids | list[string] | 是 | - | 魔方规则ID数组 |
67
71
  | source | list[string] | 是 | - | 站点数组 |
68
- | published | string | 是 | - | 发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天) |
72
+ | published | string | 是 | - | 发布时间口径(相对,规范形态 T-M~T-N,如 T-1~T-1 / T-7~T-3);触发时按 task_time 折算成绝对日期区间 |
73
+ | idate | string | 是 | - | 入库时间口径(相对,T-M~T-N);null=该维度不过滤 |
74
+ | udate | string | 是 | - | 更新时间口径(相对,T-M~T-N);null=该维度不过滤 |
69
75
  | fields | list[string] | 是 | - | 拉取/导出字段(空=全量) |
70
76
  | frequency | string | 是 | - | 自然语言频率 |
71
77
  | cron | string | 是 | - | 系统由 frequency 转换的 cron |
72
- | target_type | string | 是 | - | 投递类型:octo(本期)/sftp/kafka |
78
+ | target_type | string | 是 | - | 投递类型:octo、sftp、kafka(暂不支持) |
73
79
  | target_info | object | 是 | - | 投递配置 |
74
80
  | active | integer | 是 | - | 1 生效 / 0 停用 |
75
81
  | created_at | string | 是 | - | 创建时间(ISO8601,UTC+8) |
@@ -119,11 +125,13 @@ metadata:
119
125
  | name | string | 是 | - | job 名称,同一凭证(token)下唯一 |
120
126
  | rule_ids | list[string] | 是 | - | 魔方规则ID数组 |
121
127
  | source | list[string] | 是 | - | 站点数组 |
122
- | published | string | 是 | - | 发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天) |
128
+ | published | string | 是 | - | 发布时间口径(相对,规范形态 T-M~T-N,如 T-1~T-1 / T-7~T-3);触发时按 task_time 折算成绝对日期区间 |
129
+ | idate | string | 是 | - | 入库时间口径(相对,T-M~T-N);null=该维度不过滤 |
130
+ | udate | string | 是 | - | 更新时间口径(相对,T-M~T-N);null=该维度不过滤 |
123
131
  | fields | list[string] | 是 | - | 拉取/导出字段(空=全量) |
124
132
  | frequency | string | 是 | - | 自然语言频率 |
125
133
  | cron | string | 是 | - | 系统由 frequency 转换的 cron |
126
- | target_type | string | 是 | - | 投递类型:octo(本期)/sftp/kafka |
134
+ | target_type | string | 是 | - | 投递类型:octo、sftp、kafka(暂不支持) |
127
135
  | target_info | object | 是 | - | 投递配置 |
128
136
  | active | integer | 是 | - | 1 生效 / 0 停用 |
129
137
  | created_at | string | 是 | - | 创建时间(ISO8601,UTC+8) |
@@ -143,8 +151,12 @@ metadata:
143
151
  | flag | 字段 | 类型 | 必填 | 约束 | 说明 |
144
152
  |---|---|---|---|---|---|
145
153
  | --job-id | job_id | integer | 是 | - | 目标 job |
146
- | --start-time | start_time | string | 否 | - | 回溯起始;与 end_time 同传同不传 |
147
- | --end-time | end_time | string | 否 | - | 回溯结束 |
154
+ | --start-time | start_time | string | 否 | - | 本次**发布时间**下界(绝对时间,ISO8601 UTC+8,如 2026-08-14T00:00:00+08:00);与 end_time 同传同不传;不传则按 job 上的 published 相对口径折算 |
155
+ | --end-time | end_time | string | 否 | - | 本次**发布时间**上界(绝对时间,ISO8601 UTC+8,如 2026-08-20T23:59:59+08:00) |
156
+ | --idate-start | idate_start | string | 否 | - | 本次**入库时间**下界(绝对时间,ISO8601 UTC+8);与 idate_end 同传同不传;不传则按 job 上的 idate 相对口径折算,job 也没配=该维度不过滤 |
157
+ | --idate-end | idate_end | string | 否 | - | 本次**入库时间**上界(绝对时间,ISO8601 UTC+8) |
158
+ | --udate-start | udate_start | string | 否 | - | 本次**更新时间**下界(绝对时间,ISO8601 UTC+8);与 udate_end 同传同不传;不传则按 job 上的 udate 相对口径折算,job 也没配=该维度不过滤 |
159
+ | --udate-end | udate_end | string | 否 | - | 本次**更新时间**上界(绝对时间,ISO8601 UTC+8) |
148
160
  | --target | target | OctoTarget、SftpTarget、KafkaTarget | 否 | - | 覆盖本次投递目标 |
149
161
 
150
162
  **对象 `KafkaTarget`** —— kafka(规划):把记录流投送到 topic(无文件)。
@@ -164,6 +176,7 @@ metadata:
164
176
  | format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
165
177
 
166
178
  **对象 `SftpTarget`** —— sftp(本期):把导出文件上传到 SFTP 远端目录。
179
+ 目录与文件名都支持日期变量 ``yyyyMMdd`` / ``yyyyMM`` / ``yyyy``,同一个 task 重跑多少次,远端路径与文件名都不变。
167
180
 
168
181
  | 键 | 类型 | 必填 | 约束 | 说明 |
169
182
  |---|---|---|---|---|
@@ -172,7 +185,8 @@ metadata:
172
185
  | port | integer | 否 | - | 端口,默认 22 |
173
186
  | username | string | 是 | - | 登录用户名 |
174
187
  | password | string | 是 | - | 登录密码 |
175
- | remote_path | string | 是 | - | 远端目录/路径 |
188
+ | remote_path | string | 是 | - | 远端目录/路径。可在**任意一层**用日期变量,但变量必须**独占一层**:`/data/sub/yyyyMM/yyyyMMdd` 合法,`/data/sub_yyyyMMdd` 非法。只认 yyyyMMdd / yyyyMM / yyyy 三种;不允许 '..'、空目录层。 |
189
+ | filename_template | string | 否 | - | 自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。 |
176
190
  | format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
177
191
 
178
192
  **出参 `SubJobTriggerResult`**
@@ -195,7 +209,9 @@ metadata:
195
209
  | --name | name | string | 否 | minLen=1, maxLen=128 | 新名称(同一凭证下唯一) |
196
210
  | --rule-ids | rule_ids | list[string] | 否 | minItems=1, minLen=1 | 整组全量覆盖 |
197
211
  | --source | source | list[string] | 否 | minItems=1, minLen=1 | 整组全量覆盖 |
198
- | --published | published | enum(T-0、T-1、T-7) | 否 | - | 发布时间口径:T-0 / T-1 / T-7 |
212
+ | --published | published | string | 否 | - | **发布时间**口径(必填字段,只能改不能清)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。 |
213
+ | --idate | idate | string | 否 | - | **入库时间**口径。不传=不改;传空串 ""=**清除**该维度(恢复成不过滤)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。 |
214
+ | --udate | udate | string | 否 | - | **更新时间**口径。不传=不改;传空串 ""=**清除**该维度(恢复成不过滤)。记法 **T-M~T-N**:从 M 天前到 N 天前的闭区间(要求 M>=N),端点按天计,基准日是本次触发的 task_time(东八区;定时=cron 槽位日,手动=触发当日)。**两个端点都必须写全,不接受单值简写** —— 「昨天」写 T-1~T-1,写 T-1 会被拒绝。举例:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-2=前天;T-1~T-0=昨天到今天(2天);T-2~T-1=前天到昨天(2天,口语的「前两天」);T-3~T-1=前三天(3天);T-7~T-3=7天前到3天前(5天);T-7~T-1=近7天到昨天(7天)。跨度最多 120 天、偏移最多 720 天(近两年),M<N 或超限直接报错(不会静默回落)。 |
199
215
  | --fields | fields | list[string] | 否 | minLen=1 | 整组全量覆盖 |
200
216
  | --frequency | frequency | string | 否 | minLen=1, maxLen=64 | 传入则按新频率重算 cron(用法同创建;支持一天多次,如「每天9点和15点」);无法解析为 cron 会被拒绝 |
201
217
  | --target | target | OctoTarget、SftpTarget、KafkaTarget | 否 | - | 整体替换投递目标 |
@@ -218,6 +234,7 @@ metadata:
218
234
  | format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
219
235
 
220
236
  **对象 `SftpTarget`** —— sftp(本期):把导出文件上传到 SFTP 远端目录。
237
+ 目录与文件名都支持日期变量 ``yyyyMMdd`` / ``yyyyMM`` / ``yyyy``,同一个 task 重跑多少次,远端路径与文件名都不变。
221
238
 
222
239
  | 键 | 类型 | 必填 | 约束 | 说明 |
223
240
  |---|---|---|---|---|
@@ -226,7 +243,8 @@ metadata:
226
243
  | port | integer | 否 | - | 端口,默认 22 |
227
244
  | username | string | 是 | - | 登录用户名 |
228
245
  | password | string | 是 | - | 登录密码 |
229
- | remote_path | string | 是 | - | 远端目录/路径 |
246
+ | remote_path | string | 是 | - | 远端目录/路径。可在**任意一层**用日期变量,但变量必须**独占一层**:`/data/sub/yyyyMM/yyyyMMdd` 合法,`/data/sub_yyyyMMdd` 非法。只认 yyyyMMdd / yyyyMM / yyyy 三种;不允许 '..'、空目录层。 |
247
+ | filename_template | string | 否 | - | 自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。 |
230
248
  | format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
231
249
 
232
250
  **出参 `SubJob`**
@@ -237,11 +255,13 @@ metadata:
237
255
  | name | string | 是 | - | job 名称,同一凭证(token)下唯一 |
238
256
  | rule_ids | list[string] | 是 | - | 魔方规则ID数组 |
239
257
  | source | list[string] | 是 | - | 站点数组 |
240
- | published | string | 是 | - | 发布时间口径:T-0(当天)/ T-1(昨天)/ T-7(近7天) |
258
+ | published | string | 是 | - | 发布时间口径(相对,规范形态 T-M~T-N,如 T-1~T-1 / T-7~T-3);触发时按 task_time 折算成绝对日期区间 |
259
+ | idate | string | 是 | - | 入库时间口径(相对,T-M~T-N);null=该维度不过滤 |
260
+ | udate | string | 是 | - | 更新时间口径(相对,T-M~T-N);null=该维度不过滤 |
241
261
  | fields | list[string] | 是 | - | 拉取/导出字段(空=全量) |
242
262
  | frequency | string | 是 | - | 自然语言频率 |
243
263
  | cron | string | 是 | - | 系统由 frequency 转换的 cron |
244
- | target_type | string | 是 | - | 投递类型:octo(本期)/sftp/kafka |
264
+ | target_type | string | 是 | - | 投递类型:octo、sftp、kafka(暂不支持) |
245
265
  | target_info | object | 是 | - | 投递配置 |
246
266
  | active | integer | 是 | - | 1 生效 / 0 停用 |
247
267
  | created_at | string | 是 | - | 创建时间(ISO8601,UTC+8) |