use crate::metrics::NodeMetrics; use crate::alerts::{Alert, AlertLevel}; pub struct Dashboard; impl Dashboard { pub fn display(metrics: &NodeMetrics, alerts: &[Alert]) { println!("\n╔════════════════════════════════════════╗"); println!("║ NAC节点监控仪表板 ║"); println!("╚════════════════════════════════════════╝\n"); metrics.display(); if !alerts.is_empty() { println!("\n⚠️ 告警信息:"); for alert in alerts { let level_str = match alert.level { AlertLevel::Info => "ℹ️ INFO", AlertLevel::Warning => "⚠️ WARN", AlertLevel::Critical => "🚨 CRIT", }; println!(" {} {}", level_str, alert.message); } } else { println!("\n✅ 无告警"); } println!(); } }