优化:平均响应时间只统计近7天且排除>6h异常值
避免历史旧数据和长时间未处理告警拉高平均响应时间
This commit is contained in:
@@ -522,8 +522,9 @@ class AlarmEventService:
|
||||
AlarmEvent.handle_status.in_(["DONE", "IGNORED"])
|
||||
).count()
|
||||
|
||||
# 平均响应时间(从 event_time 到 handled_at,只算已处理且时间合理的)
|
||||
# 平均响应时间(只算近7天已处理的,排除>6h的异常值)
|
||||
from sqlalchemy.sql.expression import literal_column
|
||||
stats_since = today_start - timedelta(days=7)
|
||||
avg_response = db.query(
|
||||
func.avg(
|
||||
func.timestampdiff(
|
||||
@@ -535,6 +536,8 @@ class AlarmEventService:
|
||||
).filter(
|
||||
AlarmEvent.handled_at.isnot(None),
|
||||
AlarmEvent.handled_at > AlarmEvent.event_time,
|
||||
AlarmEvent.event_time >= stats_since,
|
||||
func.timestampdiff(literal_column("MINUTE"), AlarmEvent.event_time, AlarmEvent.handled_at) <= 360,
|
||||
).scalar()
|
||||
|
||||
# 按 alarm_status 计数
|
||||
@@ -676,9 +679,15 @@ class AlarmEventService:
|
||||
handled_count = db.query(AlarmEvent).filter(AlarmEvent.handle_status.in_(["DONE", "IGNORED"])).count()
|
||||
|
||||
from sqlalchemy.sql.expression import literal_column
|
||||
stats_since = today_start - timedelta(days=7)
|
||||
avg_response = db.query(
|
||||
func.avg(func.timestampdiff(literal_column("MINUTE"), AlarmEvent.event_time, AlarmEvent.handled_at))
|
||||
).filter(AlarmEvent.handled_at.isnot(None), AlarmEvent.handled_at > AlarmEvent.event_time).scalar()
|
||||
).filter(
|
||||
AlarmEvent.handled_at.isnot(None),
|
||||
AlarmEvent.handled_at > AlarmEvent.event_time,
|
||||
AlarmEvent.event_time >= stats_since,
|
||||
func.timestampdiff(literal_column("MINUTE"), AlarmEvent.event_time, AlarmEvent.handled_at) <= 360,
|
||||
).scalar()
|
||||
|
||||
by_type = {}
|
||||
for r in db.query(AlarmEvent.alarm_type, func.count(AlarmEvent.alarm_id)).group_by(AlarmEvent.alarm_type).all():
|
||||
|
||||
Reference in New Issue
Block a user