{% extends "base.html" %} {% block title %}Analytics - AISBF Dashboard{% endblock %} {% macro format_tokens(value) %} {% if value is none or value == 0 %}0{% else %} {% set val = value | float %} {% if val >= 1000000000 %} {{ "%.2f"|format(val / 1000000000) }}B {% elif val >= 1000000 %} {{ "%.2f"|format(val / 1000000) }}M {% elif val >= 1000 %} {{ "%.2f"|format(val / 1000) }}K {% else %} {{ value }} {% endif %} {% endif %} {% endmacro %} {% block content %}

Token Usage Analytics

๐Ÿ“Š Analytics ๐Ÿ’พ Response Cache โฑ๏ธ Rate Limits

Filter by Date Range

{% if from_date or to_date %}
Selected Range: {% if from_date %}{{ from_date }}{% else %}Beginning{% endif %} to {% if to_date %}{{ to_date }}{% else %}Now{% endif %} {% if date_range_usage %} | Total: {{ format_tokens(date_range_usage.total_tokens) }} tokens | Estimated Cost: {{ currency_symbol }}{{ "%.2f"|format(date_range_usage.estimated_cost) }} {% endif %}
{% endif %}

Filter by Provider, Model, Rotation, Autoselect, or User

{% if from_date %}{% endif %} {% if to_date %}{% endif %}
{% if is_admin %}
{% if available_users|length < 25 %} {% else %}
{% endif %}
{% endif %}
{% if selected_provider or selected_model or selected_rotation or selected_autoselect or selected_user %}
Clear Filters
{% endif %}
{% if selected_provider or selected_model or selected_rotation or selected_autoselect or selected_user %}
Active Filters: {% if selected_provider %}Provider: {{ selected_provider }}{% endif %} {% if selected_model %}{% if selected_provider %} | {% endif %}Model: {{ selected_model }}{% endif %} {% if selected_rotation %}{% if selected_provider or selected_model %} | {% endif %}Rotation: {{ selected_rotation }}{% endif %} {% if selected_autoselect %}{% if selected_provider or selected_model or selected_rotation %} | {% endif %}Autoselect: {{ selected_autoselect }}{% endif %} {% if selected_user %}{% if selected_provider or selected_model or selected_rotation or selected_autoselect %} | {% endif %}User: {% for user in available_users %}{% if user.id == selected_user %}{{ user.username }}{% endif %}{% endfor %}{% endif %}
{% endif %}
{% if recommendations %}

Optimization Recommendations

{% for rec in recommendations %}
{{ rec.type|replace('_', ' ')|title }}

{{ rec.message }}

{{ rec.action }}
{% endfor %}
{% endif %}

Provider Statistics

{% if provider_stats %} {% for provider in provider_stats %} {% endfor %} {% if provider_stats %} {% endif %}
Provider Model Rotation Autoselect Total Requests Success Errors Error Rate Avg Latency Input Tokens Output Tokens Total Tokens
{{ provider.provider_id }} {{ provider.model_name or '' }} {{ provider.rotation_id or '' }} {{ provider.autoselect_id or '' }} {{ provider.requests.total }} {{ provider.requests.success }} {{ provider.requests.error }} 0.1 %}style="color: #f87171;"{% endif %}> {{ "%.1f"|format(provider.error_rate * 100) }}% 5000 %}style="color: #fcd34d;"{% endif %}> {% if provider.avg_latency_ms > 1000 %}{{ "%.1f"|format(provider.avg_latency_ms / 1000) }}s{% else %}{{ "%.0f"|format(provider.avg_latency_ms) }}ms{% endif %} {{ format_tokens(provider.tokens.prompt or 0) }} {{ format_tokens(provider.tokens.completion or 0) }} {{ format_tokens(provider.tokens.total or 0) }}
Total {{ provider_stats | sum(attribute='requests.total') }} {{ provider_stats | sum(attribute='requests.success') }} {{ provider_stats | sum(attribute='requests.error') }} {% set total_requests = provider_stats | sum(attribute='requests.total') %} {% set total_errors = provider_stats | sum(attribute='requests.error') %} {% if total_requests > 0 %} {{ "%.1f"|format((total_errors / total_requests) * 100) }}% {% else %} 0.0% {% endif %} {% set total_requests = provider_stats | sum(attribute='requests.total') %} {% if total_requests > 0 %} {% set weighted_sum = namespace(value=0) %} {% for provider in provider_stats %} {% set weighted_sum.value = weighted_sum.value + (provider.avg_latency_ms | float * provider.requests.total) %} {% endfor %} {% set avg_latency = weighted_sum.value / total_requests %} {% if avg_latency > 1000 %}{{ "%.1f"|format(avg_latency / 1000) }}s{% else %}{{ "%.0f"|format(avg_latency) }}ms{% endif %} {% else %} N/A {% endif %} {{ format_tokens(provider_stats | sum(attribute='tokens.prompt') or 0) }} {{ format_tokens(provider_stats | sum(attribute='tokens.completion') or 0) }} {{ format_tokens(provider_stats | sum(attribute='tokens.total') or 0) }}
{% else %}

