{% extends 'base.html' %} {% block title %}Integrity Report - {{ evidence.evidence_number }}{% endblock %} {% block content %}
Integrity Verification: {{ evidence.evidence_number }} Back
{% if report.verdict == 'Intact' %}
Chain Intact
All {{ report.total_nodes }} custody nodes verified successfully. Chain completeness: {{ report.completeness_score }}%
{% elif report.verdict == 'Partially Verified' %}
Partially Verified
{{ report.verified_nodes }} of {{ report.total_nodes }} nodes verified. Chain completeness: {{ report.completeness_score }}%. {{ report.failures|length }} failure(s) detected.
{% else %}
Chain Broken
Integrity verification failed. Chain completeness: {{ report.completeness_score }}%. Evidence has been automatically flagged.
{% endif %}
Summary
{% for label, value in [ ('Total Nodes', report.total_nodes), ('Verified Nodes', report.verified_nodes), ('Failed Nodes', report.failures|length), ('Completeness', report.completeness_score|string + '%') ] %}
{{ label }} {{ value }}
{% endfor %}
Ran At {{ report.ran_at.strftime('%d %b %Y %H:%M') if report.ran_at is not string else report.ran_at[:16] }}
Failures Detected
{% if report.failures %}
{% for failure in report.failures %} {% endfor %}
Node IDEventFailure TypeDetail
{{ failure.node_id }} {{ failure.event_type }} {% if failure.failure_type == 'hash_mismatch' %} Hash Mismatch {% elif failure.failure_type == 'invalid_signature' %} Invalid Signature {% elif failure.failure_type == 'timestamp_anomaly' %} Timestamp Anomaly {% else %} {{ failure.failure_type }} {% endif %} {{ failure.detail }}
{% else %}

No failures detected.

{% endif %}
Custody Node Timeline
{% for node in report.verified_timeline %} {% else %} {% endfor %}
PositionNode IDEventStatusTimestamp
{{ loop.index }} {{ node.node_id }} {{ node.event_type }} {% if node.status == 'verified' %} Verified {% else %} Failed {% endif %} {{ node.timestamp[:19] }}
No timeline data available.
{% endblock %}