{% extends "base.html" %}{% block crumb %}{{ _('Runs') }}{{ run.id[-8:] }}{% endblock %} {% block actions %}{% endblock %} {% block content %}
{{ _('Summary') }}
{% if run.error_code %}{% endif %}
{{ _('status') }}{{ _(run.status) }}{% if run.degraded %} degraded{% endif %}{% if run.cache_hit %} · cache hit{% endif %}
{{ _('route') }}{{ run.route_name }} · {{ run.strategy }}
{{ _('engine') }}{{ run.winning_engine or '-' }} {{ run.winning_provider }}
{{ _('Input') }}{{ run.input_kind }} · {{ run.mime }} · {{ run.bytes }} B · {{ run.page_count }} p · {{ run.image_sha256[:12] }}
{{ _('time') }}{{ run.created_at }} → {{ run.finished_at }} · {{ run.duration_ms }} ms
{{ _('Text') }}{{ run.chars }} chars · {{ run.lines }} lines · {{ run.words }} words · conf {{ run.mean_confidence }}
{{ _('cost') }}{{ '%.4f'|format(run.cost_cents) }} ¢
{{ _('client') }}{{ run.client_ip }} · key {{ run.api_key_id or '-' }} · {{ run.origin }}
{{ _('error') }}{{ run.error_code }} {{ run.error_message }}
{% for a in run.artifacts %}{{ a.kind }}{% endfor %}{% if run.result_json and run.status in ('succeeded','cached') %}{% for k in export_kinds if k != 'overlay_png' and k not in run.artifacts|map(attribute='kind') %}{{ k }}{% endfor %}{% endif %}
{{ _('Attempt timeline') }}
{% set total = [run.attempts|map(attribute='duration_ms')|sum, 1]|max %}
{% set ns = namespace(acc=0) %}{% for a in run.attempts %}
{{ a.order_index }}. {{ a.engine_id }} {{ a.provider_label }}
{{ a.duration_ms }} ms{{ _(a.status) }}{% if a.error_code %}{{ a.error_code }} {{ a.error_message[:90] }}{% endif %}
{% set ns.acc = ns.acc + a.duration_ms %}{% else %}-{% endfor %}
{% if run.routing_json and run.routing_json.explain %}

{{ _('Explain') }}

    {% for x in run.routing_json.explain %}
  • {{ x }}
  • {% endfor %}
{% endif %}
{% endblock %} {% block scripts %}{% endblock %}