修复首页热门信息为空问题并增加历史兜底

变更项:

1. 保留热门用户/热门群组/热门插件逻辑,未移除任何热门模块。

2. 为热门数据增加兜底策略:最近N天无数据时自动回退到全量历史Top5。

3. 覆盖插件、用户、群组三类热门榜单,避免首页出现整块空表。
This commit is contained in:
liuwei
2026-04-15 17:25:19 +08:00
parent 26c534540d
commit fd21ebf681

View File

@@ -533,7 +533,7 @@ class StatsDBOperator(BaseDBOperator):
latency_score = max(0, min(100, ((5000 - avg_response_time) / 4500) * 100))
group_health_score = (success_rate * 0.7) + (latency_score * 0.3)
# 7. 最常用的插件
# 7. 最常用的插件(优先统计窗口,无数据时回退全量)
top_plugins_sql = """
SELECT plugin_name, SUM(total_calls) as total_calls
FROM t_plugin_stats
@@ -543,8 +543,17 @@ class StatsDBOperator(BaseDBOperator):
LIMIT 5
"""
top_plugins = self.execute_query(top_plugins_sql, (start_date_str,)) or []
# 8. 最活跃的用户
if not top_plugins:
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 = """
SELECT user_id, SUM(total_calls) as total_calls
FROM t_user_stats
@@ -554,8 +563,17 @@ class StatsDBOperator(BaseDBOperator):
LIMIT 5
"""
top_users = self.execute_query(top_users_sql, (start_date_str,)) or []
# 9. 最活跃的群组
if not top_users:
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 = """
SELECT group_id, SUM(total_calls) as total_calls
FROM t_group_stats
@@ -565,6 +583,15 @@ class StatsDBOperator(BaseDBOperator):
LIMIT 5
"""
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 {