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

1from enum import Enum 

2from typing import List, Optional, Dict, Any 

3from pydantic import BaseModel, Field 

4from datetime import datetime 

5 

6class ComponentStatus(str, Enum): 

7 OK = "ok" 

8 WARNING = "warning" 

9 ERROR = "error" 

10 OFFLINE = "offline" 

11 

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] = {} 

20 

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) 

26 

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 

35 

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] = {} 

44 

45class DashboardData(BaseModel): 

46 health: SystemHealthOverview 

47 kpis: List[KPICard] 

48 events: List[ActivityEvent]