import { Check, ChevronRight } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Label } from '@/components/ui/label'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from '@/components/ui/dialog'; import { type Alert, getSeverityBadge } from './alert-center-helpers'; // Logan.Li — 统一从 helpers 导入 export function AlertDetailDialog({ alert, open, onOpenChange, onAcknowledge, }: { alert: Alert | null; open: boolean; onOpenChange: (open: boolean) => void; onAcknowledge: (id: string) => void; }) { return ( {alert?.title} {alert && getSeverityBadge(alert.severity)} {alert && ( 描述 {alert.description} 来源 {alert.source} 服务 {alert.service} 指标 {alert.metric} 当前值 / 阈值 {alert.value} / {alert.threshold} 开始时间 {alert.startedAt} {alert.resolvedAt && ( 解决时间 {alert.resolvedAt} )} 标签 {Object.entries(alert.labels).map(([k, v]) => ( {k}={v} ))} {alert.runbookUrl && ( 处理手册 查看处理手册 → )} )} onOpenChange(false)}>关闭 {alert?.status === 'firing' && ( { onAcknowledge(alert.id); onOpenChange(false); }}> 确认告警 )} ); } export function AlertSilenceDialog({ alert, open, onOpenChange, onSilence, }: { alert: Alert | null; open: boolean; onOpenChange: (open: boolean) => void; onSilence: (id: string, duration: string) => void; }) { return ( 静默告警 选择静默持续时间 {['1h', '4h', '8h', '24h', '7d'].map((duration) => ( alert && onSilence(alert.id, duration)} > 静默 {duration} ))} ); }
{alert.description}
{alert.source}
{alert.service}
{alert.metric}
{alert.value} / {alert.threshold}
{alert.startedAt}
{alert.resolvedAt}