diff --git a/server/tracker/api/dashboard.py b/server/tracker/api/dashboard.py index c87a9dd..4e14550 100644 --- a/server/tracker/api/dashboard.py +++ b/server/tracker/api/dashboard.py @@ -72,7 +72,8 @@ class OverviewView(EnvelopeMixin, APIView): q = q.filter(site=site) return [{"source": r["referrer_domain"] or "直接访问", "sessions": r["n"]} for r in q.values("referrer_domain") - .annotate(n=Count("id")).order_by("-n")[:8]] + .annotate(n=Count("id")) + .order_by("-n", "referrer_domain")[:8]] # 平局时次序跨请求稳定 def _today_pages(self, site, today): start, end = _day_bounds(today) @@ -82,4 +83,5 @@ class OverviewView(EnvelopeMixin, APIView): q = q.filter(site=site) return [{"path": r["path"], "pv": r["n"]} for r in q.values("path") - .annotate(n=Count("id")).order_by("-n")[:8]] + .annotate(n=Count("id")) + .order_by("-n", "path")[:8]] # 平局时次序跨请求稳定 diff --git a/server/tracker/tests/test_dashboard.py b/server/tracker/tests/test_dashboard.py index 69758f8..d16d642 100644 --- a/server/tracker/tests/test_dashboard.py +++ b/server/tracker/tests/test_dashboard.py @@ -92,7 +92,7 @@ def test_overview_trend_uses_dailystat_history(client, member_user): sa = _session(site_a, va, "sa", at=yn) _events(site_a, va, sa, 3, "/", at=yn, prefix="ya") refresh_daily(site_a, YESTERDAY) - # b 站昨天直接落一行(site=None 时验证 Sum 跨站点聚合) + # b 站昨天 4 事件同样走 refresh_daily——两站各落一行,验证 site=None 的跨站 Sum vb = Visitor.objects.create(site=site_b, visitor_id="vb") sb = _session(site_b, vb, "sb", at=yn) _events(site_b, vb, sb, 4, "/", at=yn, prefix="yb")