feat(analytics): split dashboard metrics by domain
This commit is contained in:
@@ -8,6 +8,12 @@ class AnalyticsPointSchema(Schema):
|
||||
value: int | float
|
||||
|
||||
|
||||
class AnalyticsPointGroupSchema(Schema):
|
||||
top_items: list[AnalyticsPointSchema]
|
||||
other_count: int = 0
|
||||
total_count: int = 0
|
||||
|
||||
|
||||
class AnalyticsTrendPointSchema(Schema):
|
||||
date: str
|
||||
label: str
|
||||
@@ -39,6 +45,12 @@ class AnalyticsPostPopularitySchema(Schema):
|
||||
comments: int
|
||||
|
||||
|
||||
class AnalyticsPostPopularityGroupSchema(Schema):
|
||||
top_items: list[AnalyticsPostPopularitySchema]
|
||||
other_count: int = 0
|
||||
total_count: int = 0
|
||||
|
||||
|
||||
class AnalyticsTopPostSchema(AnalyticsPostPopularitySchema):
|
||||
score: int
|
||||
|
||||
@@ -111,3 +123,88 @@ class AdminDashboardAnalyticsSchema(Schema):
|
||||
revenue: AnalyticsRevenueSchema
|
||||
blog: AnalyticsBlogSchema
|
||||
achievements: AnalyticsAchievementsSchema
|
||||
|
||||
|
||||
class AnalyticsEventOptionSchema(Schema):
|
||||
value: str
|
||||
label: str
|
||||
description: str | None = None
|
||||
|
||||
|
||||
class AnalyticsEventOptionsSchema(Schema):
|
||||
count: int
|
||||
results: list[AnalyticsEventOptionSchema]
|
||||
|
||||
|
||||
class UserAnalyticsSummarySchema(Schema):
|
||||
total_users: int
|
||||
verified_users: int
|
||||
unverified_users: int
|
||||
profile_completion_rate: float
|
||||
|
||||
|
||||
class UserAnalyticsSchema(Schema):
|
||||
filters: AnalyticsFiltersSchema
|
||||
summary: UserAnalyticsSummarySchema
|
||||
signup_trend: list[AnalyticsTrendPointSchema]
|
||||
by_major: AnalyticsPointGroupSchema
|
||||
by_university: AnalyticsPointGroupSchema
|
||||
by_year: AnalyticsPointGroupSchema
|
||||
|
||||
|
||||
class EventAnalyticsFiltersSchema(Schema):
|
||||
date_from: str | None = None
|
||||
date_to: str | None = None
|
||||
event_id: int | None = None
|
||||
|
||||
|
||||
class EventAnalyticsSummarySchema(Schema):
|
||||
total_events: int
|
||||
total_registrations: int
|
||||
distinct_participants: int
|
||||
total_revenue: int
|
||||
total_discount: int
|
||||
total_base: int
|
||||
learning_hours: float
|
||||
|
||||
|
||||
class AnalyticsTopEventGroupSchema(Schema):
|
||||
top_items: list[AnalyticsTopEventSchema]
|
||||
other_count: int = 0
|
||||
total_count: int = 0
|
||||
|
||||
|
||||
class EventAnalyticsSchema(Schema):
|
||||
filters: EventAnalyticsFiltersSchema
|
||||
summary: EventAnalyticsSummarySchema
|
||||
registration_status: list[AnalyticsRegistrationStatusSchema]
|
||||
payment_status: list[AnalyticsRegistrationStatusSchema]
|
||||
attendee_by_major: AnalyticsPointGroupSchema
|
||||
attendee_by_university: AnalyticsPointGroupSchema
|
||||
registration_trend: list[AnalyticsTrendPointSchema]
|
||||
revenue_trend: list[AnalyticsTrendPointSchema]
|
||||
revenue_by_event: AnalyticsPointGroupSchema
|
||||
top_events: AnalyticsTopEventGroupSchema
|
||||
|
||||
|
||||
class BlogAnalyticsFiltersSchema(Schema):
|
||||
date_from: str | None = None
|
||||
date_to: str | None = None
|
||||
|
||||
|
||||
class BlogAnalyticsSummarySchema(Schema):
|
||||
published_posts: int
|
||||
total_likes: int
|
||||
total_saves: int
|
||||
total_comments: int
|
||||
community_engagement: int
|
||||
|
||||
|
||||
class BlogAnalyticsSchema(Schema):
|
||||
filters: BlogAnalyticsFiltersSchema
|
||||
summary: BlogAnalyticsSummarySchema
|
||||
activity_trend: list[dict[str, int | str]]
|
||||
post_popularity: AnalyticsPostPopularityGroupSchema
|
||||
top_posts: list[AnalyticsTopPostSchema]
|
||||
by_category: AnalyticsPointGroupSchema
|
||||
by_tag: AnalyticsPointGroupSchema
|
||||
|
||||
Reference in New Issue
Block a user