1.优化路径分析,展示对应的中文显示,按固定格式进行排序

This commit is contained in:
李伟 2022-05-17 16:30:04 +08:00
parent e83c49caf3
commit 69fa383c44

View File

@ -1401,16 +1401,35 @@ async def trace_model_sql(
if df.empty: if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None) return schemas.Msg(code=-9, msg='无数据', data=None)
chain_dict = defaultdict(dict) chain_dict = defaultdict(dict)
event_num_dict={}
nodes = {'流失'} nodes = {'流失'}
name_list=analysis.events['event_namesdes']
name_dict={}
for i in name_list:
name_dict[i['event_name']]=i['event_desc']
for event_names, count in zip(df['event_chain'], df['values']): for event_names, count in zip(df['event_chain'], df['values']):
fmt_keys=[]
chain_len = len(event_names) chain_len = len(event_names)
for i, event_name in enumerate(event_names): for i, event_name in enumerate(event_names):
if i >= 10: if i >= 10:
continue continue
next_event = event_names[i + 1] if i < chain_len - 1 else '流失' next_event = event_names[i + 1] if i < chain_len - 1 else '流失'
key = (f'{event_name}{i}', f'{next_event}{i + 1}') #按对应的中文名显示
event_namess=name_dict.get(event_name,event_name)
next_eventss=name_dict.get(next_event,next_event)
key = (f'{event_namess}-{i}', f'{next_eventss}-{i + 1}')
#key = (f'{event_name}', f'{next_event}')
nodes.update(key) nodes.update(key)
chain_dict[i][key] = chain_dict[i].setdefault(key, 0) + count chain_dict[i][key] = chain_dict[i].setdefault(key, 0) + count
keys = list(key)
for true_key in keys:
if true_key in fmt_keys:
continue
if true_key in event_num_dict:
event_num_dict[true_key] += count
else:
event_num_dict[true_key] = count
fmt_keys.append(true_key)
links = [] links = []
for _, items in chain_dict.items(): for _, items in chain_dict.items():
@ -1420,15 +1439,30 @@ async def trace_model_sql(
"target": keys[1], "target": keys[1],
"value": val "value": val
}) })
# nodes = set() node=[ item for item in nodes]
# for item in links: node.sort()
# nodes.update(( #按固定的首尾排序
# item['source'], first = []
# item['target']) trail = []
# ) nodes = []
for i in node:
if analysis.events['source_event']['eventDesc'] in i:
first.append(i)
elif '流失' in i:
trail.append(i)
else:
nodes.append(i)
first.sort(reverse=True)
for i in first:
nodes.insert(0, i)
for i in trail:
nodes.append(i)
data = { data = {
#'nodes': [{'name': item} for item in nodes],
'nodes': [{'name': item} for item in nodes], 'nodes': [{'name': item} for item in nodes],
'links': links, 'links': links,
#'event_num':event_num_dict,
'start_date': res['start_date'], 'start_date': res['start_date'],
'end_date': res['end_date'], 'end_date': res['end_date'],
'time_particle': res['time_particle'] 'time_particle': res['time_particle']