""" 主播相关Schema """ from pydantic import BaseModel, Field from typing import Optional from datetime import datetime from decimal import Decimal class StreamerProfileBase(BaseModel): display_name: Optional[str] = None bio: Optional[str] = None commission_rate: Optional[Decimal] = Field(default=5.00, ge=0, le=100, description="主播抽成比例(%)") max_active_chests: Optional[int] = Field(default=10, ge=1, le=100, description="最大活跃宝箱数") class StreamerProfileCreate(StreamerProfileBase): user_id: int class StreamerProfileUpdate(StreamerProfileBase): status: Optional[str] = None class StreamerProfileResponse(StreamerProfileBase): id: int user_id: int avatar_url: Optional[str] = None total_chests: int total_winnings: Decimal status: str created_at: datetime class Config: from_attributes = True class StreamerStatistics(BaseModel): total_chests: int active_chests: int total_winnings: int total_commission: int average_chest_value: int success_rate: float class StreamerChestList(BaseModel): """主播宝箱列表项""" id: int title: str status: str pool_a: int pool_b: int total_bets: int created_at: datetime class Config: from_attributes = True class StreamerBetRecord(BaseModel): """主播下注记录""" id: int user_id: int chest_id: int option: str amount: int payout: int status: str created_at: datetime class Config: from_attributes = True