No provider statistics available yet. Make API requests to see analytics.

{% endif %}

Cost Overview

{% if from_date or to_date %}Selected Period Cost{% else %}Today's Estimated Cost{% endif %}

{{ currency_symbol }}{{ "%.2f"|format(cost_overview.total_estimated_cost_today) }}

{% if cost_overview.date_range %} {{ cost_overview.date_range.start[:10] }} to {{ cost_overview.date_range.end[:10] }} {% endif %}

๐Ÿ’ฐ Estimated Savings

{{ currency_symbol }}0.00

From cache hits & optimization
{% for pc in cost_overview.providers %}

{{ pc.provider_id }}

${{ "%.2f"|format(pc.estimated_cost) }}

{{ format_tokens(pc.tokens_today) }} tokens
{% endfor %}

Optimization Savings

{% if optimization_savings and optimization_savings.total_tokens_saved > 0 %}

Total Tokens Saved

{{ format_tokens(optimization_savings.total_tokens_saved) }}

{% if optimization_savings.date_range %} {{ optimization_savings.date_range.start[:10] }} to {{ optimization_savings.date_range.end[:10] }} {% endif %}

Total Cost Saved

${{ "%.2f"|format(optimization_savings.total_cost_saved) }}

From optimizations
{% if optimization_savings.savings_by_type %} {% for opt_type, stats in optimization_savings.savings_by_type.items() %} {% endfor %}
Optimization Type Count Tokens Saved Cost Saved Avg Tokens/Optimization Max Tokens Saved
{{ opt_type.title() }} {{ stats.count }} {{ format_tokens(stats.tokens_saved) }} ${{ "%.4f"|format(stats.cost_saved) }} {{ format_tokens(stats.avg_tokens_saved) }} {{ format_tokens(stats.max_tokens_saved) }}
Total {{ optimization_savings.savings_by_type.values() | sum(attribute='count') }} {{ format_tokens(optimization_savings.total_tokens_saved) }} ${{ "%.4f"|format(optimization_savings.total_cost_saved) }} - -
{% endif %} {% else %}

No optimization savings recorded yet. Enable deduplication, condensation, batching, or caching to see savings.

{% endif %}

Model Performance

{% if model_performance %} {% for model in model_performance %} {% endfor %}
Provider Model Type Context Size Condense % Condense Method Tokens/Day Error Rate Avg Latency
{{ model.provider_id }} {{ model.model_name }} {% if model.is_rotation %} Rotation: {{ model.rotation_id }} {% elif model.is_autoselect %} Autoselect: {{ model.autoselect_id }} {% else %} {{ model.provider_type|title }} {% endif %} {{ model.context_size|default('N/A') }} {{ model.condense_context|default('N/A') }}% {{ model.condense_method|default('None') }} {{ format_tokens(model.tokens_per_day) }} 0.1 %}style="color: #f87171;"{% endif %}> {{ "%.1f"|format(model.error_rate * 100) }}% 5000 %}style="color: #fcd34d;"{% endif %}> {% if model.avg_latency_ms > 1000 %}{{ "%.1f"|format(model.avg_latency_ms / 1000) }}s{% else %}{{ "%.0f"|format(model.avg_latency_ms) }}ms{% endif %}
{% else %}

No model performance data available yet.

{% endif %}

