{% extends 'base.html' %} {% block title %}Chain Reconstruction - {{ evidence.evidence_number }}{% endblock %} {% block content %}
Chain Reconstruction: {{ evidence.evidence_number }} Back
{% set score = report.chain_confidence_score %} {% if score == 100 %}
Chain fully confirmed. All {{ report.total_expected_links }} links are verified with no gaps.
{% elif score >= 70 %}
Chain partially reconstructed. Confidence: {{ score }}%. {{ report.inferred_links }} link(s) inferred, {{ report.unresolved_gaps }} unresolved.
{% else %}
Low confidence reconstruction. Confidence: {{ score }}%. {{ report.unresolved_gaps }} gap(s) could not be resolved.
{% endif %}
{% for label, value, bg_colour, border_colour, text_colour, label_colour in [ ('Total Links', report.total_expected_links, 'EBF2F2', 'B8CBC9', '2D3B3A', '5A6E6C'), ('Confirmed', report.confirmed_links, 'E1FAF4', 'B2EBE0', '1E6B58', '2D7A66'), ('Inferred', report.inferred_links, 'FFF6E9', 'F3DFBF', '96691E', '855E1C'), ('Unresolved', report.unresolved_gaps, 'FFF0F0', 'FCD4D4', 'B23E3E', 'A03737') ] %}
{{ value }}
{{ label }}
{% endfor %}
Reconstructed Custody Chain
{% for link in report.reconstructed_chain %} {% else %} {% endfor %}
#EventInvestigator LabelConfidenceTimestampNotes
{{ link.position + 1 }} {{ link.event_type }} {{ link.investigator_name }} {% if link.label == 'Confirmed' %} Confirmed {% elif link.label == 'Inferred' %} Inferred {% else %} Unresolved {% endif %}
{{ (link.confidence * 100)|int }}%
{{ link.timestamp[:16] if link.timestamp is string else link.timestamp.strftime('%d %b %Y %H:%M') }} {{ link.inferred_reason[:80] if link.inferred_reason else '' }} {% if link.inferred_reason and link.inferred_reason|length > 80 %}...{% endif %}
No chain data available.
{% endblock %}