{% extends "_base.html" %} {% block title %}Daily Recap — {{ _brand_name }}{% endblock %} {% block content %} {#- cluster_count / attention_count are computed once in Go (report_service.go) and reused for both the email subject and this summary, so the two never drift. -#}
I reviewed {{ cluster_count|default(0) }} cluster{{ 's' if cluster_count|default(0) != 1 else '' }} overnight. {% if attention_count|default(0) > 0 %} {{ attention_count|default(0) }} need{{ 's' if attention_count|default(0) == 1 else '' }} your attention {% else %} Everything looks healthy {% endif %} {% if total_potential_savings|default(0) > 0 %} and there's ${{ total_potential_savings|default(0) | round(2) }}/mo in savings you haven't acted on yet{% if total_opportunity_lost and total_opportunity_lost > 0 %} (${{ total_opportunity_lost | round(2) }} lost in the last 30 days){% endif %}. {% else %}.{% endif %}
| Cluster | Events | Savings | Security | |
|---|---|---|---|---|
| {{ account.account_name }} | {{ ev_count }} | {% if cluster_savings > 0 %}${{ cluster_savings | round(2) }}{% else %}—{% endif %} | {% if sec_critical > 0 or sec_high > 0 %} {{ sec_critical }}C / {{ sec_high }}H {% else %} ✓ {% endif %} | View → |
• {% if insight.type == 'Troubleshooting' %} {{ insight.title }} detected for ({{ insight.applications | length }}) workloads {% else %} {{ insight.title }} {% endif %}
{% endfor %} {% endif %} {#- RECOMMENDED ACTIONS -#} {% if total_recommendations > 0 %}• {{ recommendation.count }} {{ rule.replace('_', ' ') }} {% if savings > 0 %} — save ${{ savings | round(2) }}/mo {% endif %} {% if 'unused' in rule or 'abandoned' in rule %}Clean up{% elif 'right' in rule or 'replica' in rule %}Apply{% else %}Review{% endif %} →
{% endfor %} {% endif %} {#- HIGHLIGHTS -#} {% if total_highlights > 0 %}• Application Errors: {{ current_app_events }} {% set diff_app_events = previous_app_events - current_app_events %} {% if previous_app_events == 0 %} (-) {% elif diff_app_events > 0 %} (▼ {{ ((diff_app_events / previous_app_events) * 100) | round(0) }}%) {% elif diff_app_events < 0 %} (▲ {{ ((-diff_app_events / previous_app_events) * 100) | round(0) }}%) {% else %} (-) {% endif %}
{% endif %} {% if current_node_events > 0 %}• Node Errors: {{ current_node_events }} {% set diff_node_events = previous_node_events - current_node_events %} {% if previous_node_events == 0 %} (-) {% elif diff_node_events > 0 %} (▼ {{ ((diff_node_events / previous_node_events) * 100) | round(0) }}%) {% elif diff_node_events < 0 %} (▲ {{ ((-diff_node_events / previous_node_events) * 100) | round(0) }}%) {% else %} (-) {% endif %}
{% endif %} {% if current_pod_events > 0 %}• Pod Errors: {{ current_pod_events }} {% set diff_pod_events = previous_pod_events - current_pod_events %} {% if previous_pod_events == 0 %} (-) {% elif diff_pod_events > 0 %} (▼ {{ ((diff_pod_events / previous_pod_events) * 100) | round(0) }}%) {% elif diff_pod_events < 0 %} (▲ {{ ((-diff_pod_events / previous_pod_events) * 100) | round(0) }}%) {% else %} (-) {% endif %}
{% endif %} {% endif %} {#- SECURITY -#} {% if total_security_events > 0 %}• {{ security_event.count_severity_critical }} Critical, {{ security_event.count_severity_high }} High, {{ security_event.count_severity_medium }} Medium, {{ security_event.count_severity_low }} Low across {{ security_event.count_image }} images Fix now →
{% endfor %} {% endif %} {% endif %} {% endfor %} {% endblock %}