{% extends "base.html" %} {% macro render_nested(value) %} {% if value is mapping %} {% for k, v in value.items() %}
{{ k }}: {{ render_nested(v) }}
{% endfor %} {% elif value is iterable and not value is string %} {% for item in value %}{{ render_nested(item) }}{% endfor %} {% else %} {{ value }} {% endif %} {% endmacro %} {% block content %}
DashboardResultsJob #{{ job.id }}

{{ job.name }} {{ job.status }}

As-at {{ job.as_at_date.isoformat() }} · config {{ job.recon_config_reference }} · ran by {{ job.username }}
{# ── Execution history timeline ─────────────────────── #}

Execution history

Completed Failed Running Scheduled
{% if history.entries | length == 0 %}

No executions on record.

{% else %}
{% for t in history.ticks %} {{ t.label }} {% endfor %}
{% for t in history.ticks %} {% endfor %} {% for e in history.entries %} {% endfor %}
{{ history.entries | length }} executions from {{ history.first_date.isoformat() }} to {{ history.last_date.isoformat() }} ({{ history.days }} days)
{% endif %}
{# ── Attribute / result cards ───────────────────────── #}

Identification

  • Job ID#{{ job.id }}
  • Name{{ job.name }}
  • Config ref{{ job.recon_config_reference }}
  • Username{{ job.username }}
  • As-at date{{ job.as_at_date.isoformat() }}

Schedule & Timing

  • Due{{ job.due_datetime.isoformat(timespec='minutes') if job.due_datetime else '—' }}
  • Started{{ job.start_datetime.isoformat(timespec='minutes') if job.start_datetime else '—' }}
  • Finished{{ job.finish_datetime.isoformat(timespec='minutes') if job.finish_datetime else '—' }}
  • Duration{{ duration_str or '—' }}
  • Lateness{{ lateness_str or '—' }}

Status

{{ job.status }}
{% if job.status_reason %}

Reason: {{ job.status_reason }}

{% endif %}

Config

{% if config %}
  • Name{{ config.name }}
  • Reference{{ config.reference }}
  • Status{{ config.status }}
  • Frequency{{ config.frequency }}
  • Business process{{ config.business_process }}
{% else %}

Config {{ job.recon_config_reference }} not found.

{% endif %}

History — this recon

  • Total executions{{ stats.total }}
  • Completed{{ stats.completed }}
  • Failed{{ stats.failed }}
  • Success rate {% if stats.success_rate is not none %}{{ '%.0f' % stats.success_rate }}%{% else %}—{% endif %}
  • Avg duration{{ stats.avg_duration or '—' }}
{% if job.results %}

Results

{% for k, v in job.results.items() %} {% endfor %}
{{ k }} {% if k == 'Status' %} {{ v }} {% elif k == 'Flag' %} {{ v }} {% else %} {{ render_nested(v) }} {% endif %}
{% else %}

Results

{% if job.status in ('created', 'running') %} This job has not produced results yet. {% else %} No results recorded for this run. {% endif %}

{% endif %}
{% endblock %}