fix: 平均值只算本次启动后的记录 + 速度 dm/s→m/s
- 平均值按 automation 开始时间过滤,不再包含历史数据 - 速度单位从 dm/s 转为 m/s(÷10),前端/后端同步转换
This commit is contained in:
+21
-8
@@ -211,15 +211,22 @@ def get_all_test_data_for_export(serial: str = "", date_from: str = "",
|
||||
conn.close()
|
||||
|
||||
|
||||
def get_automation_averages(dnt_id: int) -> dict:
|
||||
"""获取自动化测试的平均值(排除失败记录 state=3)"""
|
||||
def get_automation_averages(dnt_id: int, since: str = None) -> dict:
|
||||
"""获取本次自动化测试的平均值
|
||||
|
||||
since: ISO 时间字符串,只统计此时间之后的测试记录
|
||||
速度从 dm/s 转换为 m/s(÷10)
|
||||
"""
|
||||
conn = get_conn()
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
# 只计算最近一批自动化测试的平均值
|
||||
# 取该设备 tb_state_tst 中与 tb_serialnet state=2 对应的记录
|
||||
where = "dnt_id=%s"
|
||||
params = [dnt_id]
|
||||
if since:
|
||||
where += " AND create_time >= %s"
|
||||
params.append(since)
|
||||
cur.execute(
|
||||
"SELECT AVG(ppvalue) as avg_ppvalue, "
|
||||
f"SELECT AVG(ppvalue) as avg_ppvalue, "
|
||||
"AVG(idle_freq) as avg_idle_freq, "
|
||||
"AVG(enter_freq) as avg_enter_freq, "
|
||||
"AVG(exit_freq) as avg_exit_freq, "
|
||||
@@ -227,14 +234,20 @@ def get_automation_averages(dnt_id: int) -> dict:
|
||||
"AVG(exit_dist) as avg_exit_dist, "
|
||||
"AVG(enter_speed) as avg_enter_speed, "
|
||||
"AVG(exit_speed) as avg_exit_speed "
|
||||
"FROM tb_state_tst WHERE dnt_id=%s",
|
||||
(dnt_id,),
|
||||
f"FROM tb_state_tst WHERE {where}",
|
||||
params,
|
||||
)
|
||||
row = cur.fetchone()
|
||||
finally:
|
||||
conn.close()
|
||||
if row:
|
||||
return {k: round(v, 2) if v else 0 for k, v in row.items()}
|
||||
result = {k: round(v, 2) if v else 0 for k, v in row.items()}
|
||||
# 速度 dm/s → m/s
|
||||
if result.get("avg_enter_speed"):
|
||||
result["avg_enter_speed"] = round(result["avg_enter_speed"] / 10, 2)
|
||||
if result.get("avg_exit_speed"):
|
||||
result["avg_exit_speed"] = round(result["avg_exit_speed"] / 10, 2)
|
||||
return result
|
||||
return {}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user