📊 Heatmap Metrics Analysis Report
Generated on {{ generated_date }}
{% if analysis.available_files and analysis.available_files|length == 1 %}
Analyzing: {{ analysis.available_files[0] }}
{% elif analysis.available_files and analysis.available_files|length > 1 %}
Analyzing {{ analysis.available_files|length }} files (combined data)
{% endif %}
{% if analysis.available_years %}
{% endif %}
Total Files
{{ analysis.summary.total_files }}
Total Records
{{ analysis.summary.total_rows | default('N/A') }}
Unique Projects
{{ analysis.summary.unique_projects | default('N/A') }}
Total Scans
{{ analysis.summary.total_scans | default('N/A') }}
Successful Scans
{{ analysis.summary.successful_scans | default('N/A') }}
Failed Scans
{{ analysis.summary.failed_scans | default('N/A') }}
Success Rate
{% if analysis.summary.total_scans and analysis.summary.total_scans > 0 %}
{{ "%.1f" | format((analysis.summary.successful_scans / analysis.summary.total_scans * 100)) }}%
{% else %}
N/A
{% endif %}
{% if analysis.aggregated %}
🎯 Black Duck Scan Overview
{% if analysis.aggregated.scan_types %}
{% set total_scans = analysis.aggregated.scan_types.values()|sum %}
🔍 Scan Types Breakdown
{% for scan_type, count in analysis.aggregated.scan_types.items() %}
{% set percentage = ((count / total_scans) * 100)|round(1) if total_scans > 0 else 0 %}
{{ scan_type }}
{{ count }} ({{ percentage }}%)
{% endfor %}
{% endif %}
Top Projects
{% endif %}
{% if chart_data %}
📈 Time Series Trends
Scan Type Evolution Over Time
{% if chart_data.trends %}
Metric Trends
{% endif %}
{% endif %}