修复首页热门信息为空问题并增加历史兜底
变更项: 1. 保留热门用户/热门群组/热门插件逻辑,未移除任何热门模块。 2. 为热门数据增加兜底策略:最近N天无数据时自动回退到全量历史Top5。 3. 覆盖插件、用户、群组三类热门榜单,避免首页出现整块空表。
This commit is contained in:
@@ -533,7 +533,7 @@ class StatsDBOperator(BaseDBOperator):
|
|||||||
latency_score = max(0, min(100, ((5000 - avg_response_time) / 4500) * 100))
|
latency_score = max(0, min(100, ((5000 - avg_response_time) / 4500) * 100))
|
||||||
group_health_score = (success_rate * 0.7) + (latency_score * 0.3)
|
group_health_score = (success_rate * 0.7) + (latency_score * 0.3)
|
||||||
|
|
||||||
# 7. 最常用的插件
|
# 7. 最常用的插件(优先统计窗口,无数据时回退全量)
|
||||||
top_plugins_sql = """
|
top_plugins_sql = """
|
||||||
SELECT plugin_name, SUM(total_calls) as total_calls
|
SELECT plugin_name, SUM(total_calls) as total_calls
|
||||||
FROM t_plugin_stats
|
FROM t_plugin_stats
|
||||||
@@ -543,8 +543,17 @@ class StatsDBOperator(BaseDBOperator):
|
|||||||
LIMIT 5
|
LIMIT 5
|
||||||
"""
|
"""
|
||||||
top_plugins = self.execute_query(top_plugins_sql, (start_date_str,)) or []
|
top_plugins = self.execute_query(top_plugins_sql, (start_date_str,)) or []
|
||||||
|
if not top_plugins:
|
||||||
# 8. 最活跃的用户
|
top_plugins_all_sql = """
|
||||||
|
SELECT plugin_name, SUM(total_calls) as total_calls
|
||||||
|
FROM t_plugin_stats
|
||||||
|
GROUP BY plugin_name
|
||||||
|
ORDER BY total_calls DESC
|
||||||
|
LIMIT 5
|
||||||
|
"""
|
||||||
|
top_plugins = self.execute_query(top_plugins_all_sql) or []
|
||||||
|
|
||||||
|
# 8. 最活跃的用户(优先统计窗口,无数据时回退全量)
|
||||||
top_users_sql = """
|
top_users_sql = """
|
||||||
SELECT user_id, SUM(total_calls) as total_calls
|
SELECT user_id, SUM(total_calls) as total_calls
|
||||||
FROM t_user_stats
|
FROM t_user_stats
|
||||||
@@ -554,8 +563,17 @@ class StatsDBOperator(BaseDBOperator):
|
|||||||
LIMIT 5
|
LIMIT 5
|
||||||
"""
|
"""
|
||||||
top_users = self.execute_query(top_users_sql, (start_date_str,)) or []
|
top_users = self.execute_query(top_users_sql, (start_date_str,)) or []
|
||||||
|
if not top_users:
|
||||||
# 9. 最活跃的群组
|
top_users_all_sql = """
|
||||||
|
SELECT user_id, SUM(total_calls) as total_calls
|
||||||
|
FROM t_user_stats
|
||||||
|
GROUP BY user_id
|
||||||
|
ORDER BY total_calls DESC
|
||||||
|
LIMIT 5
|
||||||
|
"""
|
||||||
|
top_users = self.execute_query(top_users_all_sql) or []
|
||||||
|
|
||||||
|
# 9. 最活跃的群组(优先统计窗口,无数据时回退全量)
|
||||||
top_groups_sql = """
|
top_groups_sql = """
|
||||||
SELECT group_id, SUM(total_calls) as total_calls
|
SELECT group_id, SUM(total_calls) as total_calls
|
||||||
FROM t_group_stats
|
FROM t_group_stats
|
||||||
@@ -565,6 +583,15 @@ class StatsDBOperator(BaseDBOperator):
|
|||||||
LIMIT 5
|
LIMIT 5
|
||||||
"""
|
"""
|
||||||
top_groups = self.execute_query(top_groups_sql, (start_date_str,)) or []
|
top_groups = self.execute_query(top_groups_sql, (start_date_str,)) or []
|
||||||
|
if not top_groups:
|
||||||
|
top_groups_all_sql = """
|
||||||
|
SELECT group_id, SUM(total_calls) as total_calls
|
||||||
|
FROM t_group_stats
|
||||||
|
GROUP BY group_id
|
||||||
|
ORDER BY total_calls DESC
|
||||||
|
LIMIT 5
|
||||||
|
"""
|
||||||
|
top_groups = self.execute_query(top_groups_all_sql) or []
|
||||||
|
|
||||||
# 返回汇总数据
|
# 返回汇总数据
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user