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:
@@ -290,3 +290,24 @@ def test_overview_avg_stay_mixed_v1_v2_session(client, member_user):
|
||||
d = client.get("/api/admin/dashboard/overview", {"range": "today"}).json()["data"]
|
||||
assert d["cards"]["visits"]["value"] == 1
|
||||
assert d["cards"]["avg_stay_ms"] == {"value": 38000, "delta_pct": None} # 38000/1;上期无会话 → None
|
||||
|
||||
|
||||
def test_overview_trend_pv_only_page_view(client, member_user):
|
||||
"""PV 口径回归(阶段A T11):SDK 0.2.0 每 15s 一条 page_stay 增量 + sdk_loaded,
|
||||
趋势自愈回写 DailyStat.pv 只计 page_view(与 daily_counts 同口径)——
|
||||
增量停留事件不得灌倍 PV;uv 仍按任意事件 distinct visitor 计。"""
|
||||
_auth(client, member_user)
|
||||
site = Site.objects.create(name="s", domains=["a.com"])
|
||||
v1 = _visitor(site, "v1", last_seen=timezone.now())
|
||||
s1 = _session(site, v1, "s1")
|
||||
# 模拟一次活跃访问的事件流:1 次浏览 + SDK 装载 + 3 条 15s 停留增量
|
||||
names = ["page_view", "sdk_loaded", "page_stay", "page_stay", "page_stay"]
|
||||
for i, name in enumerate(names):
|
||||
Event.objects.create(site=site, visitor=v1, session=s1,
|
||||
event_id=f"pvx-{i}", event_name=name,
|
||||
occurred_at=NOW + timedelta(seconds=i), path="/")
|
||||
|
||||
d = client.get("/api/admin/dashboard/overview").json()["data"]
|
||||
assert d["trend"][-1] == {"date": TODAY.isoformat(), "uv": 1, "sessions": 1}
|
||||
row = DailyStat.objects.get(site=site, date=TODAY)
|
||||
assert (row.pv, row.uv) == (1, 1) # 5 条事件仅 1 条 page_view 计 PV
|
||||
|
||||
Reference in New Issue
Block a user