a0f7bdb87e
GET /api/admin/dashboard/overview?site=<site_id>(site 可选,缺省聚合全部站点): - today:daily_counts 实时四指标(与 refresh_daily 共享口径)+ active_now (Visitor.last_seen_at 5 分钟窗口,走 site,-last_seen_at 索引) - trend:DailyStat 近 30 天 values(date).annotate(Sum) 跨站点求和, 缺日补零,今天一位用实时值覆盖(聚合作业未跑也不缺当日) - sources/top_pages:当天上海自然日窗口 Top8,空来源归"直接访问" - ?site= 不存在 → 404 信封 site_not_found;未认证 401(默认权限) 测试 4 个(认证/数值与形态/DailyStat 历史/站点过滤与 404),全套 79 passed。 Co-Authored-By: Claude Code <noreply@anthropic.com>
20 lines
759 B
Python
20 lines
759 B
Python
from django.urls import path
|
|
from tracker.api.collect import CollectBatchView
|
|
from tracker.api.auth import LoginView, RefreshView, MeView, UserCreateView
|
|
from tracker.api.sites import SiteListView, SiteDetailView
|
|
from tracker.api.dashboard import OverviewView
|
|
|
|
urlpatterns = [
|
|
path("api/collect/batch", CollectBatchView.as_view()),
|
|
]
|
|
|
|
urlpatterns += [
|
|
path("api/admin/auth/token", LoginView.as_view()),
|
|
path("api/admin/auth/refresh", RefreshView.as_view()),
|
|
path("api/admin/auth/me", MeView.as_view()),
|
|
path("api/admin/users", UserCreateView.as_view()),
|
|
path("api/admin/sites", SiteListView.as_view()),
|
|
path("api/admin/sites/<int:pk>", SiteDetailView.as_view()),
|
|
path("api/admin/dashboard/overview", OverviewView.as_view()),
|
|
]
|