fix: new_visitors 排爬虫+日界/爬虫口径回归测试
- refresh_daily new_visitors 加 is_bot=False(爬虫不是受众,四指标口径统一) - test_refresh_daily_shanghai_boundary:固定 UTC 时间戳钉死上海自然日界 - test_refresh_daily_excludes_bots:事件/会话/访客 is_bot 均不计入 - refresh_stats 删未使用的 stat = 赋值 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@ def refresh_daily(site, date) -> DailyStat:
|
||||
|
||||
日界取 TIME_ZONE(Asia/Shanghai)自然日:make_aware(datetime.combine(date, time.min))。
|
||||
口径:pv/uv 均从事件表统计(排除 is_bot),uv=distinct visitor,与 pv 同源;
|
||||
sessions 按会话 started_at 落入当日且访客非爬虫;new_visitors 按 Visitor.first_seen_at 落入当日。
|
||||
sessions 按会话 started_at 落入当日且访客非爬虫;new_visitors 按 Visitor.first_seen_at 落入当日(同样排除爬虫访客,四指标口径统一)。
|
||||
"""
|
||||
day_start = timezone.make_aware(datetime.combine(date, time.min))
|
||||
day_end = day_start + timedelta(days=1)
|
||||
@@ -19,7 +19,7 @@ def refresh_daily(site, date) -> DailyStat:
|
||||
sessions = VisitSession.objects.filter(site=site, visitor__is_bot=False,
|
||||
started_at__gte=day_start,
|
||||
started_at__lt=day_end).count()
|
||||
new_v = Visitor.objects.filter(site=site, first_seen_at__gte=day_start,
|
||||
new_v = Visitor.objects.filter(site=site, is_bot=False, first_seen_at__gte=day_start,
|
||||
first_seen_at__lt=day_end).count()
|
||||
obj, _ = DailyStat.objects.update_or_create(site=site, date=date,
|
||||
defaults={"pv": pv, "uv": uv, "sessions": sessions, "new_visitors": new_v})
|
||||
|
||||
Reference in New Issue
Block a user