nexus/dashboard/types.rs
1//! Type definitions for dashboard data structures
2
3use serde::{Deserialize, Serialize};
4
5/// Entry in the request history ring buffer
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct HistoryEntry {
8 /// Unix timestamp in seconds
9 pub timestamp: u64,
10 /// Model name requested
11 pub model: String,
12 /// Backend ID that handled the request
13 pub backend_id: String,
14 /// Request duration in milliseconds
15 pub duration_ms: u64,
16 /// Request outcome
17 pub status: RequestStatus,
18 /// Error message if status is Error
19 pub error_message: Option<String>,
20}
21
22/// Status of a completed request
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
24pub enum RequestStatus {
25 Success,
26 Error,
27}
28
29/// WebSocket update message sent to dashboard clients
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct WebSocketUpdate {
32 /// Type of update
33 pub update_type: UpdateType,
34 /// JSON payload for the update
35 pub data: serde_json::Value,
36}
37
38/// Type of WebSocket update
39#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
40pub enum UpdateType {
41 /// Backend health status changed
42 BackendStatus,
43 /// Request completed
44 RequestComplete,
45 /// Model availability changed
46 ModelChange,
47}