@@ -171,6 +171,33 @@ const DeviceStatusPanel = ({ isInferenceRunning, setNotifications }: DeviceStatu
171
171
[ checkStatus , updatesSinceInferenceStarted ]
172
172
) ;
173
173
174
+ const statusMinMax = (
175
+ status1 : "info" | "success" | "warning" | "error" | "stopped" | "pending" ,
176
+ status2 : "info" | "success" | "warning" | "error" | "stopped" | "pending" ,
177
+ operator : "min" | "max"
178
+ ) : "info" | "success" | "warning" | "error" | "stopped" | "pending" => {
179
+ const statusPriority = {
180
+ error : 4 ,
181
+ warning : 3 ,
182
+ success : 2 ,
183
+ info : 1 ,
184
+ stopped : 0 ,
185
+ pending : - 1 ,
186
+ } ;
187
+
188
+ if ( operator === "min" ) {
189
+ return statusPriority [ status1 as keyof typeof statusPriority ] <
190
+ statusPriority [ status2 as keyof typeof statusPriority ]
191
+ ? status1
192
+ : status2 ;
193
+ } else {
194
+ return statusPriority [ status1 as keyof typeof statusPriority ] >
195
+ statusPriority [ status2 as keyof typeof statusPriority ]
196
+ ? status1
197
+ : status2 ;
198
+ }
199
+ } ;
200
+
174
201
const allAlerts = useMemo (
175
202
( ) => ( {
176
203
system : {
@@ -192,7 +219,7 @@ const DeviceStatusPanel = ({ isInferenceRunning, setNotifications }: DeviceStatu
192
219
( metrics . cpuFreq / metrics . cpuFreqMax ) * 100.0 ,
193
220
thresholds . cpu . frequency ,
194
221
isInferenceRunning ,
195
- 2 ,
222
+ 3 ,
196
223
"info"
197
224
) ,
198
225
warningMessage : "CPU Frequency is low" ,
@@ -213,7 +240,7 @@ const DeviceStatusPanel = ({ isInferenceRunning, setNotifications }: DeviceStatu
213
240
metrics . cpuUsage ,
214
241
thresholds . cpu . usage ,
215
242
isInferenceRunning ,
216
- 2 ,
243
+ 3 ,
217
244
"info"
218
245
) ,
219
246
warningMessage : "CPU Usage is high" ,
@@ -225,7 +252,7 @@ const DeviceStatusPanel = ({ isInferenceRunning, setNotifications }: DeviceStatu
225
252
metrics . latencyMean ,
226
253
thresholds . performance . latency_mean ,
227
254
isInferenceRunning ,
228
- 2 ,
255
+ 3 ,
229
256
"stopped"
230
257
) ,
231
258
warningMessage : "Latency is high" ,
@@ -234,12 +261,22 @@ const DeviceStatusPanel = ({ isInferenceRunning, setNotifications }: DeviceStatu
234
261
} ,
235
262
"device-status-latency-p95" : {
236
263
metricValue : metrics . latencyP95 / metrics . latencyMean ,
237
- status : checkStatusWithInference (
238
- metrics . latencyP95 / metrics . latencyMean ,
239
- thresholds . performance . latency_p95 ,
240
- isInferenceRunning ,
241
- 2 ,
242
- "stopped"
264
+ status : statusMinMax (
265
+ checkStatusWithInference (
266
+ metrics . latencyP95 / metrics . latencyMean ,
267
+ thresholds . performance . latency_p95 ,
268
+ isInferenceRunning ,
269
+ 3 ,
270
+ "stopped"
271
+ ) ,
272
+ checkStatusWithInference (
273
+ metrics . latencyP95 ,
274
+ thresholds . performance . latency_mean ,
275
+ isInferenceRunning ,
276
+ 3 ,
277
+ "stopped"
278
+ ) ,
279
+ "min"
243
280
) ,
244
281
warningMessage : "95% Latency is high" ,
245
282
errorMessage : "95% Latency is critically high" ,
@@ -251,7 +288,7 @@ const DeviceStatusPanel = ({ isInferenceRunning, setNotifications }: DeviceStatu
251
288
30.0 / metrics . fpsMean ,
252
289
thresholds . performance . fps_mean ,
253
290
isInferenceRunning ,
254
- 2 ,
291
+ 3 ,
255
292
"stopped"
256
293
) ,
257
294
warningMessage : "Frame Rate is low" ,
@@ -317,7 +354,7 @@ const DeviceStatusPanel = ({ isInferenceRunning, setNotifications }: DeviceStatu
317
354
}
318
355
} ) ;
319
356
} , [ addFlashMessage , removeFlashMessage , allAlerts . system ] ) ;
320
-
357
+
321
358
useEffect ( ( ) => {
322
359
// Handle combined performance metrics alert
323
360
const performanceAlertId = "device-status-performance" ;
0 commit comments