{% extends "base.html" %} {% block title %}{{ t('title_scan_detail', request.state.lang, scan.id) }}{% endblock %} {% block breadcrumbs %} {% endblock %} {% block content %}

{{ t('scan_detail_title', request.state.lang, scan.id) }}

{{ t('scan_info_package', request.state.lang) }}
{{ scan.package_name }}
{{ t('scan_info_version', request.state.lang) }}
{{ scan.package_version }}
{{ t('scan_info_ecosystem', request.state.lang) }}
{{ scan.ecosystem }}
{{ t('scan_info_repository', request.state.lang) }}
{{ scan.repository }}
{{ t('scan_info_status', request.state.lang) }}
{% with status=scan.status %}{% include "_status_badge.html" %}{% endwith %}
{{ t('scan_info_sha256', request.state.lang) }}
{{ scan.sha256 or '-' }}
{{ t('scan_info_started', request.state.lang) }}
{{ scan.started_at.strftime('%Y-%m-%d %H:%M') if scan.started_at }}
{{ t('scan_info_finished', request.state.lang) }}
{{ scan.finished_at.strftime('%Y-%m-%d %H:%M') if scan.finished_at }}
{% if scan.initiator %}
{{ t('scan_info_initiated', request.state.lang) }}
{{ scan.initiator }}
{% endif %} {% if scan.source_ip %}
{{ t('scan_info_source_ip', request.state.lang) }}
{{ scan.source_ip }}
{% endif %}
{% if scan.error_message %}
{{ t('scan_info_error', request.state.lang) }}: {{ scan.error_message }}
{% endif %}

{{ t('heading_findings_count', request.state.lang, scan.findings|length) }}

{% if scan.findings %}
{% for f in scan.findings %}
[{{ f.data.severity }}] {{ f.data.rule }} {% if f.data.location %} @ {{ f.data.location }}{% endif %}

{{ f.data.message }}

{% if f.data.code %}
{{ f.data.code }}
{% endif %} {% if f.report and f.report.status == "analyzing" %} {% include "_llm_spinner.html" %} {% elif f.report and f.report.verdict %}
{{ f.report.verdict }} {% if f.report.severity_rating %} {{ f.report.severity_rating }} {% endif %} {% if config.llm_enabled and not config.llm_auto_analyze %} {% endif %}

{{ f.report.summary }}

{{ f.report.analysis }}

{{ t('llm_disclaimer', request.state.lang) }}

{% elif config.llm_enabled and not config.llm_auto_analyze %}
{% endif %}
{% endfor %}
{% else %}

{{ t('empty_no_findings', request.state.lang) }}

{% endif %} {% endblock %}