1548406f29
Co-authored-by: lowmaster-chen <1119780489@qq.com> Co-authored-by: chenshuobo <1119780489@qq.com> Reviewed-on: #88 Co-authored-by: chenshuobo <chenshuobo@wonderable.ai> Co-committed-by: chenshuobo <chenshuobo@wonderable.ai>
116 lines
2.6 KiB
Python
116 lines
2.6 KiB
Python
"""admin 大盘 schemas(对应 stats.dashboard_overview 的嵌套结构)。"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import date
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class DashboardUsers(BaseModel):
|
|
total: int
|
|
active: int
|
|
disabled: int
|
|
deleted: int
|
|
new_today: int
|
|
dau: int
|
|
|
|
|
|
class DashboardCoins(BaseModel):
|
|
reward_video_coin_total: int = 0
|
|
reward_video_watch_count: int = 0
|
|
feed_ad_coin_total: int = 0
|
|
feed_ad_watch_count: int = 0
|
|
signin_coin_total: int = 0
|
|
signin_count: int = 0
|
|
signin_boost_coin_total: int = 0
|
|
signin_boost_watch_count: int = 0
|
|
granted_total: int
|
|
|
|
|
|
class DashboardCash(BaseModel):
|
|
withdraw_success_cents: int
|
|
withdraw_pending_count: int
|
|
withdraw_success_count: int
|
|
withdraw_failed_count: int
|
|
|
|
|
|
class DashboardComparison(BaseModel):
|
|
total: int
|
|
success: int
|
|
success_rate: float
|
|
|
|
|
|
class DashboardPeriodUsers(BaseModel):
|
|
new: int
|
|
active: int
|
|
retained_new_users: int
|
|
retention_rate: float | None = None
|
|
retention_note: str
|
|
|
|
|
|
class DashboardPeriodComparison(BaseModel):
|
|
total: int
|
|
success: int
|
|
success_rate: float
|
|
ordered: int
|
|
average_duration_ms: int | None = None
|
|
average_saved_cents: int | None = None
|
|
|
|
|
|
class DashboardPeriodCoins(BaseModel):
|
|
granted_total: int
|
|
reward_video_coin_total: int = 0
|
|
feed_ad_coin_total: int = 0
|
|
signin_coin_total: int = 0
|
|
signin_boost_coin_total: int = 0
|
|
task_coin_total: int = 0
|
|
coupon_reward_coin_total: int = 0
|
|
comparison_reward_coin_total: int = 0
|
|
regular_task_coin_total: int = 0
|
|
|
|
|
|
class DashboardPeriodCash(BaseModel):
|
|
withdraw_success_cents: int
|
|
|
|
|
|
class DashboardTrendPoint(BaseModel):
|
|
date: date
|
|
active_users: int
|
|
new_users: int
|
|
comparisons: int
|
|
|
|
|
|
class DashboardPeriod(BaseModel):
|
|
date_from: date
|
|
date_to: date
|
|
users: DashboardPeriodUsers
|
|
comparison: DashboardPeriodComparison
|
|
coins: DashboardPeriodCoins
|
|
cash: DashboardPeriodCash
|
|
trend: list[DashboardTrendPoint] = []
|
|
|
|
|
|
class DashboardFeedback(BaseModel):
|
|
new: int
|
|
|
|
|
|
class DashboardCps(BaseModel):
|
|
available: bool
|
|
note: str
|
|
meituan_order_count: int = 0
|
|
meituan_commission_cents: int = 0
|
|
meituan_hit_count: int = 0
|
|
meituan_miss_count: int = 0
|
|
meituan_unknown_rate_count: int = 0
|
|
meituan_hit_rate: float | None = None
|
|
|
|
|
|
class DashboardOverview(BaseModel):
|
|
users: DashboardUsers
|
|
coins: DashboardCoins
|
|
cash: DashboardCash
|
|
comparison: DashboardComparison
|
|
period: DashboardPeriod
|
|
feedback: DashboardFeedback
|
|
cps: DashboardCps
|