0b1d377db7
Co-Authored-By: Claude Code <noreply@anthropic.com>
22 lines
751 B
Python
22 lines
751 B
Python
"""GET /api/analytics/* —— 数据分析板块端组(前缀分组=未来角色权限落点)。"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Annotated, Any
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.analytics import health as health_svc
|
|
from app.api.deps import get_session
|
|
|
|
router = APIRouter(prefix="/api/analytics", tags=["analytics"])
|
|
|
|
SessionDep = Annotated[AsyncSession, Depends(get_session)]
|
|
|
|
|
|
@router.get("/health")
|
|
async def analytics_health(session: SessionDep) -> dict[str, Any]:
|
|
"""E0-lite:数据截至 + 实体新鲜度。"""
|
|
as_of = await health_svc.data_as_of(session)
|
|
return {"data_as_of": as_of, "entities": await health_svc.entity_freshness(session)}
|