dataops-sdk 0.3.4__tar.gz → 0.3.5__tar.gz
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.
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/PKG-INFO +1 -1
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/__init__.py +12 -1
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/__init__.py +10 -3
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/alarm.py +45 -10
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/data_table.py +1 -1
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/meta.py +75 -24
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/skill.py +5 -3
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/__init__.py +20 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/alarm.py +163 -11
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/auth.py +3 -6
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/data_table.py +105 -105
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/dataset.py +10 -10
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/dict_.py +3 -3
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/meta.py +66 -16
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/metrics.py +3 -3
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/report.py +3 -3
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/skill.py +22 -12
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/table.py +220 -10
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/widget.py +3 -3
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/workflow.py +3 -3
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/session.py +33 -105
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/utils/utils.py +8 -8
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk.egg-info/PKG-INFO +1 -1
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/pyproject.toml +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/setup.cfg +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/constants.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/exceptions.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/__init__.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/datasource_factory.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/__init__.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/config.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/constants.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/instance.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/nacos_exception.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/naming_param.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/naming_request.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/naming_response.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/preserved_metadata_key.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/schemas/nacos/service.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/__init__.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/common.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/dbConn_base.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/dbConn_sync.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/duckdb_manager.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/file_transfer_base.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/ftp_file_transfer.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/nacos.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/neo4j_sync.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/queue_base.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/queue_kafka.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/runner/utils/sftp_file_transfer.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/api.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/datasource.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/dict_.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/enums.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/group.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/hazard.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/query.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/report.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/table.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/user.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/widget.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/schemas/workflow.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/api.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/datasource.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/hazard.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/services/ref.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/__init__.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/builder.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/constants.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/markdown_parser.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/models.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/parse_utils.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/render_utils.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/renderers.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/tiptap/tool.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/utils/__init__.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/utils/common.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk/utils/log.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk.egg-info/SOURCES.txt +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk.egg-info/dependency_links.txt +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk.egg-info/requires.txt +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/src/dataops_sdk.egg-info/top_level.txt +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/tests/test_constants.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/tests/test_exceptions.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/tests/test_session.py +0 -0
- {dataops_sdk-0.3.4 → dataops_sdk-0.3.5}/tests/test_utils.py +0 -0
|
@@ -28,8 +28,11 @@ from .services import ( # noqa: F401
|
|
|
28
28
|
service_count_widget_by_code,
|
|
29
29
|
service_create_data_table,
|
|
30
30
|
service_create_data_table_record,
|
|
31
|
+
service_create_table_record,
|
|
31
32
|
service_delete_data_table_record_by_id,
|
|
32
33
|
service_delete_data_table_record_by_id_list,
|
|
34
|
+
service_delete_table_record_by_id,
|
|
35
|
+
service_delete_table_record_by_id_list,
|
|
33
36
|
service_exec_sql_by_datasource,
|
|
34
37
|
service_find_alarm_table_data,
|
|
35
38
|
service_find_meta_by_codes,
|
|
@@ -63,6 +66,11 @@ from .services import ( # noqa: F401
|
|
|
63
66
|
service_get_table_data_by_name,
|
|
64
67
|
service_get_table_detail_by_code,
|
|
65
68
|
service_get_table_detail_by_name,
|
|
69
|
+
service_get_table_list_by_code,
|
|
70
|
+
service_get_table_record_by_id,
|
|
71
|
+
service_get_table_records_by_code,
|
|
72
|
+
service_get_table_reference_list,
|
|
73
|
+
service_get_table_total_by_code,
|
|
66
74
|
service_get_widget_data_by_code,
|
|
67
75
|
service_get_widget_detail_by_code,
|
|
68
76
|
service_get_workflow_by_code,
|
|
@@ -96,6 +104,9 @@ from .services import ( # noqa: F401
|
|
|
96
104
|
service_trigger_hazard_task,
|
|
97
105
|
service_update_data_table_record_by_id,
|
|
98
106
|
service_update_data_table_record_by_id_list,
|
|
107
|
+
service_update_table_record_by_id,
|
|
108
|
+
service_update_table_record_by_id_list,
|
|
99
109
|
)
|
|
110
|
+
from .session import dataops_base_url_context, request_context
|
|
100
111
|
|
|
101
|
-
__version__ = "0.3.
|
|
112
|
+
__version__ = "0.3.5"
|
|
@@ -4,7 +4,15 @@
|
|
|
4
4
|
dataops_sdk.schemas import ...`` 使用。
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
from .alarm import
|
|
7
|
+
from .alarm import (
|
|
8
|
+
AlarmActionItem,
|
|
9
|
+
AlarmBuiltinFunctionItem,
|
|
10
|
+
AlarmDetail,
|
|
11
|
+
AlarmPreprocessItem,
|
|
12
|
+
AlarmRuleItem,
|
|
13
|
+
AlarmRuleMatchItem,
|
|
14
|
+
AlarmSpecItem,
|
|
15
|
+
)
|
|
8
16
|
from .api import ApiMeta, HttpInterfaceData
|
|
9
17
|
from .data_table import DataTableData, MetaDataTable
|
|
10
18
|
from .datasource import DataDataSource
|
|
@@ -19,12 +27,11 @@ from .meta import (
|
|
|
19
27
|
MetaBase,
|
|
20
28
|
MetaCreate,
|
|
21
29
|
MetaRef,
|
|
22
|
-
MetaRelease,
|
|
23
30
|
MetaUpdate,
|
|
24
31
|
)
|
|
25
32
|
from .query import PageParam, SqlCondition, SqlQueryParam, SqlSort
|
|
26
33
|
from .report import ReportMeta, ReportMetaData
|
|
27
|
-
from .skill import DataSkill, MetaSkill, SkillCallResult
|
|
34
|
+
from .skill import DataSkill, DataSkillSubFile, MetaSkill, SkillCallResult
|
|
28
35
|
from .table import (
|
|
29
36
|
ColumnItem,
|
|
30
37
|
DataBaseColumnDictExternal,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"""告警 (Alarm) 相关实体的 Schema 定义.
|
|
2
2
|
|
|
3
3
|
对应平台告警规则、规则规格、处理动作与匹配项等数据模型,
|
|
4
|
-
统一继承自 ``
|
|
4
|
+
统一继承自 ``MetaBase`` 并复用了启用状态相关字段。
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from typing import Annotated
|
|
8
8
|
|
|
9
|
-
from pydantic import BaseModel, Field
|
|
9
|
+
from pydantic import BaseModel, ConfigDict, Field, JsonValue
|
|
10
10
|
|
|
11
|
-
from dataops_sdk.schemas.meta import MetaRelease
|
|
11
|
+
from dataops_sdk.schemas.meta import Meta, MetaBase, MetaRelease
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class AlarmExternal(BaseModel):
|
|
@@ -21,7 +21,7 @@ class AlarmExternal(BaseModel):
|
|
|
21
21
|
N_IS_ENABLED: Annotated[str, Field(description="是否启用名称")]
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
class AlarmRuleItem(
|
|
24
|
+
class AlarmRuleItem(MetaBase, AlarmExternal):
|
|
25
25
|
"""告警规则条目.
|
|
26
26
|
|
|
27
27
|
Attributes:
|
|
@@ -33,7 +33,7 @@ class AlarmRuleItem(MetaRelease, AlarmExternal):
|
|
|
33
33
|
DESCRIPTION: Annotated[str, Field(description="描述")] = ""
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
class AlarmSpecItem(
|
|
36
|
+
class AlarmSpecItem(MetaBase, AlarmExternal):
|
|
37
37
|
"""告警规则规格条目.
|
|
38
38
|
|
|
39
39
|
Attributes:
|
|
@@ -46,12 +46,12 @@ class AlarmSpecItem(MetaRelease, AlarmExternal):
|
|
|
46
46
|
|
|
47
47
|
INDUSTRY: Annotated[str, Field(description="行业")]
|
|
48
48
|
N_INDUSTRY: Annotated[str, Field(description="行业名称")]
|
|
49
|
-
BUSINESS_DOMAIN: Annotated[str, Field(description="业务域")]
|
|
50
|
-
N_BUSINESS_DOMAIN: Annotated[str, Field(description="业务域名称")]
|
|
51
|
-
KAFKA_TOPICS: Annotated[str, Field(description="Kafka主题列表")]
|
|
49
|
+
BUSINESS_DOMAIN: Annotated[str | None, Field(description="业务域")] = None
|
|
50
|
+
N_BUSINESS_DOMAIN: Annotated[str | None, Field(description="业务域名称")] = None
|
|
51
|
+
KAFKA_TOPICS: Annotated[str | None, Field(description="Kafka主题列表")] = None
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
class AlarmActionItem(
|
|
54
|
+
class AlarmActionItem(MetaBase, AlarmExternal):
|
|
55
55
|
"""告警处理动作条目.
|
|
56
56
|
|
|
57
57
|
Attributes:
|
|
@@ -66,7 +66,7 @@ class AlarmActionItem(MetaRelease, AlarmExternal):
|
|
|
66
66
|
SCRIPT_CONTENT: Annotated[str, Field(description="脚本内容")]
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
class AlarmRuleMatchItem(
|
|
69
|
+
class AlarmRuleMatchItem(MetaBase, AlarmExternal):
|
|
70
70
|
"""告警规则匹配条目.
|
|
71
71
|
|
|
72
72
|
Attributes:
|
|
@@ -82,3 +82,38 @@ class AlarmRuleMatchItem(MetaRelease, AlarmExternal):
|
|
|
82
82
|
N_SPEC_TYPE: Annotated[str, Field(description="规则类型名称")]
|
|
83
83
|
RULE_TYPE: Annotated[str, Field(description="规则类型")]
|
|
84
84
|
N_RULE_TYPE: Annotated[str, Field(description="规则类型名称")]
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class AlarmPreprocessItem(MetaRelease, AlarmExternal):
|
|
88
|
+
"""预处理脚本列表条目。
|
|
89
|
+
|
|
90
|
+
前端列表接口返回大写字段;说明、脚本内容和专业名称可能为空,
|
|
91
|
+
因此这里不把这些展示字段设置为必填。
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
N_SPEC_TYPE: Annotated[str | None, Field(description="关联专业名称")] = None
|
|
95
|
+
DESCRIPTION: Annotated[str | None, Field(description="脚本说明")] = None
|
|
96
|
+
SCRIPT_CONTENT: Annotated[str | None, Field(description="脚本内容")] = None
|
|
97
|
+
|
|
98
|
+
model_config = ConfigDict(extra="allow", str_to_lower=False)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class AlarmBuiltinFunctionItem(MetaRelease, AlarmExternal):
|
|
102
|
+
"""内置函数列表条目。"""
|
|
103
|
+
|
|
104
|
+
CLAZZ: Annotated[str | None, Field(description="类全路径")] = None
|
|
105
|
+
SCRIPT: Annotated[str | None, Field(description="函数脚本")] = None
|
|
106
|
+
REMARK: Annotated[str | None, Field(description="备注")] = None
|
|
107
|
+
|
|
108
|
+
model_config = ConfigDict(extra="allow", str_to_lower=False)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
class AlarmDetail(BaseModel):
|
|
112
|
+
"""告警详情的统一返回结构。
|
|
113
|
+
|
|
114
|
+
``meta`` 来自主体接口,``params`` 来自 Meta 参数接口;data 使用 JSON
|
|
115
|
+
映射保留前端可能新增的字段,避免详情查询因未知字段失败。
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
meta: Meta[dict[str, JsonValue]]
|
|
119
|
+
params: dict[str, JsonValue] = Field(default_factory=dict)
|
|
@@ -435,7 +435,7 @@ class DataTableField(BaseModel):
|
|
|
435
435
|
Field(description="类型扩展配置", validation_alias=AliasChoices("typeExt", "type_ext")),
|
|
436
436
|
] = None
|
|
437
437
|
|
|
438
|
-
model_config = ConfigDict(
|
|
438
|
+
model_config = ConfigDict(extra="allow")
|
|
439
439
|
|
|
440
440
|
|
|
441
441
|
# ---------------------------------------------------------------------------
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""平台 Meta 通用 Schema 定义.
|
|
2
2
|
|
|
3
3
|
集中管理 ``Meta`` 体系的基类与容器,包括:
|
|
4
|
-
- ``MetaRelease``: 后端返回的发布态基类,字段采用大写下划线。
|
|
5
4
|
- ``MetaBase``: list 接口使用的基类,字段采用小驼峰 + alias。
|
|
6
5
|
- ``Meta``: 详情响应容器,承载 ``data`` 字段并按需自动反序列化 ``rawData``。
|
|
7
6
|
- ``MetaRef``: 引用形态元数据。
|
|
@@ -70,7 +69,7 @@ class MetaRelease(BaseModel):
|
|
|
70
69
|
LAST_MODIFY_TIME: Annotated[datetime, Field(description="最后修改时间")]
|
|
71
70
|
LAST_MODIFY_USER: Annotated[str, Field(description="最后修改人")]
|
|
72
71
|
|
|
73
|
-
model_config = ConfigDict(extra="allow"
|
|
72
|
+
model_config = ConfigDict(extra="allow")
|
|
74
73
|
|
|
75
74
|
|
|
76
75
|
class MetaBase(BaseModel):
|
|
@@ -101,68 +100,120 @@ class MetaBase(BaseModel):
|
|
|
101
100
|
version: 版本号。
|
|
102
101
|
"""
|
|
103
102
|
|
|
104
|
-
id: Annotated[
|
|
103
|
+
id: Annotated[
|
|
104
|
+
str, Field(description="元数据ID", validation_alias=AliasChoices("id", "cuid", "CUID"))
|
|
105
|
+
]
|
|
105
106
|
parentId: Annotated[
|
|
106
107
|
str | None,
|
|
107
|
-
Field(
|
|
108
|
+
Field(
|
|
109
|
+
description="父ID", validation_alias=AliasChoices("parentId", "parent_id", "PARENT_ID")
|
|
110
|
+
),
|
|
108
111
|
]
|
|
109
|
-
code: Annotated[str, Field(description="编码")]
|
|
112
|
+
code: Annotated[str, Field(description="编码", validation_alias=AliasChoices("code", "CODE"))]
|
|
110
113
|
|
|
111
114
|
groupCode: Annotated[
|
|
112
115
|
str | None,
|
|
113
|
-
Field(
|
|
116
|
+
Field(
|
|
117
|
+
description="组编码",
|
|
118
|
+
validation_alias=AliasChoices("groupCode", "group_code", "GROUP_CODE"),
|
|
119
|
+
),
|
|
114
120
|
]
|
|
115
|
-
groupName: Annotated[
|
|
116
|
-
|
|
121
|
+
groupName: Annotated[
|
|
122
|
+
str | None,
|
|
123
|
+
Field(
|
|
124
|
+
description="组名称",
|
|
125
|
+
validation_alias=AliasChoices("groupName", "group_name", "GROUP_NAME"),
|
|
126
|
+
),
|
|
127
|
+
] = None
|
|
128
|
+
spaceName: Annotated[
|
|
129
|
+
str | None,
|
|
130
|
+
Field(
|
|
131
|
+
description="空间名称",
|
|
132
|
+
validate_alias=AliasChoices("spaceName", "space_name", "SPACE_NAME"),
|
|
133
|
+
),
|
|
134
|
+
] = None
|
|
117
135
|
|
|
118
136
|
subSystem: Annotated[
|
|
119
|
-
str,
|
|
137
|
+
str,
|
|
138
|
+
Field(
|
|
139
|
+
description="子系统",
|
|
140
|
+
validation_alias=AliasChoices("subSystem", "sub_system", "SUB_SYSTEM"),
|
|
141
|
+
),
|
|
120
142
|
]
|
|
121
143
|
|
|
122
|
-
type: Annotated[str, Field(description="类型")]
|
|
144
|
+
type: Annotated[str, Field(description="类型", validation_alias=AliasChoices("type", "TYPE"))]
|
|
123
145
|
subType: Annotated[
|
|
124
146
|
str | None,
|
|
125
|
-
Field(
|
|
147
|
+
Field(
|
|
148
|
+
description="子类型", validation_alias=AliasChoices("subType", "sub_type", "SUB_TYPE")
|
|
149
|
+
),
|
|
126
150
|
]
|
|
127
151
|
|
|
128
|
-
name: Annotated[str, Field(description="名称")]
|
|
129
|
-
title: Annotated[
|
|
130
|
-
|
|
152
|
+
name: Annotated[str, Field(description="名称", validation_alias=AliasChoices("name", "NAME"))]
|
|
153
|
+
title: Annotated[
|
|
154
|
+
str, Field(description="中文名称", validation_alias=AliasChoices("title", "TITLE"))
|
|
155
|
+
]
|
|
156
|
+
digest: Annotated[
|
|
157
|
+
str | None, Field(description="摘要", validation_alias=AliasChoices("digest", "DIGEST"))
|
|
158
|
+
]
|
|
131
159
|
|
|
132
|
-
remark: Annotated[
|
|
160
|
+
remark: Annotated[
|
|
161
|
+
str | None, Field(description="备注", validation_alias=AliasChoices("remark", "REMARK"))
|
|
162
|
+
]
|
|
133
163
|
|
|
134
164
|
createUser: Annotated[
|
|
135
|
-
str,
|
|
165
|
+
str,
|
|
166
|
+
Field(
|
|
167
|
+
description="创建人",
|
|
168
|
+
validation_alias=AliasChoices("createUser", "create_user", "CREATE_USER"),
|
|
169
|
+
),
|
|
136
170
|
]
|
|
137
171
|
createTime: Annotated[
|
|
138
172
|
datetime,
|
|
139
|
-
Field(
|
|
173
|
+
Field(
|
|
174
|
+
description="创建时间",
|
|
175
|
+
validation_alias=AliasChoices("createTime", "create_time", "CREATE_TIME"),
|
|
176
|
+
),
|
|
140
177
|
]
|
|
141
178
|
lastModifyUser: Annotated[
|
|
142
179
|
str,
|
|
143
180
|
Field(
|
|
144
181
|
description="最后修改人",
|
|
145
|
-
validation_alias=AliasChoices("lastModifyUser", "last_modify_user"),
|
|
182
|
+
validation_alias=AliasChoices("lastModifyUser", "last_modify_user", "LAST_MODIFY_USER"),
|
|
146
183
|
),
|
|
147
184
|
]
|
|
148
185
|
lastModifyTime: Annotated[
|
|
149
186
|
datetime,
|
|
150
187
|
Field(
|
|
151
188
|
description="最后修改时间",
|
|
152
|
-
validation_alias=AliasChoices("lastModifyTime", "last_modify_time"),
|
|
189
|
+
validation_alias=AliasChoices("lastModifyTime", "last_modify_time", "LAST_MODIFY_TIME"),
|
|
153
190
|
),
|
|
154
191
|
]
|
|
155
192
|
|
|
156
193
|
tenantId: Annotated[
|
|
157
|
-
str,
|
|
194
|
+
str,
|
|
195
|
+
Field(
|
|
196
|
+
description="租户ID",
|
|
197
|
+
validation_alias=AliasChoices("tenantId", "tenant_id", "TENANT_ID"),
|
|
198
|
+
),
|
|
158
199
|
]
|
|
159
200
|
prodCode: Annotated[
|
|
160
|
-
str,
|
|
201
|
+
str,
|
|
202
|
+
Field(
|
|
203
|
+
description="产品编码",
|
|
204
|
+
validation_alias=AliasChoices("prodCode", "prod_code", "PROD_CODE"),
|
|
205
|
+
),
|
|
161
206
|
]
|
|
162
|
-
release: Annotated[
|
|
207
|
+
release: Annotated[
|
|
208
|
+
str | None, Field(description="版本", validation_alias=AliasChoices("release", "RELEASE"))
|
|
209
|
+
] = None
|
|
163
210
|
|
|
164
|
-
action: Annotated[
|
|
165
|
-
|
|
211
|
+
action: Annotated[
|
|
212
|
+
str, Field(description="操作", validation_alias=AliasChoices("action", "ACTION"))
|
|
213
|
+
]
|
|
214
|
+
version: Annotated[
|
|
215
|
+
str, Field(description="版本", validation_alias=AliasChoices("version", "VERSION"))
|
|
216
|
+
]
|
|
166
217
|
|
|
167
218
|
model_config = ConfigDict(extra="allow")
|
|
168
219
|
|
|
@@ -6,11 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
from collections.abc import Mapping
|
|
8
8
|
from enum import StrEnum
|
|
9
|
-
from typing import Annotated, Any
|
|
10
|
-
|
|
11
|
-
from pydantic import AliasChoices, BaseModel, Field, JsonValue
|
|
9
|
+
from typing import Annotated, Any, Union
|
|
12
10
|
|
|
13
11
|
from dataops_sdk.schemas.meta import Meta
|
|
12
|
+
from pydantic import AliasChoices, BaseModel, Field, JsonValue
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
class MetaSkillSubType(StrEnum):
|
|
@@ -62,6 +61,9 @@ class DataSkillSubFileImage(BaseModel):
|
|
|
62
61
|
language: Annotated[str, Field(description="编程语言")]
|
|
63
62
|
|
|
64
63
|
|
|
64
|
+
DataSkillSubFile = Union[DataSkillSubFileDoc, DataSkillSubFileCode, DataSkillSubFileImage]
|
|
65
|
+
|
|
66
|
+
|
|
65
67
|
class MetaSkill(Meta[DataSkill]):
|
|
66
68
|
"""技能详情,继承通用 Meta 字段并附加 DataSkill data.
|
|
67
69
|
|
|
@@ -5,11 +5,20 @@ from .alarm import (
|
|
|
5
5
|
service_count_alarm_specs,
|
|
6
6
|
service_find_alarm_table_data,
|
|
7
7
|
service_find_meta_by_codes,
|
|
8
|
+
service_get_alarm_action_detail,
|
|
9
|
+
service_get_alarm_builtin_function_detail,
|
|
10
|
+
service_get_alarm_preprocess_detail,
|
|
11
|
+
service_get_alarm_rule_detail,
|
|
12
|
+
service_get_alarm_rule_type_detail,
|
|
8
13
|
service_get_alarm_rule_enums,
|
|
9
14
|
service_get_alarm_table_columns,
|
|
10
15
|
service_get_rel_table_columns,
|
|
16
|
+
service_get_alarm_spec_detail,
|
|
17
|
+
service_list_alarm_builtin_functions,
|
|
18
|
+
service_list_alarm_action,
|
|
11
19
|
service_list_alarm_rule_matches,
|
|
12
20
|
service_list_alarm_rules,
|
|
21
|
+
service_list_alarm_preprocess,
|
|
13
22
|
service_list_alarm_specs,
|
|
14
23
|
)
|
|
15
24
|
from .api import service_get_api_by_code, service_get_api_by_name
|
|
@@ -64,6 +73,7 @@ from .meta import (
|
|
|
64
73
|
release_list_create,
|
|
65
74
|
release_list_get_by_code,
|
|
66
75
|
release_list_get_by_name,
|
|
76
|
+
release_list_params_get_rel_by_code,
|
|
67
77
|
release_list_list,
|
|
68
78
|
release_list_list_by_parent_id,
|
|
69
79
|
release_list_page,
|
|
@@ -94,12 +104,22 @@ from .skill import (
|
|
|
94
104
|
from .table import (
|
|
95
105
|
service_count_table_by_code,
|
|
96
106
|
service_count_table_by_name,
|
|
107
|
+
service_create_table_record,
|
|
108
|
+
service_delete_table_record_by_id,
|
|
109
|
+
service_delete_table_record_by_id_list,
|
|
97
110
|
service_exec_sql_by_datasource,
|
|
98
111
|
service_get_table_data_by_code,
|
|
99
112
|
service_get_table_data_by_name,
|
|
100
113
|
service_get_table_detail_by_code,
|
|
101
114
|
service_get_table_detail_by_name,
|
|
115
|
+
service_get_table_list_by_code,
|
|
116
|
+
service_get_table_record_by_id,
|
|
117
|
+
service_get_table_records_by_code,
|
|
118
|
+
service_get_table_reference_list,
|
|
119
|
+
service_get_table_total_by_code,
|
|
102
120
|
service_list_tables,
|
|
121
|
+
service_update_table_record_by_id,
|
|
122
|
+
service_update_table_record_by_id_list,
|
|
103
123
|
)
|
|
104
124
|
from .widget import (
|
|
105
125
|
service_count_widget_by_code,
|
|
@@ -15,21 +15,43 @@ from pydantic_core import to_json
|
|
|
15
15
|
from dataops_sdk.exceptions import AuthenticationError, DataOpsError
|
|
16
16
|
from dataops_sdk.schemas.alarm import (
|
|
17
17
|
AlarmActionItem,
|
|
18
|
+
AlarmBuiltinFunctionItem,
|
|
19
|
+
AlarmDetail,
|
|
20
|
+
AlarmPreprocessItem,
|
|
18
21
|
AlarmRuleItem,
|
|
19
22
|
AlarmRuleMatchItem,
|
|
20
23
|
AlarmSpecItem,
|
|
21
24
|
)
|
|
22
25
|
from dataops_sdk.schemas.query import PageParam, SqlQueryParam
|
|
26
|
+
from dataops_sdk.services.meta import (
|
|
27
|
+
release_list_get_by_code,
|
|
28
|
+
release_list_params_get_rel_by_code,
|
|
29
|
+
)
|
|
23
30
|
from dataops_sdk.session import get_session
|
|
24
31
|
from dataops_sdk.utils import encrypt_body
|
|
25
32
|
|
|
26
33
|
__all__ = [
|
|
27
|
-
"
|
|
28
|
-
"
|
|
34
|
+
"service_count_alarm_action",
|
|
35
|
+
"service_count_alarm_rule_matches",
|
|
36
|
+
"service_count_alarm_rules",
|
|
37
|
+
"service_count_alarm_specs",
|
|
38
|
+
"service_find_alarm_table_data",
|
|
29
39
|
"service_find_meta_by_codes",
|
|
40
|
+
"service_get_alarm_action_detail",
|
|
41
|
+
"service_get_alarm_builtin_function_detail",
|
|
42
|
+
"service_get_alarm_preprocess_detail",
|
|
43
|
+
"service_get_alarm_rule_detail",
|
|
44
|
+
"service_get_alarm_rule_type_detail",
|
|
45
|
+
"service_get_alarm_rule_enums",
|
|
30
46
|
"service_get_alarm_table_columns",
|
|
31
47
|
"service_get_rel_table_columns",
|
|
32
|
-
"
|
|
48
|
+
"service_get_alarm_spec_detail",
|
|
49
|
+
"service_list_alarm_builtin_functions",
|
|
50
|
+
"service_list_alarm_action",
|
|
51
|
+
"service_list_alarm_preprocess",
|
|
52
|
+
"service_list_alarm_rule_matches",
|
|
53
|
+
"service_list_alarm_rules",
|
|
54
|
+
"service_list_alarm_specs",
|
|
33
55
|
]
|
|
34
56
|
|
|
35
57
|
|
|
@@ -62,7 +84,12 @@ def _post_alarm(
|
|
|
62
84
|
DataOpsError: API 返回错误时
|
|
63
85
|
AuthenticationError: 未认证或认证失败时
|
|
64
86
|
"""
|
|
65
|
-
body =
|
|
87
|
+
body = {"pageParam": page_param, "queryParam": query_param, "count": count}
|
|
88
|
+
return _post_alarm_body(url, body)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _post_alarm_body(url: str, body: Mapping[str, Any]) -> Any:
|
|
92
|
+
"""发送告警 POST 请求并返回响应 data。"""
|
|
66
93
|
try:
|
|
67
94
|
with get_session() as session:
|
|
68
95
|
resp = session.post(url, content=to_json(encrypt_body(body)))
|
|
@@ -101,6 +128,106 @@ def _get_alarm(url: str) -> Any:
|
|
|
101
128
|
raise AuthenticationError("认证失败,请先登录") from e
|
|
102
129
|
|
|
103
130
|
|
|
131
|
+
def _join_alarm_filter(value: Iterable[str] | str | bool | None) -> str | None:
|
|
132
|
+
"""将前端的单值/多值筛选统一为后端 varMap 所需的逗号字符串。"""
|
|
133
|
+
if value is None:
|
|
134
|
+
return None
|
|
135
|
+
if isinstance(value, bool):
|
|
136
|
+
return "1" if value else "0"
|
|
137
|
+
if isinstance(value, str):
|
|
138
|
+
return value
|
|
139
|
+
return ",".join(str(item) for item in value)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def _get_alarm_detail(
|
|
143
|
+
meta_type: str,
|
|
144
|
+
code: str,
|
|
145
|
+
param_names: list[str],
|
|
146
|
+
) -> AlarmDetail:
|
|
147
|
+
"""组合前端详情使用的 Meta 主体和 Meta 参数两次查询。"""
|
|
148
|
+
meta = release_list_get_by_code(meta_type, code)
|
|
149
|
+
params = release_list_params_get_rel_by_code(meta_type, code, param_names)
|
|
150
|
+
return AlarmDetail(meta=meta, params=params)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def service_get_alarm_preprocess_detail(code: str) -> AlarmDetail:
|
|
154
|
+
"""按编码查询预处理脚本详情。"""
|
|
155
|
+
return _get_alarm_detail("alarm_preprocess", code, ["is_enabled", "spec_type"])
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def service_get_alarm_builtin_function_detail(code: str) -> AlarmDetail:
|
|
159
|
+
"""按编码查询内置函数详情。"""
|
|
160
|
+
return _get_alarm_detail("alarm_builtin_func", code, ["is_enabled"])
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def service_get_alarm_spec_detail(code: str) -> AlarmDetail:
|
|
164
|
+
"""按编码查询专业管理详情。"""
|
|
165
|
+
return _get_alarm_detail("alarm_spec_type", code, ["is_enabled", "industry"])
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def service_get_alarm_rule_type_detail(code: str) -> AlarmDetail:
|
|
169
|
+
"""按编码查询规则类型详情。"""
|
|
170
|
+
return _get_alarm_detail("alarm_rule_type", code, ["is_enabled"])
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def service_get_alarm_rule_detail(code: str) -> AlarmDetail:
|
|
174
|
+
"""按编码查询匹配规则基础详情。"""
|
|
175
|
+
return _get_alarm_detail("alarm_rule", code, [])
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def service_get_alarm_action_detail(code: str) -> AlarmDetail:
|
|
179
|
+
"""按编码查询处置动作详情。"""
|
|
180
|
+
return _get_alarm_detail("alarm_action", code, ["is_enabled", "rule_type"])
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def service_list_alarm_preprocess(
|
|
184
|
+
page: int = 0,
|
|
185
|
+
size: int = 50,
|
|
186
|
+
query: str | None = None,
|
|
187
|
+
spec_types: Iterable[str] | None = None,
|
|
188
|
+
enabled: Iterable[str] | str | bool | None = None,
|
|
189
|
+
) -> list[AlarmPreprocessItem]:
|
|
190
|
+
"""分页查询预处理脚本列表。"""
|
|
191
|
+
query_param = SqlQueryParam()
|
|
192
|
+
if query:
|
|
193
|
+
query_param.add_like("title", query, "mrl")
|
|
194
|
+
spec_type_value = _join_alarm_filter(spec_types)
|
|
195
|
+
enabled_value = _join_alarm_filter(enabled)
|
|
196
|
+
if spec_type_value:
|
|
197
|
+
query_param.varMap["specType"] = spec_type_value
|
|
198
|
+
if enabled_value:
|
|
199
|
+
query_param.varMap["isEnabled"] = enabled_value
|
|
200
|
+
|
|
201
|
+
results = _post_alarm(
|
|
202
|
+
"/alarm/preprocess/list",
|
|
203
|
+
query_param=query_param,
|
|
204
|
+
page_param=PageParam(start=page * max(0, size), limit=size),
|
|
205
|
+
)
|
|
206
|
+
return TypeAdapter(list[AlarmPreprocessItem]).validate_python(results)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def service_list_alarm_builtin_functions(
|
|
210
|
+
page: int = 0,
|
|
211
|
+
size: int = 50,
|
|
212
|
+
query: str | None = None,
|
|
213
|
+
enabled: Iterable[str] | str | bool | None = None,
|
|
214
|
+
) -> list[AlarmBuiltinFunctionItem]:
|
|
215
|
+
"""分页查询内置函数列表。"""
|
|
216
|
+
query_param = SqlQueryParam()
|
|
217
|
+
if query:
|
|
218
|
+
query_param.add_like("title", query, "mrl")
|
|
219
|
+
enabled_value = _join_alarm_filter(enabled)
|
|
220
|
+
if enabled_value:
|
|
221
|
+
query_param.varMap["isEnabled"] = enabled_value
|
|
222
|
+
|
|
223
|
+
results = _post_alarm(
|
|
224
|
+
"/alarm/builtinFunction/list",
|
|
225
|
+
query_param=query_param,
|
|
226
|
+
page_param=PageParam(start=page * max(0, size), limit=size),
|
|
227
|
+
)
|
|
228
|
+
return TypeAdapter(list[AlarmBuiltinFunctionItem]).validate_python(results)
|
|
229
|
+
|
|
230
|
+
|
|
104
231
|
def service_list_alarm_rules(
|
|
105
232
|
page: int = 0,
|
|
106
233
|
size: int = 50,
|
|
@@ -130,7 +257,12 @@ def service_list_alarm_rules(
|
|
|
130
257
|
if query:
|
|
131
258
|
query_param.add_like("title", query, "mrl")
|
|
132
259
|
|
|
133
|
-
results = _post_alarm(
|
|
260
|
+
results = _post_alarm(
|
|
261
|
+
url,
|
|
262
|
+
False,
|
|
263
|
+
query_param=query_param,
|
|
264
|
+
page_param=page_param,
|
|
265
|
+
)
|
|
134
266
|
return TypeAdapter(list[AlarmRuleItem], config=ConfigDict(str_to_lower=True)).validate_python(
|
|
135
267
|
results
|
|
136
268
|
)
|
|
@@ -190,7 +322,12 @@ def service_list_alarm_specs(
|
|
|
190
322
|
query_param.varMap["isEnabled"] = "1" if enabled else "0"
|
|
191
323
|
if query:
|
|
192
324
|
query_param.add_like("title", query, "mrl")
|
|
193
|
-
results = _post_alarm(
|
|
325
|
+
results = _post_alarm(
|
|
326
|
+
url,
|
|
327
|
+
False,
|
|
328
|
+
query_param=query_param,
|
|
329
|
+
page_param=page_param,
|
|
330
|
+
)
|
|
194
331
|
return TypeAdapter(list[AlarmSpecItem], config=ConfigDict(str_to_lower=True)).validate_python(
|
|
195
332
|
results
|
|
196
333
|
)
|
|
@@ -254,7 +391,12 @@ def service_list_alarm_rule_matches(
|
|
|
254
391
|
query_param.varMap["specType"] = ",".join(specs)
|
|
255
392
|
if query:
|
|
256
393
|
query_param.add_like("title", query, "mrl")
|
|
257
|
-
results = _post_alarm(
|
|
394
|
+
results = _post_alarm(
|
|
395
|
+
url,
|
|
396
|
+
False,
|
|
397
|
+
query_param=query_param,
|
|
398
|
+
page_param=page_param,
|
|
399
|
+
)
|
|
258
400
|
return TypeAdapter(
|
|
259
401
|
list[AlarmRuleMatchItem], config=ConfigDict(str_to_lower=True)
|
|
260
402
|
).validate_python(results)
|
|
@@ -322,7 +464,12 @@ def service_list_alarm_action(
|
|
|
322
464
|
query_param.varMap["ruleType"] = ",".join(rules)
|
|
323
465
|
if query:
|
|
324
466
|
query_param.add_like("title", query, "mrl")
|
|
325
|
-
results = _post_alarm(
|
|
467
|
+
results = _post_alarm(
|
|
468
|
+
url,
|
|
469
|
+
False,
|
|
470
|
+
query_param=query_param,
|
|
471
|
+
page_param=page_param,
|
|
472
|
+
)
|
|
326
473
|
return TypeAdapter(list[AlarmActionItem], config=ConfigDict(str_to_lower=True)).validate_python(
|
|
327
474
|
results
|
|
328
475
|
)
|
|
@@ -384,7 +531,7 @@ def service_find_meta_by_codes(codes: list[str]) -> list[dict]:
|
|
|
384
531
|
DataOpsError: API 请求失败时
|
|
385
532
|
AuthenticationError: 未认证或认证失败时
|
|
386
533
|
"""
|
|
387
|
-
data =
|
|
534
|
+
data = _post_alarm_body("/alarm/rule/findMetaByCodes", {"codes": codes})
|
|
388
535
|
return data or []
|
|
389
536
|
|
|
390
537
|
|
|
@@ -436,5 +583,10 @@ def service_find_alarm_table_data(code: str, query: Mapping[str, JsonValue] | No
|
|
|
436
583
|
DataOpsError: API 请求失败时
|
|
437
584
|
AuthenticationError: 未认证或认证失败时
|
|
438
585
|
"""
|
|
439
|
-
body = {
|
|
440
|
-
|
|
586
|
+
body = {
|
|
587
|
+
"code": code,
|
|
588
|
+
"pageParam": PageParam().model_dump(),
|
|
589
|
+
"queryParam": query or {},
|
|
590
|
+
"count": False,
|
|
591
|
+
}
|
|
592
|
+
return _post_alarm_body("/alarm/rule/findTableData", body) or {}
|