e1bd0e3ef7
改了什么:新增新版大盘日期窗口聚合、广告收益拆分、比价耗时字段、美团 CPS 拉单入库与大盘展示,并同步反馈审核和邀请奖励下线口径。 验证:python -m pytest tests/test_admin_read.py tests/test_admin_write.py tests/test_compare_record.py tests/test_invite.py tests/test_feedback.py -q。
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
|