Files
shaguabijia-app-server/app/admin/schemas/ad_revenue.py
T
lowmaster-chen e1bd0e3ef7 feat: 接入数据大盘聚合与美团 CPS 对账
改了什么:新增新版大盘日期窗口聚合、广告收益拆分、比价耗时字段、美团 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。
2026-06-28 09:56:13 +08:00

81 lines
2.0 KiB
Python

"""广告收益报表 schemas。"""
from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, Field
class AdRevenueImpression(BaseModel):
id: int = Field(..., description="ad_ecpm_record 主键")
created_at: datetime
ecpm: str
revenue_yuan: float
adn: str | None = None
slot_id: str | None = None
class AdRevenueRecord(BaseModel):
record_id: int
created_at: datetime
status: str
ecpm: str | None = None
ecpm_factor: float | None = None
units: int
lt_index_start: int | None = None
lt_index_end: int | None = None
lt_factor_start: float | None = None
lt_factor_end: float | None = None
expected_coin: int
actual_coin: int
matched: bool
class AdRevenueDaily(BaseModel):
date: str = Field(..., description="北京时间 YYYY-MM-DD")
impressions: int
revenue_yuan: float
expected_coin: int
actual_coin: int
class AdRevenueTypeSummary(BaseModel):
ad_type: str
impressions: int
revenue_yuan: float
expected_coin: int
actual_coin: int
class AdRevenueRow(BaseModel):
report_date: str
user_id: int
ad_type: str
feed_scene: str | None = None
app_env: str | None = None
our_code_id: str | None = None
hour: int | None = None
impressions: int
revenue_yuan: float
expected_coin: int
actual_coin: int
matched: bool
adns: list[str] = Field(default_factory=list)
impression_records: list[AdRevenueImpression] = Field(default_factory=list)
records: list[AdRevenueRecord] = Field(default_factory=list)
class AdRevenueReportOut(BaseModel):
date_from: str
date_to: str
daily: list[AdRevenueDaily]
total: int
truncated: bool
total_impressions: int
total_revenue_yuan: float
total_expected_coin: int
total_actual_coin: int
mismatch_count: int
by_ad_type: dict[str, AdRevenueTypeSummary] = Field(default_factory=dict)
items: list[AdRevenueRow]