From 6af3f00c9bdfadf113f6362e084212005a41389b Mon Sep 17 00:00:00 2001 From: fuwx Date: Tue, 4 Mar 2025 21:12:39 +0800 Subject: [PATCH] add unit --- .github/workflows/build-web.yml | 2 +- .../console/workspace/tool_providers.py | 38 ++----------------- .../providers/apo_select/tools/alert.py | 37 ++---------------- .../providers/apo_select/tools/alert.yaml | 1 + .../apo_select/tools/container_cpu.py | 2 +- .../apo_select/tools/container_cpu.yaml | 1 + .../apo_select/tools/container_rss.py | 2 +- .../apo_select/tools/container_rss.yaml | 1 + .../apo_select/tools/container_rtt.py | 2 +- .../apo_select/tools/container_rtt.yaml | 1 + .../providers/apo_select/tools/fault_log.yaml | 1 + .../providers/apo_select/tools/select_cpu.py | 2 +- .../apo_select/tools/select_cpu.yaml | 1 + .../providers/apo_select/tools/topology.yaml | 1 + api/core/tools/entities/tool_entities.py | 1 + .../providers/utils.py => libs/apo_utils.py} | 1 - 16 files changed, 19 insertions(+), 75 deletions(-) rename api/{core/tools/builtin_tool/providers/utils.py => libs/apo_utils.py} (97%) diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index 8d74316a89..e1d9dcece1 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -1,4 +1,4 @@ -name: Build DIFY WEB Docker Image +name: Build Dify WEB Docker Image on: push: diff --git a/api/controllers/console/workspace/tool_providers.py b/api/controllers/console/workspace/tool_providers.py index 517c7c9e73..39072e626b 100644 --- a/api/controllers/console/workspace/tool_providers.py +++ b/api/controllers/console/workspace/tool_providers.py @@ -14,6 +14,7 @@ from core.model_runtime.utils.encoders import jsonable_encoder from extensions.ext_database import db from libs.helper import alphanumeric, uuid_value from libs.login import login_required +from libs.apo_utils import APOUtils from services.tools.api_tools_manage_service import ApiToolManageService from services.tools.builtin_tools_manage_service import BuiltinToolManageService from services.tools.tool_labels_service import ToolLabelsService @@ -587,39 +588,6 @@ class APOToolBuiltinListApi(Resource): ] ) - -def get_step(start_time, end_time): - time_diff = end_time - start_time - - SECOND = 1000000 # microseconds - MINUTE = 60 * SECOND - HOUR = 60 * MINUTE - - step = SECOND # default step is 1 second - - if time_diff <= 15 * MINUTE: - step = 30 * SECOND - elif time_diff <= 30 * MINUTE: - step = 1 * MINUTE - elif time_diff <= 1 * HOUR: - step = 2 * MINUTE - elif time_diff <= 1.5 * HOUR: - step = 3 * MINUTE - elif time_diff <= 3 * HOUR: - step = 6 * MINUTE - elif time_diff <= 6 * HOUR: - step = 12 * MINUTE - elif time_diff <= 12 * HOUR: - step = 24 * MINUTE - elif time_diff <= 15 * HOUR: - step = 30 * MINUTE - elif time_diff <= 30 * HOUR: - step = 1 * HOUR - else: - step = ((time_diff + 30 * SECOND - 1) // (30 * SECOND)) * SECOND - - return step - def get_url(type): match type: case "metric": @@ -654,7 +622,7 @@ class APOToolPreviewApi(Resource): "params": args["params"], "startTime": args["startTime"], "endTime": args["endTime"], - "step": get_step(args["startTime"], args["endTime"]), + "step": APOUtils.get_step(args["startTime"], args["endTime"]), } resp = requests.post(url, json=json) raw = resp.json()['result'] @@ -697,7 +665,7 @@ class APOToolPreviewApi(Resource): 'anormalTypes': "app,container,infra,network,error,appInstance", 'deltaStartTime': args["startTime"], 'deltaEndTime': args["endTime"], - 'step': get_step(args["startTime"], args["endTime"]), + 'step': APOUtils.get_step(args["startTime"], args["endTime"]), } resp = requests.post(url, json=json) raw = resp.json() diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/alert.py b/api/core/tools/builtin_tool/providers/apo_select/tools/alert.py index 1478e589ab..ce9e7ed4a0 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/alert.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/alert.py @@ -7,6 +7,7 @@ import requests from configs import dify_config from core.tools.builtin_tool.tool import BuiltinTool from core.tools.entities.tool_entities import ToolInvokeMessage +from libs.apo_utils import APOUtils class AlertTool(BuiltinTool): @@ -30,7 +31,7 @@ class AlertTool(BuiltinTool): 'anormalTypes': "app,container,infra,network,error,appInstance", 'deltaStartTime': start_time, 'deltaEndTime': end_time, - 'step': self.get_step(start_time, end_time), + 'step': APOUtils.get_step(start_time, end_time), } resp = requests.post(dify_config.APO_BACKEND_URL + '/api/alerts/descendant/anormal/delta', json=params) list = resp.json() @@ -39,36 +40,4 @@ class AlertTool(BuiltinTool): 'display': True, 'data': list, }) - yield self.create_text_message(list) - - def get_step(self, start_time, end_time): - time_diff = end_time - start_time - - SECOND = 1000000 # microseconds - MINUTE = 60 * SECOND - HOUR = 60 * MINUTE - - step = SECOND # default step is 1 second - - if time_diff <= 15 * MINUTE: - step = 30 * SECOND - elif time_diff <= 30 * MINUTE: - step = 1 * MINUTE - elif time_diff <= 1 * HOUR: - step = 2 * MINUTE - elif time_diff <= 1.5 * HOUR: - step = 3 * MINUTE - elif time_diff <= 3 * HOUR: - step = 6 * MINUTE - elif time_diff <= 6 * HOUR: - step = 12 * MINUTE - elif time_diff <= 12 * HOUR: - step = 24 * MINUTE - elif time_diff <= 15 * HOUR: - step = 30 * MINUTE - elif time_diff <= 30 * HOUR: - step = 1 * HOUR - else: - step = ((time_diff + 30 * SECOND - 1) // (30 * SECOND)) * SECOND - - return step \ No newline at end of file + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml index bf8b57a663..9a9fea5bb1 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml @@ -14,6 +14,7 @@ description: display: type: alert title: alert + uint: alert parameters: - name: service type: string diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.py index 9ee9262358..8273a1a1c8 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.py @@ -7,7 +7,7 @@ import requests from configs import dify_config from core.tools.builtin_tool.tool import BuiltinTool from core.tools.entities.tool_entities import ToolInvokeMessage -from core.tools.builtin_tool.providers.utils import APOUtils +from libs.apo_utils import APOUtils class SelectContainerCPUTool(BuiltinTool): def _invoke( diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml index ca7497d289..8e026815b7 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml @@ -8,6 +8,7 @@ identity: display: type: metric title: 基础设施情况 - 容器CPU - 容器CPU使用率 - Containerd + uint: percent(0-100)百分比 description: human: en_US: Query the CPU utilization of the container diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.py index ff364841fe..723af0b53f 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.py @@ -7,7 +7,7 @@ import requests from configs import dify_config from core.tools.builtin_tool.tool import BuiltinTool from core.tools.entities.tool_entities import ToolInvokeMessage -from core.tools.builtin_tool.providers.utils import APOUtils +from libs.apo_utils import APOUtils class SelectContainerRSSTool(BuiltinTool): def _invoke( diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml index 2d36f471a5..2bfbdc539d 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml @@ -14,6 +14,7 @@ description: display: type: metric title: 基础设施情况 - 容器内存 - 容器内存使用率 - Containerd + uint: bytes 字节 parameters: - name: pod type: string diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.py index b750d39115..6753263230 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.py @@ -7,7 +7,7 @@ import requests from configs import dify_config from core.tools.builtin_tool.tool import BuiltinTool from core.tools.entities.tool_entities import ToolInvokeMessage -from core.tools.builtin_tool.providers.utils import APOUtils +from libs.apo_utils import APOUtils class ContainerRTTTool(BuiltinTool): def _invoke( diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml index ff19759338..8fcc62ed3f 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml @@ -14,6 +14,7 @@ description: display: type: metric title: 基础设施情况 - 容器网络 - 与下游服务RTT + uint: s 秒 parameters: - name: pod type: string diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml index 3ecd09cbc1..7d5e6c7ebc 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml @@ -14,6 +14,7 @@ description: display: type: log title: log + uint: log parameters: - name: service type: string diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.py b/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.py index 35e8d8467b..159f80d2aa 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.py @@ -7,7 +7,7 @@ import requests from configs import dify_config from core.tools.builtin_tool.tool import BuiltinTool from core.tools.entities.tool_entities import ToolInvokeMessage -from core.tools.builtin_tool.providers.utils import APOUtils +from libs.apo_utils import APOUtils class SelectCPUTool(BuiltinTool): def _invoke( diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml index ca60ea924d..cc12ae9417 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml @@ -14,6 +14,7 @@ description: display: type: metric title: 宿主机监控指标 - Quick CPU / Mem / Disk - CPU Busy + uint: percent(0-100)百分比 parameters: - name: node type: string diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml index 8bb635e018..57be820be8 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml @@ -14,6 +14,7 @@ description: display: type: topology title: topology + uint: toplogy parameters: - name: service type: string diff --git a/api/core/tools/entities/tool_entities.py b/api/core/tools/entities/tool_entities.py index b4e5312399..4bbce418e6 100644 --- a/api/core/tools/entities/tool_entities.py +++ b/api/core/tools/entities/tool_entities.py @@ -320,6 +320,7 @@ class ToolDescription(BaseModel): class APODisPlay(BaseModel): type: str = Field(..., description="The type of the apo data display") + uint: str = Field(..., description="The unit of the apo data display") title: str = Field(..., description="The title of the apo data display") class ToolEntity(BaseModel): diff --git a/api/core/tools/builtin_tool/providers/utils.py b/api/libs/apo_utils.py similarity index 97% rename from api/core/tools/builtin_tool/providers/utils.py rename to api/libs/apo_utils.py index 0e044a9a38..f54f730d4a 100644 --- a/api/core/tools/builtin_tool/providers/utils.py +++ b/api/libs/apo_utils.py @@ -1,4 +1,3 @@ - class APOUtils: @classmethod