{% extends 'generic/object.html' %} {% load helpers %} {% load i18n %} {% block title %}{{ object }} - {% trans "Scope Reconciliation" %}{% endblock %} {% block extra_controls %}  {% trans "Sync" %} {% endblock extra_controls %} {% block content %}
{% trans "Device Scope Reconciliation" %}
{% trans "Include tags" %} {{ payload.include_tags|join:", "|placeholder }}
{% trans "NetBox devices" %} {{ payload.netbox_device_count }}
{% trans "In scope (collected)" %} {{ payload.forward_in_scope_completed }}
{% trans "Tagged but backfilled" %} {{ payload.forward_tagged_backfilled }} {% if payload.netbox_present_backfilled %}  {% blocktrans with count=payload.netbox_present_backfilled %}view {{ count }} tagged{% endblocktrans %} {% endif %}
{% trans "Out of scope (orphans)" %} {% if payload.netbox_out_of_scope %} {{ payload.netbox_out_of_scope }} {% else %} 0 {% endif %}
{% trans "In scope, missing from NetBox" %} {{ payload.forward_missing_in_netbox }}
{% trans "Out-of-Scope Sample" %}
{% if payload.out_of_scope_sample %}
    {% for name in payload.out_of_scope_sample %}
  • {{ name }}
  • {% endfor %}
{% if payload.netbox_out_of_scope > payload.out_of_scope_sample|length %}

{% blocktrans with shown=payload.out_of_scope_sample|length total=payload.netbox_out_of_scope %}Showing {{ shown }} of {{ total }}.{% endblocktrans %}

{% endif %} {% else %}

{% trans "No out-of-scope devices." %}

{% endif %}
{% trans "Backfill Reason Breakdown" %}
{% if payload.backfilled_reason_breakdown %}

{% trans "Why these in-scope devices were not freshly collected by Forward. This is a Forward collection-health signal, not a sync error — fix collection in Forward (rotate credentials for AUTHENTICATION_FAILED, check reachability for CONNECTION_TIMEOUT, finish onboarding for INCOMPLETE_SETUP)." %}

{% for reason, count in payload.backfilled_reason_breakdown.items %} {% endfor %}
{{ reason }} {{ count }}
{% else %}

{% trans "No backfilled devices in the latest snapshot." %}

{% endif %}
{% trans "Tagged-but-Backfilled Sample" %}
{% if payload.present_backfilled_detail_sample %}

{% trans "In NetBox but not freshly collected in the latest snapshot (serving last-known-good data). Days = how stale the served data is." %}

{% for item in payload.present_backfilled_detail_sample %} {% endfor %}
{% trans "Device" %}{% trans "Reason" %}{% trans "Stale" %}
{{ item.name }} {{ item.reason }} {% if item.stale_days is not None %}{% blocktrans count days=item.stale_days %}{{ days }} day{% plural %}{{ days }} days{% endblocktrans %}{% else %}{% endif %}
{% if payload.netbox_present_backfilled > payload.present_backfilled_detail_sample|length %}

{% blocktrans with shown=payload.present_backfilled_detail_sample|length total=payload.netbox_present_backfilled %}Showing {{ shown }} of {{ total }}.{% endblocktrans %}

{% endif %} {% else %}

{% trans "No backfilled devices in NetBox." %}

{% endif %}
{% endblock content %}