Coverage for app\schemas\analytics.py: 100%

40 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2026-01-15 13:39 +0300

1from typing import List, Dict, Any, Optional 

2from datetime import datetime 

3from pydantic import BaseModel, Field 

4 

5class AnalyticsEventBase(BaseModel): 

6 event_type: str 

7 event_category: str 

8 action: str 

9 status: str 

10 duration: int = 0 

11 properties: Dict[str, Any] = {} 

12 

13class AnalyticsEventCreate(AnalyticsEventBase): 

14 pass 

15 

16class AnalyticsEvent(AnalyticsEventBase): 

17 id: str 

18 user_id: Optional[str] = None 

19 created_at: datetime 

20 

21 class Config: 

22 from_attributes = True 

23 

24class AnalyticsSummary(BaseModel): 

25 time_range: str 

26 total_events: int 

27 active_users: int 

28 error_rate: float 

29 avg_response_time: float 

30 top_actions: List[Dict[str, Any]] 

31 event_categories: Dict[str, int] 

32 

33class UserAnalytics(BaseModel): 

34 user_registrations: List[Dict[str, Any]] 

35 users_by_role: List[Dict[str, Any]] 

36 login_activity: Dict[str, int] 

37 total_active_users: int 

38 total_inactive_users: int 

39 total_suspended_users: int 

40 

41class SystemAnalytics(BaseModel): 

42 system_metrics: List[Dict[str, Any]] 

43 api_statistics: Dict[str, Any] 

44 system_health: Dict[str, Any] 

45 performance_metrics: Dict[str, Any] 

46 

47class EventsResponse(BaseModel): 

48 events: List[AnalyticsEvent]