848f804169
- FastAPI 后端 + Vue 3 前端 - Docker Compose 一键部署 - Casdoor OAuth 认证集成 - LogHive 集中式日志 - 设备批量 CSV 导入/导出 - WebSocket 实时状态推送 - 企业微信告警通知 - fping 高性能并发 Ping 检测 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
41 lines
874 B
Python
41 lines
874 B
Python
from datetime import datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class DeviceStatusSummary(BaseModel):
|
|
total: int
|
|
online: int
|
|
offline: int
|
|
checking: int
|
|
unknown: int
|
|
online_rate: float
|
|
|
|
|
|
class DeviceStatsItem(BaseModel):
|
|
device_id: int
|
|
device_name: str
|
|
device_ip: str
|
|
device_type: str
|
|
location: str
|
|
project_name: str
|
|
total_pings: int
|
|
alive_pings: int
|
|
packet_loss_rate: float
|
|
avg_response_time: Optional[float] = None
|
|
offline_count: int
|
|
total_offline_duration: int # 分钟
|
|
max_offline_duration: int
|
|
|
|
|
|
class TimeSeriesPoint(BaseModel):
|
|
time: datetime
|
|
value: float
|
|
|
|
|
|
class DashboardStats(BaseModel):
|
|
summary: DeviceStatusSummary
|
|
recent_offline: list # list[AlertEventOut]
|
|
offline_trend: list[TimeSeriesPoint]
|
|
packet_loss_top: list[DeviceStatsItem]
|