Skip to content

Commit 1972658

Browse files
committed
update alarm2graph
1 parent 9de6d9a commit 1972658

File tree

1 file changed

+21
-95
lines changed

1 file changed

+21
-95
lines changed

muagent/service/ekg_construct/ekg_construct_base.py

Lines changed: 21 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -621,26 +621,10 @@ def write2kg(self, ekg_sls_data: EKGSlsData, ekg_tbase_data: EKGTbaseData, teami
621621
for edge in gbase_edges
622622
]
623623

624-
tbase_nodes = [
625-
{
626-
k: np.array(v).astype(dtype=np.float32).tobytes() if k in ["name_vector", "desc_vector"] else v
627-
for k, v in node.dict().items()
628-
}
629-
for node in ekg_tbase_data.nodes
630-
]
631-
tbase_edges = [edge.dict() for edge in ekg_tbase_data.edges]
632-
633624
if do_save:
634-
# gb_node_result = self.gb.add_nodes(gbase_nodes)
635-
# gb_node_result = [self.gb.add_node(node) for node in gbase_nodes]
636625
node_result = self.add_nodes(gbase_nodes, teamid)
637626
edge_result = self.add_edges(gbase_edges, teamid)
638627
logger.info(f"{node_result}\n{edge_result}")
639-
# gb_edge_result = self.gb.add_edges(gbase_edges)
640-
# gb_edge_result = [self.gb.add_edge(edge) for edge in gbase_edges]
641-
# tb_node_result = self.tb.insert_data_hash(tbase_nodes, key="node_id", need_etime=False)
642-
# tb_edge_result = self.tb.insert_data_hash(tbase_edges, key="edge_id", need_etime=False)
643-
# logger.info(f"{gb_node_result}\n{gb_edge_result}\n{tb_node_result}\n{tb_edge_result}")
644628

645629
return Graph(nodes=gbase_nodes, edges=gbase_edges, paths=[])
646630

@@ -649,17 +633,26 @@ def returndsl(self, graph_datas_by_path: dict, intents: List[str], ) -> dict:
649633
res = {'dsl': '', 'details': {}, 'intent_node_list': intents}
650634

651635
merge_dsl_nodes, merge_dsl_edges = [], []
636+
merge_gbase_nodes, merge_gbase_edges = [], []
652637
id_sets = set()
638+
gid_sets = set()
653639
for path_id, graph_datas in graph_datas_by_path.items():
654640
res['details'][path_id] = {
655641
'dsl': graph_datas["dsl_graph"],
656-
'sls': graph_datas["sls_graph"]
642+
'sls': graph_datas["sls_graph"],
657643
}
658644
merge_dsl_nodes.extend([node for node in graph_datas["dsl_graph"].nodes if node.id not in id_sets])
659645
id_sets.update([i.id for i in graph_datas["dsl_graph"].nodes])
660646
merge_dsl_edges.extend([edge for edge in graph_datas["dsl_graph"].edges if edge.id not in id_sets])
661647
id_sets.update([i.id for i in graph_datas["dsl_graph"].edges])
648+
649+
merge_gbase_nodes.extend([node for node in graph_datas["graph"].nodes if node.id not in gid_sets])
650+
gid_sets.update([i.id for i in graph_datas["graph"].nodes])
651+
merge_gbase_edges.extend([edge for edge in graph_datas["graph"].edges if f"{edge.start_id}__{edge.end_id}" not in gid_sets])
652+
gid_sets.update([f"{i.start_id}__{i.end_id}" for i in graph_datas["graph"].edges])
653+
662654
res["dsl"] = {"nodes": merge_dsl_nodes, "edges": merge_dsl_edges}
655+
res["graph"] = Graph(nodes=merge_gbase_nodes, edges=merge_gbase_edges, paths=[])
663656
return res
664657

665658
def get_intents(self, alarm_list: list[dict], ) -> EKGIntentResp:
@@ -814,15 +807,12 @@ def get_md5(s):
814807
}
815808

816809
nodes, edges = [], []
817-
schedule_id = ''
810+
# schedule_id = ''
818811
for node in ekg_sls_data.nodes:
819812
# 需要注意下 dsl的id md编码
820813
nodes.append(
821-
YuqueDslNodeData(id=node.id, type=type_dict.get(node.type.split("opsgptkg_")[-1]), label=node.description)
814+
YuqueDslNodeData(id=f"ekg_node:{node.type}:{node.id}", type=type_dict.get(node.type.split("opsgptkg_")[-1]), label=node.description)
822815
)
823-
# 记录 schedule id 用于添加意图节点的边
824-
if node.type.split("opsgptkg_")[-1] == 'schedule':
825-
schedule_id = node.id
826816

