fix(server): PV统计加event_name过滤——增量停留事件不再灌倍PV(gzip 4817B记录:0.1.0为3838,增量989)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-18 15:16:05 +08:00
parent f24060de87
commit 87261abf16
4 changed files with 44 additions and 4 deletions
+4 -2
View File
@@ -12,7 +12,7 @@
"""
from datetime import datetime, time, timedelta
from django.db.models import Count, Sum
from django.db.models import Count, Q, Sum
from django.db.models.functions import Trunc
from django.utils import timezone
from rest_framework.response import Response
@@ -128,9 +128,11 @@ class OverviewView(EnvelopeMixin, APIView):
return rows.setdefault(
(sid, day), {"pv": 0, "uv": 0, "sessions": 0, "new_visitors": 0})
# pv 只计 page_view(与 daily_counts 同口径):page_stay 增量/sdk_loaded 不并计
for r in (ev.annotate(day=Trunc("occurred_at", "day", tzinfo=tz))
.values("site", "day")
.annotate(pv=Count("id"), uv=Count("visitor", distinct=True))):
.annotate(pv=Count("id", filter=Q(event_name="page_view")),
uv=Count("visitor", distinct=True))):
row = _row(r["site"], r["day"].date())
row["pv"], row["uv"] = r["pv"], r["uv"]
for r in (vs.annotate(day=Trunc("started_at", "day", tzinfo=tz))