diff --git a/src/lib/types.ts b/src/lib/types.ts index 2e66647..5e99d1d 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -441,6 +441,12 @@ export interface AdRevenueReport { daily: AdRevenueDaily[]; // 按日期汇总序列(全量,供按天趋势图) hourly: AdRevenueHourly[]; // 按小时汇总序列(全量,供按小时趋势图;按天查询时为空) type_stats: Record; // 按广告类型小计;前端取 draw / reward_video + // 可选:后端预聚合的「按广告类型」富小计(含发放金币明细)。当前后端未下发 → 数据大盘页 + // (dashboard adTypeSummary)用 `?.` 探测、缺失时按 items 现算兜底;后端补上即自动启用。 + by_ad_type?: Record< + string, + { ad_type: string; impressions: number; revenue_yuan: number; expected_coin: number; actual_coin: number } + >; dau: number | null; // 今日活跃(复用大盘 last_login_at);仅查询=今日时有值,否则 null total: number; // 当前筛选下的分页总条数(全量,不受分页影响) truncated: boolean; // 当前页之后是否还有更多事件(分页后前端不再据此报警) @@ -464,7 +470,17 @@ export interface DashboardOverview { new_today: number; dau: number; }; - coins: { granted_total: number }; + coins: { + reward_video_coin_total: number; + reward_video_watch_count: number; + feed_ad_coin_total: number; + feed_ad_watch_count: number; + signin_coin_total: number; + signin_count: number; + signin_boost_coin_total: number; + signin_boost_watch_count: number; + granted_total: number; + }; cash: { withdraw_success_cents: number; withdraw_pending_count: number; @@ -472,8 +488,55 @@ export interface DashboardOverview { withdraw_failed_count: number; }; comparison: { total: number; success: number; success_rate: number }; + // 时段大盘(对应后端 app/admin/schemas/dashboard.py DashboardPeriod);新版数据大盘页用 + period: { + date_from: string; + date_to: string; + users: { + new: number; + active: number; + retained_new_users: number; + retention_rate: number | null; + retention_note: string; + }; + comparison: { + total: number; + success: number; + success_rate: number; + ordered: number; + average_duration_ms: number | null; + average_saved_cents: number | null; + }; + coins: { + granted_total: number; + reward_video_coin_total: number; + feed_ad_coin_total: number; + signin_coin_total: number; + signin_boost_coin_total: number; + task_coin_total: number; + coupon_reward_coin_total: number; + comparison_reward_coin_total: number; + regular_task_coin_total: number; + }; + cash: { withdraw_success_cents: number }; + trend: { + date: string; + active_users: number; + new_users: number; + comparisons: number; + }[]; + }; feedback: { new: number }; - cps: { available: boolean; note: string }; + cps: { + available: boolean; + note: string; + meituan_order_count: number; + meituan_commission_cents: number; + meituan_hit_count: number; + meituan_miss_count: number; + meituan_unknown_rate_count: number; + meituan_hit_rate: number | null; + }; } export interface PriceReport {