Coverage for app\schemas\system.py: 100%
42 statements
« prev ^ index » next coverage.py v7.3.2, created at 2026-01-15 13:39 +0300
« prev ^ index » next coverage.py v7.3.2, created at 2026-01-15 13:39 +0300
1from enum import Enum
2from typing import List, Optional, Dict, Any
3from pydantic import BaseModel, Field
4from datetime import datetime
6class ComponentStatus(str, Enum):
7 OK = "ok"
8 WARNING = "warning"
9 ERROR = "error"
10 OFFLINE = "offline"
12class SystemComponentStatus(BaseModel):
13 id: str
14 name: str
15 type: str # service, camera, database, node
16 status: ComponentStatus
17 message: Optional[str] = None
18 last_updated: datetime = Field(default_factory=datetime.utcnow)
19 metadata: Dict[str, Any] = {}
21class SystemHealthOverview(BaseModel):
22 overall_status: ComponentStatus
23 components: List[SystemComponentStatus]
24 summary: Dict[str, int] # {"ok": 5, "error": 1}
25 last_updated: datetime = Field(default_factory=datetime.utcnow)
27class KPICard(BaseModel):
28 id: str
29 title: str
30 value: str | int | float
31 unit: Optional[str] = None
32 trend: Optional[float] = None # percentage change
33 trend_direction: Optional[str] = None # up, down, neutral
34 status: ComponentStatus = ComponentStatus.OK
36class ActivityEvent(BaseModel):
37 id: str
38 timestamp: datetime
39 type: str
40 message: str
41 source: str
42 severity: str = "info"
43 metadata: Dict[str, Any] = {}
45class DashboardData(BaseModel):
46 health: SystemHealthOverview
47 kpis: List[KPICard]
48 events: List[ActivityEvent]