{% from "partials/_macros.html" import verdict_pill %} {# ----- shared HTMX attrs for any interaction targeting #findings ----- #} {% set hx_common = 'hx-get="/fragments/findings" hx-target="#findings" hx-swap="innerHTML" hx-include="#findings-filters"' %} {# Confidence bar color tracks the verdict so the bar reinforces severity at a glance (red for malicious, amber for suspicious, etc.). #} {% set conf_color = { 'malicious': 'bg-red-500', 'suspicious': 'bg-amber-500', 'unknown': 'bg-slate-500', 'benign': 'bg-emerald-500', } %} {# Sort-header macro: clicking toggles asc/desc on the same column, always resets to page 1. Active column shows a small arrow. #} {% macro sort_th(col, label, extra='') %} {% set next_order = 'desc' if (sort == col and order == 'asc') else ('asc' if sort == col else 'desc') %}
| status | {{ sort_th('collector', 'collector') }} {{ sort_th('category', 'category') }} {{ sort_th('confidence', 'conf', 'w-40') }}artifact | {{ sort_th('judged', 'judged', 'text-right w-24') }}||||||
|---|---|---|---|---|---|---|---|
| {{ verdict_pill(f.verdict) }} | {% if resolved %} ✓ resolved {% else %} active {% endif %} | {{ f.collector }} | {{ f.category }} |
|
{{ f.artifact or '—' }} | {{ f.created_at | relative_time }} | ▸ |
|
{# ----- LLM reasoning ----- #}
reasoning
{{ f.reasoning or '—' }}
remediation{% if resolved %} (already addressed){% endif %}
{{ f.remediation }}
collected data ({{ f.collector }})
content_hash: {{ f.content_hash[:16] }}…
judged: {{ f.created_at }} ({{ f.created_at | relative_time }}) {% if f.last_seen_at %} last seen: {{ f.last_seen_at }} ({{ f.last_seen_at | relative_time }}) {% else %} last seen: never observed since judgement was first recorded {% endif %} |
|||||||