{% extends "base.html" %} {% set active = "strategos" %} {% block title %}PIR/CCIR Management — Strategos{% endblock %} {% block extra_css %} {% endblock %} {% block content %}
{% if selected_type or selected_status %}Clear{% endif %}
Requirements ({{ pirs|length }})
{% for p in pirs %} {% set gap = gaps.get(p.id, -1) %} {% else %} {% endfor %}
# Type Topic Tasked To Due By Status Gap Actions
{{ p.collection_priority }} {{ p.pir_type }}
{{ p.topic }}
{% if p.description %}
{{ p.description }}
{% endif %}
{{ p.tasked_to or '—' }} {{ (p.due_by or '')[:16] or '—' }} {{ p.status|title }} {% if gap < 0 %} {% elif gap < 6 %} {{ gap|round(1) }}h {% else %} {{ gap|round(0)|int }}h {% endif %} {% if p.status == 'active' %} {% endif %}
No PIR/CCIR requirements found. Add one.
{% if pirs %}
Coverage Gap Heatmap
{% for p in pirs %} {% set gap = gaps.get(p.id, -1) %} {% if gap < 0 %} {% set heat_bg = 'rgba(107,114,128,.12)' %} {% set heat_color = '#6b7280' %} {% set heat_label = 'No data' %} {% elif gap < 6 %} {% set heat_bg = 'rgba(16,185,129,.12)' %} {% set heat_color = '#10b981' %} {% set heat_label = gap|round(1)|string + 'h ago' %} {% elif gap < 24 %} {% set heat_bg = 'rgba(245,158,11,.12)' %} {% set heat_color = '#f59e0b' %} {% set heat_label = gap|round(0)|int|string + 'h ago' %} {% else %} {% set heat_bg = 'rgba(233,69,96,.12)' %} {% set heat_color = '#e94560' %} {% set heat_label = (gap / 24)|round(1)|string + 'd ago' %} {% endif %}
{{ p.pir_type }} {{ heat_label }}
{{ p.topic }}
P{{ p.collection_priority }} · {{ p.status|title }}
{% endfor %}
Fresh (<6h) Stale (6–24h) Overdue (>24h) No coverage
Tasking Queue — by Collection Asset
{% if tasking %}
{% for asset, asset_pirs in tasking.items() %}
{{ asset }} ({{ asset_pirs|length }} req.)
{% for p in asset_pirs %}
{{ p.collection_priority }} {{ p.pir_type }} {{ p.topic }}
{% endfor %}
{% endfor %}
{% else %}
No tasking assignments yet — set "Tasked To" on a requirement to populate this queue.
{% endif %}
{% endif %}
{% endblock %} {% block scripts %} {% endblock %}