Token Usage Over Time {% if from_date or to_date %} (Custom Range) {% elif selected_time_range == '1h' %} (Last 1 Hour) {% elif selected_time_range == '6h' %} (Last 6 Hours) {% elif selected_time_range == '24h' %} (Last 24 Hours) {% elif selected_time_range == 'yesterday' %} (Yesterday) {% elif selected_time_range == '7d' %} (Last 7 Days) {% elif selected_time_range == '30d' %} (Last 30 Days) {% elif selected_time_range == '90d' %} (Last 90 Days) {% else %} (Last 24 Hours) {% endif %}

{% if token_over_time != '[]' %}
{% else %}

No token usage data available for the selected period.

{% endif %} {% if rotation_breakdown %}

Rotation Breakdown

{% for rot in rotation_breakdown %}

โŸณ {{ rot.rotation_id }} {{ rot.total_requests }} requests ยท {{ format_tokens(rot.total_tokens) }} tokens

{% for e in rot.entries %} {% endfor %}
Provider Model Requests Hit % Tokens Token % Avg Latency
{{ e.provider_id }} {{ e.model_name or '' }} {{ e.requests }}
{{ e.hit_pct }}%
{{ format_tokens(e.tokens) }}
{{ e.token_pct }}%
5000 %}style="color: #fcd34d;"{% endif %}> {% if e.avg_latency_ms > 1000 %}{{ "%.1f"|format(e.avg_latency_ms / 1000) }}s{% else %}{{ "%.0f"|format(e.avg_latency_ms) }}ms{% endif %}
{% endfor %} {% endif %} {% if autoselect_breakdown %}

Autoselect Breakdown

{% for asel in autoselect_breakdown %}

โšก {{ asel.autoselect_id }} {{ asel.total_requests }} requests ยท {{ format_tokens(asel.total_tokens) }} tokens

{% for e in asel.entries %} {% endfor %}
Selected Model / Rotation Requests Hit % Tokens Token % Selection Latency
{{ e.model_name or '(unknown)' }} {{ e.requests }}
{{ e.hit_pct }}%
{{ format_tokens(e.tokens) }}
{{ e.token_pct }}%
5000 %}style="color: #fcd34d;"{% endif %}> {% if e.avg_latency_ms > 1000 %}{{ "%.1f"|format(e.avg_latency_ms / 1000) }}s{% else %}{{ "%.0f"|format(e.avg_latency_ms) }}ms{% endif %}
{% endfor %} {% endif %} {% set internal_providers = ['kiro', 'kilo', 'claude', 'codex'] %} {% set internal_stats = provider_stats | selectattr('provider_id', 'in', internal_providers) | list %} {% if not internal_stats %} {# also catch any provider_id that contains these keywords #} {% set internal_stats = [] %} {% for p in provider_stats %} {% if 'kiro' in p.provider_id or 'kilo' in p.provider_id or 'claude' in p.provider_id %} {% set _ = internal_stats.append(p) %} {% endif %} {% endfor %} {% endif %} {% if internal_stats %}

Internal / CLI Provider Stats

{% for p in internal_stats %} {% endfor %}
Provider Model Total Requests Success Errors Error Rate Avg Latency Input Tokens Output Tokens Total Tokens
{{ p.provider_id }} {{ p.model_name or '' }} {{ p.requests.total }} {{ p.requests.success }} {{ p.requests.error }} 0.1 %}style="color: #f87171;"{% endif %}>{{ "%.1f"|format(p.error_rate * 100) }}% 5000 %}style="color: #fcd34d;"{% endif %}> {% if p.avg_latency_ms > 1000 %}{{ "%.1f"|format(p.avg_latency_ms / 1000) }}s{% else %}{{ "%.0f"|format(p.avg_latency_ms) }}ms{% endif %} {{ format_tokens(p.tokens.prompt or 0) }} {{ format_tokens(p.tokens.completion or 0) }} {{ format_tokens(p.tokens.total or 0) }}
{% endif %} {% if is_config_admin %}

โš  Analytics Management

These actions permanently delete analytics data from the database and cannot be undone.

{% endif %}
Back to Dashboard {% if is_admin %} Rate Limits Response Cache {% endif %}
{% endblock %}