{% extends "base.html" %} {% from "fragments/_chips.html" import chip %} {% block title %}Voxint — jobs{% endblock %} {% block cb_breadcrumb %}jobs /{% endblock %} {% block cb_summary %}{{ pipeline_summary }}{% endblock %} {% block cb_actions %}{% endblock %} {% block body %}
{% for stage in display_stages %}
{{ stage.label }}
{% if stage.active %}
{{ stage.active }} active
{{ stage.queued }} waiting
{% elif stage.queued %}
{{ stage.queued }}
waiting
{% else %}
0
idle
{% endif %}
{% endfor %}
{% for d in degraded %} {% endfor %}

RECENT RUNS

{% for key, label in filter_labels %} {{ label }} {% endfor %} Archived →
{% if not runs %}

No runs{% if active_filter != "all" %} matching this filter{% endif %}. Add a recording from the Media page.

{% else %}
MEDIA STATUS REVIEW STARTED TOOK
{% for item in runs %}
{{ friendly_media_label(item.title, item.source_path) }} {{ chip(humanize_status(item.status)) }} {% if item.status == "completed" and item.unresolved_count > 0 %} {{ chip(item.unresolved_count ~ " voices need you") }} {% elif item.status == "completed" %} {{ chip("reviewed") }} {% else %} — {% endif %} {{ format_age(item.created_at, now=now) }} {% if item.status == "completed" and item.unresolved_count > 0 %} Review → {% elif item.status == "failed" %} Retry → {% else %} View → {% endif %}
{% endfor %}
{% endif %}

OTHER JOBS

The most recent asset, translation, voice sample, and research jobs. These run alongside the pipeline and never block it.

{% if not aux_jobs %}

No auxiliary jobs yet.

{% else %}
KIND DETAIL STATUS TARGET CREATED
{% for job in aux_jobs %}
{{ job.family }} {{ job.detail or "—" }} {{ chip(job.status) }} {% if job.family == "research" and job.speaker_id %}speaker {{ job.speaker_id.hex[:8] }} {% elif job.pipeline_run_id %}run {{ job.pipeline_run_id.hex[:8] }} {% elif job.speaker_id %}speaker {{ job.speaker_id.hex[:8] }} {% else %}—{% endif %} {{ format_age(job.created_at, now=now) }}
{% endfor %}
{% endif %}
{% endblock %}