a3a14b484a
改了什么:新增京东联盟订单查询客户端、cps_order 京东字段迁移、CPS 对账接口 platform=all/jd、数据大盘京东订单与佣金聚合。 为什么改:数据大盘需要展示京东 CPS 真实订单佣金,不再保持占位。 验证方式:python -m pytest tests\\test_admin_read.py::test_dashboard_overview tests\\test_cps_admin.py::test_jd_reconcile_updates_dashboard -q;本地真实拉取 2026-06-27 京东订单 3 行,页面显示京东有效 1 单/佣金 ¥0.13。 --------- Co-authored-by: lowmaster-chen <1119780489@qq.com> Reviewed-on: #90 Co-authored-by: chenshuobo <chenshuobo@wonderable.ai> Co-committed-by: chenshuobo <chenshuobo@wonderable.ai>
121 lines
2.7 KiB
Python
121 lines
2.7 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
|
|
jd_order_count: int = 0
|
|
jd_commission_cents: int = 0
|
|
jd_actual_commission_cents: int = 0
|
|
jd_estimated_commission_cents: int = 0
|
|
jd_invalid_count: int = 0
|
|
|
|
|
|
class DashboardOverview(BaseModel):
|
|
users: DashboardUsers
|
|
coins: DashboardCoins
|
|
cash: DashboardCash
|
|
comparison: DashboardComparison
|
|
period: DashboardPeriod
|
|
feedback: DashboardFeedback
|
|
cps: DashboardCps
|