From 50e45e2ea72b9bb34f847fa29830d2cbfbcbf7fa Mon Sep 17 00:00:00 2001 From: ByteBaker <42913098+ByteBaker@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:59:04 +0530 Subject: [PATCH] fix: use triggers.length for incident alert count and sort Related Alerts - Replace alert_count with triggers.length for accurate count display - Rename 'Total Triggers' to 'Total Alerts' for consistency - Show all unique alerts in Related Alerts (was showing only 2 from topology_context.nodes) - Sort Related Alerts by trigger count (descending order) --- .../alerts/IncidentDetailDrawer.vue | 35 ++++++++++++------- web/src/utils/traces/convertTraceData.ts | 3 +- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/web/src/components/alerts/IncidentDetailDrawer.vue b/web/src/components/alerts/IncidentDetailDrawer.vue index 6a5aaeaf3b..6b1c5767ae 100644 --- a/web/src/components/alerts/IncidentDetailDrawer.vue +++ b/web/src/components/alerts/IncidentDetailDrawer.vue @@ -109,10 +109,10 @@ along with this program. If not, see . >
- {{ incidentDetails.alert_count }} Alerts + {{ triggers.length }} Alerts
- {{ t("alerts.incidents.alertCount") }}: {{ incidentDetails.alert_count }} correlated alerts + {{ t("alerts.incidents.alertCount") }}: {{ triggers.length }} correlated alerts @@ -272,14 +272,14 @@ along with this program. If not, see .
- +
- Total Triggers + Total Alerts
@@ -767,7 +767,7 @@ along with this program. If not, see .
. {{ index + 1 }}.
- - {{ node.alert_name }} + + {{ alert.name }} - {{ node.alert_name.length > 30 ? node.alert_name.substring(0, 30) + '...' : node.alert_name }} + {{ alert.name.length > 30 ? alert.name.substring(0, 30) + '...' : alert.name }}
- Fired {{ getTriggerCountForAlert(node.alert_id) }} time(s) + Fired {{ getTriggerCountForAlert(alert.id) }} time(s)
@@ -1402,6 +1402,16 @@ export default defineComponent({ return triggers.value.filter(t => t.alert_id === alertId).length; }; + // Computed: Alerts sorted by trigger count (descending) + const sortedAlertsByTriggerCount = computed(() => { + if (!alerts.value || alerts.value.length === 0) return []; + return [...alerts.value].sort((a, b) => { + const countA = getTriggerCountForAlert(a.id); + const countB = getTriggerCountForAlert(b.id); + return countB - countA; // Descending order + }); + }); + // Peak Alert Rate - find the highest concentration of alerts const peakAlertRate = computed(() => { if (!incidentDetails.value || triggers.value.length === 0) return "N/A"; @@ -2539,6 +2549,7 @@ export default defineComponent({ affectedServicesCount, alertFrequency, getTriggerCountForAlert, + sortedAlertsByTriggerCount, peakAlertRate, peakActivity, correlationType, diff --git a/web/src/utils/traces/convertTraceData.ts b/web/src/utils/traces/convertTraceData.ts index b0c3ebe710..a554ab1dbe 100644 --- a/web/src/utils/traces/convertTraceData.ts +++ b/web/src/utils/traces/convertTraceData.ts @@ -260,7 +260,8 @@ export const convertServiceGraphToTree = ( // Root node: sum of all outgoing edges (traffic flowing from this node) totalRequests = outgoingEdges.reduce((sum: number, edge: any) => sum + (edge.total_requests ?? 0), 0); failedRequests = outgoingEdges.reduce((sum: number, edge: any) => sum + (edge.failed_requests ?? 0), 0); - errorRate = totalRequests > 0 ? (failedRequests / totalRequests) * 100 : 0; + // If no outgoing edges, fall back to node's own error_rate + errorRate = totalRequests > 0 ? (failedRequests / totalRequests) * 100 : (node.error_rate ?? 0); } // Calculate connections count (incoming + outgoing edges)