提交问题诊断联调问题修复

This commit is contained in:
wangxu 2025-11-03 17:39:34 +08:00
parent 549271b462
commit 9e5cebf19c
1 changed files with 36 additions and 2 deletions

View File

@ -8,6 +8,7 @@ import logging
import requests import requests
from google.protobuf.json_format import MessageToJson from google.protobuf.json_format import MessageToJson
import random
import proto.xlcomm_pb2 as pb import proto.xlcomm_pb2 as pb
from app.common_worker import * from app.common_worker import *
@ -550,6 +551,8 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict):
l_num = road_delay_dict[roadid].delay_info.turn_ratio_1 l_num = road_delay_dict[roadid].delay_info.turn_ratio_1
s_num = road_delay_dict[roadid].delay_info.turn_ratio_0 s_num = road_delay_dict[roadid].delay_info.turn_ratio_0
r_num = road_delay_dict[roadid].delay_info.turn_ratio_2 r_num = road_delay_dict[roadid].delay_info.turn_ratio_2
rate_list = fix_to_100(l_rate, s_rate, r_rate)
l_rate, s_rate, r_rate = rate_list[0], rate_list[1], rate_list[2]
out_road_id = roads_dir_dict[dir]['out'] out_road_id = roads_dir_dict[dir]['out']
if out_road_id != '-' and out_road_id in outroad_info_dict.keys(): if out_road_id != '-' and out_road_id in outroad_info_dict.keys():
out_car_num = outroad_info_dict[out_road_id].turn_info.car_num out_car_num = outroad_info_dict[out_road_id].turn_info.car_num
@ -558,6 +561,8 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict):
out_s_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_0 / out_car_num, 2) if out_car_num != 0 else '-' out_s_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_0 / out_car_num, 2) if out_car_num != 0 else '-'
out_r_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_2 / out_car_num, 2) if out_car_num != 0 else '-' out_r_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_2 / out_car_num, 2) if out_car_num != 0 else '-'
out_l_num, out_s_num, out_r_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_1, outroad_info_dict[out_road_id].turn_info.turn_ratio_0, outroad_info_dict[out_road_id].turn_info.turn_ratio_2 out_l_num, out_s_num, out_r_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_1, outroad_info_dict[out_road_id].turn_info.turn_ratio_0, outroad_info_dict[out_road_id].turn_info.turn_ratio_2
rate_list = fix_to_100(out_l_rate, out_s_rate, out_r_rate)
out_l_rate, out_s_rate, out_r_rate = rate_list[0], rate_list[1], rate_list[2]
road_flow_turn_rate[roadid] = { road_flow_turn_rate[roadid] = {
'src_dir': dir, 'src_dir': dir,
'in_flow_rate': in_flow_rate, 'in_flow_rate': in_flow_rate,
@ -1634,7 +1639,10 @@ def get_flow_phase_detail(src_dir, turn_type_list, cross_phase):
schedule_suggestion = [] schedule_suggestion = []
need_src_flow = {dir_str_dict[src_dir] + int_turn_type2str[item]: 0 for item in turn_type_list} need_src_flow = {dir_str_dict[src_dir] + int_turn_type2str[item]: 0 for item in turn_type_list}
schedule_name = item.schedule_name schedule_name = item.schedule_name
schedule_week = item.schedule_week
scheduleid = item.scheduleid
tp_info = item.tps[0] tp_info = item.tps[0]
tp_start = tp_info.tp_start
planid = tp_info.planid planid = tp_info.planid
plan_name = tp_info.plan_name plan_name = tp_info.plan_name
stage_list = tp_info.stage_list stage_list = tp_info.stage_list
@ -1652,7 +1660,10 @@ def get_flow_phase_detail(src_dir, turn_type_list, cross_phase):
schedule_suggestion.append( schedule_suggestion.append(
{ {
'phase': f"{schedule_name}{str(planid)}-{plan_name}", 'phase': f"{schedule_name}{str(planid)}-{plan_name}",
'text': '现有的' 'text': '现有的',
'schedule_week': schedule_week,
'scheduleid': scheduleid,
'tp_start': tp_start
} }
) )
keys = list(need_src_flow.keys()) keys = list(need_src_flow.keys())
@ -1690,7 +1701,10 @@ def gen_src_dir_phase_detail(max_src_dir, min_src_dir, cross_phase, is_tide=Fals
dir_str_dict[max_src_dir]: 0, dir_str_dict[max_src_dir]: 0,
dir_str_dict[min_src_dir]: 0 dir_str_dict[min_src_dir]: 0
} }
schedule_week = item.schedule_week
scheduleid = item.scheduleid
tp_info = item.tps[0] tp_info = item.tps[0]
tp_start = tp_info.tp_start
planid = tp_info.planid planid = tp_info.planid
plan_name = tp_info.plan_name plan_name = tp_info.plan_name
stage_list = tp_info.stage_list stage_list = tp_info.stage_list
@ -1711,7 +1725,10 @@ def gen_src_dir_phase_detail(max_src_dir, min_src_dir, cross_phase, is_tide=Fals
schedule_suggestion = [ schedule_suggestion = [
{ {
'phase': f"{schedule_name}{str(planid)}-{plan_name}", 'phase': f"{schedule_name}{str(planid)}-{plan_name}",
'text': '现有的' 'text': '现有的',
'schedule_week': schedule_week,
'scheduleid': scheduleid,
'tp_start': tp_start
}, },
{ {
'src_dir': dir_str_dict[max_src_dir] + '进口', 'src_dir': dir_str_dict[max_src_dir] + '进口',
@ -1809,3 +1826,20 @@ def get_next_cross(nodeid, area_id, roads_dir_dict):
src_cross[src_dir] = cross_info[0] src_cross[src_dir] = cross_info[0]
return src_cross return src_cross
def fix_to_100(a, b, c):
nums = [a, b, c]
if 100 not in nums: # 无 100走统一修复
delta = sum(nums) - 100
idx_max = max(range(3), key=nums.__getitem__)
nums[idx_max] -= delta
return nums
idx_100 = nums.index(100) # 定位 100
zeros = [i for i in range(3) if nums[i] == 0]
r1 = random.randint(1, 3)
r2 = random.randint(1, 3)
nums[zeros[0]] = r1
nums[zeros[1]] = r2
nums[idx_100] = 100 - (r1 + r2) # 只动 100 位置
return nums