Skip to content

analytics

analytics

Analytics API endpoints.

Exposes aggregated statistics computed by DaemonAnalytics as JSON endpoints for the dashboard analytics page.

Classes

Functions

get_analytics

get_analytics()

Return the module-level analytics instance.

Raises RuntimeError if not yet configured.

Source code in src/marianne/dashboard/routes/analytics.py
def get_analytics() -> DaemonAnalytics:
    """Return the module-level analytics instance.

    Raises ``RuntimeError`` if not yet configured.
    """
    if _analytics is None:
        raise RuntimeError(
            "DaemonAnalytics not configured. Call set_analytics() before serving requests."
        )
    return _analytics

set_analytics

set_analytics(analytics)

Configure the module-level analytics instance (called from app.py).

Source code in src/marianne/dashboard/routes/analytics.py
def set_analytics(analytics: DaemonAnalytics) -> None:
    """Configure the module-level analytics instance (called from app.py)."""
    global _analytics
    _analytics = analytics

analytics_stats async

analytics_stats()

Full dashboard stats: job counts, success rate, spend, throughput.

Source code in src/marianne/dashboard/routes/analytics.py
@router.get("/stats")
async def analytics_stats() -> dict[str, Any]:
    """Full dashboard stats: job counts, success rate, spend, throughput."""
    return await get_analytics().get_stats()

analytics_costs async

analytics_costs()

Cost rollup: breakdown by job, total spend, avg cost per job.

Source code in src/marianne/dashboard/routes/analytics.py
@router.get("/costs")
async def analytics_costs() -> dict[str, Any]:
    """Cost rollup: breakdown by job, total spend, avg cost per job."""
    return await get_analytics().cost_rollup()

analytics_validations async

analytics_validations()

Validation stats: pass rates by rule type, overall pass rate.

Source code in src/marianne/dashboard/routes/analytics.py
@router.get("/validations")
async def analytics_validations() -> dict[str, Any]:
    """Validation stats: pass rates by rule type, overall pass rate."""
    return await get_analytics().validation_stats()

analytics_errors async

analytics_errors()

Error breakdown: counts by category (transient, rate_limit, permanent).

Source code in src/marianne/dashboard/routes/analytics.py
@router.get("/errors")
async def analytics_errors() -> dict[str, Any]:
    """Error breakdown: counts by category (transient, rate_limit, permanent)."""
    return await get_analytics().error_breakdown()

analytics_durations async

analytics_durations()

Duration stats: avg sheet duration, job totals, slowest sheets.

Source code in src/marianne/dashboard/routes/analytics.py
@router.get("/durations")
async def analytics_durations() -> dict[str, Any]:
    """Duration stats: avg sheet duration, job totals, slowest sheets."""
    return await get_analytics().duration_stats()