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
« 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
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] = {}
13class AnalyticsEventCreate(AnalyticsEventBase):
14 pass
16class AnalyticsEvent(AnalyticsEventBase):
17 id: str
18 user_id: Optional[str] = None
19 created_at: datetime
21 class Config:
22 from_attributes = True
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]
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
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]
47class EventsResponse(BaseModel):
48 events: List[AnalyticsEvent]