{% extends "base.html" %} {% block content %}
{# ── Filter toolbar (sticky) ── #} {% include "partials/metrics/_filter_toolbar.html" %} {# ── KPI band (Task F2) ── #} {% include "partials/metrics/_kpi_band.html" %} {# ── Row 1: Throughput overlay + Cycle Histogram ── #}
{% include "partials/metrics/_throughput_overlay.html" %} {% include "partials/metrics/_cycle_dist.html" %}
{# ── Row 2: WIP aging + Stalled tickets ── #}
{% include "partials/metrics/_wip.html" %} {% include "partials/metrics/_stalled.html" %}
{# ── Row 3: By-agent + By-project (ticket `projects` field) ── #}
{% with group_id="by-agent", group_label="By Agent", group_key_label="Agent", group_rows=by_agent, group_max=agent_max %} {% include "partials/metrics/_by_group.html" %} {% endwith %} {% if by_project %} {% with group_id="by-project", group_label="By Repo / Project", group_key_label="Repo", group_rows=by_project, group_max=project_max %} {% include "partials/metrics/_by_group.html" %} {% endwith %} {% endif %}
{# ── Row 4: Time-in-status (Task F2) ── #} {% include "partials/metrics/_time_in_status.html" %} {# ── Row 5: Cross-project comparison ── #} {% if by_ws_project %}
By Workspace Project
{% set row_max = ws_project_max if ws_project_max > 0 else 1 %}
{% for row in by_ws_project %} {% set bar_pct = (row.completed / row_max * 100) | round(1) %} {% endfor %}
Project Done Avg cycle WIP
{{ row.alias }}
{{ row.completed }} {% if row.avg_cycle_days is not none %} {{ row.avg_cycle_days }}d {% else %} {% endif %} {% if row.wip > 0 %} {{ row.wip }} {% else %} {% endif %}
{% else %}
By Workspace Project
No projects found in this workspace.
{% endif %}
{% endblock %}