827817
# 添加意图节点
828818
# 需要记录哪些是被添加过的
@@ -838,7 +828,7 @@ def get_md5(s):
838828

839829
nodes.append(
840830
YuqueDslNodeData(
841-
id=node.id, type='display',
831+
id=dsl_pid, type='display',
842832
label=intent_names_dict.get(dsl_pid, pid),)
843833
)
844834
added_intent.add(dsl_pid)
@@ -865,35 +855,17 @@ def get_md5(s):
865855
added_intent.add(intent_id)
866856

867857
for edge in ekg_sls_data.edges:
858+
start_type, end_type = edge.type.split("_")[2:]
868859
edges.append(
869860
YuqueDslEdgeData(
870-
id=f'{edge.start_id}___{edge.end_id}',
871-
source=edge.start_id,
872-
target=edge.end_id,
861+
id=f'{start_type}:{edge.start_id}___{end_type}:{edge.end_id}',
862+
source=f"{start_type}:{edge.start_id}",
863+
target=f"{end_type}:{edge.end_id}",
873864
label=''
874865
)
875866
)
876-
877-
# 添加意图边
867+
# # 添加意图边
878868
added_edges = set()
879-
for pid in pnode_ids:
880-
# 处理意图节点展示样式
881-
dsl_pid = get_md5(pid)
882-
dsl_pid = f'ekg_node:{teamid}:intent:{dsl_pid}'
883-
884-
# 处理意图节点展示样式
885-
edge_id = f'{dsl_pid}___{schedule_id}'
886-
if edge_id not in added_edges:
887-
edges.append(
888-
YuqueDslEdgeData(
889-
id=edge_id,
890-
source=dsl_pid,
891-
target=schedule_id,
892-
label=''
893-
)
894-
)
895-
added_edges.add(edge_id)
896-
897869
for intent_list in all_intents:
898870
for idx in range(len(intent_list[0:-1])):
899871
if 'SRE_Agent' in intent_list[idx]:
@@ -907,14 +879,14 @@ def get_md5(s):
907879

908880
end_id = get_md5(intent_list[idx+1])
909881
end_id = f'ekg_node:{teamid}:intent:{end_id}'
910-
edge_id = f'{start_id}___{end_id}'
882+
edge_id = f'intent:{start_id}___intent:{end_id}'
911883

912884
if edge_id not in added_edges:
913885
edges.append(
914886
YuqueDslEdgeData(
915887
id=edge_id,
916-
source=start_id,
917-
target=end_id,
888+
source=f"intent:{start_id}",
889+
target=f"intent:{end_id}",
918890
label=''
919891
)
920892
)
@@ -1081,49 +1053,3 @@ def _update_new_attr_for_edges(self, edges: List[GEdge], teamid: str, teamids_by
10811053
edge.attributes.pop("@timestamp")
10821054
edge.attributes.pop("extra")
10831055
return edges
1084-
1085-
1086-
1087-
def get_intent_by_alarm(self, alarm: dict, ) -> EKGIntentResp:
1088-
'''according content search intent'''
1089-
import requests
1090-
error_type = alarm.get('errorType', '')
1091-
title = alarm.get('title', '')
1092-
content = alarm.get('content', '')
1093-
biz_code = alarm.get('bizCode', '')
1094-
1095-
if not error_type or not title or not content or not biz_code:
1096-
return None, None
1097-
1098-
alarm = {
1099-
'type': 'ANTEMC_DINGTALK',
1100-
'user_input': {
1101-
'bizCode': biz_code,
1102-
'title': title,
1103-
'content': content,
1104-
'execute_type': 'gql',
1105-
'errorType': error_type
1106-
}
1107-
}
1108-
1109-
body = {
1110-
'features': {
1111-
'query': alarm
1112-
}
1113-
}
1114-
intent_url = 'https://paiplusinferencepre.alipay.com/inference/ff998e48456308a9_EKG_route/0.1'
1115-
headers = {
1116-
'Content-Type': 'application/json;charset=utf-8',
1117-
'MPS-app-name': 'test',
1118-
'MPS-http-version': '1.0'
1119-
}
1120-
ans = requests.post(intent_url, json=body, headers=headers)
1121-
1122-
ans_json = ans.json()
1123-
output = ans_json.get('resultMap').get('output')
1124-
logger.debug(f"{body}")
1125-
logger.debug(f"{output}")
1126-
output_json = json.loads(output)
1127-
res = output_json[-1]
1128-
all_intent = output_json
1129-
return res, all_intent

0 commit comments

Comments
 (0)