{% extends "base.html" %} {% block actions %}
{% endblock %} {% block content %}

{{ _('Welcome back, {name}.', name=user) }} {% if not alerts %}{{ _('Everything looks healthy.') }}{% endif %}

{% if onboarding and onboarding|selectattr(1, 'equalto', false)|list %}
{{ _('Getting started') }}
    {% for label, done, href in onboarding %}
  1. {{ '✓' if done else loop.index }}{% if done %}{{ _(label) }}{% else %}{{ _(label) }}{% endif %}
  2. {% endfor %}
{% elif onboarding %}
{{ _('All set - OcrRoute is ready to route.') }}
{% endif %} {% for a in alerts %}
{{ a }}
{% endfor %}
{{ summary.runs }}
{{ _('runs') }} · {{ summary.success_rate }}% {{ _('succeeded') }}
{{ summary.p50_ms }} / {{ summary.p95_ms }} ms
{{ _('p50 / p95 latency') }}
{{ summary.pages }}
{{ _('pages') }} · {{ _('cache hits') }} {{ summary.cache_hit_rate }}%
${{ '%.4f'|format(summary.cost_cents/100) }}
{{ _('estimated spend') }} · {{ _('month to date') }} ${{ '%.3f'|format(summary.month_cost_cents/100) }}
{{ _('Runs by day') }}
{{ _('Attempts by engine (window)') }}
{{ _('Provider health') }}
{% for p in providers %}{{ p.label }}{% else %}{{ _('No providers yet') }} - {{ _('add one') }}.{% endfor %}

{{ summary.healthy_providers }}/{{ summary.total_providers }} {{ _('healthy') }} · queue {{ summary.queue_depth }} · cache {{ summary.cache_entries }}

{{ _('Live run feed') }}
{{ _('Engines in window') }}
{% for e in engines %}{% else %}{% endfor %}
{{ _('engine') }}{{ _('attempts') }}{{ _('succeeded') }}{{ _('avg') }}{{ _('cost') }}
{{ e.engine }}{{ e.attempts }}{{ e.success_rate }}%{{ e.avg_ms }} ms${{ '%.4f'|format(e.cost_cents/100) }}
{{ _('No attempts in this window.') }}
{% endblock %} {% block scripts %}{% endblock %}