from pydantic import BaseModel from typing import Optional from datetime import datetime class SystemSettingsUpdate(BaseModel): """시스템 설정 수정용 스키마""" search_page_size: Optional[int] = None korea_margin_percent: Optional[float] = None mongolia_margin_percent: Optional[float] = None cc_per_usdc: Optional[int] = None cc_per_view: Optional[int] = None cc_signup_bonus: Optional[int] = None cars_per_cc: Optional[int] = None cc_per_banner_view: Optional[float] = None cache_ttl_hours: Optional[int] = None container_logistics_usd: Optional[int] = None shoring_cost_usd: Optional[int] = None domestic_export_customs_krw: Optional[int] = None show_dealer_comment: Optional[bool] = None referral_reward_enabled: Optional[bool] = None referral_reward_percent: Optional[float] = None referral_reward_type: Optional[str] = None # 마케팅 캠페인 설정 marketing_enabled: Optional[bool] = None marketing_start_date: Optional[datetime] = None marketing_end_date: Optional[datetime] = None sns_share_reward_cc: Optional[float] = None referral_signup_reward_cc: Optional[float] = None event_cc_validity_months: Optional[int] = None withdrawal_enabled: Optional[bool] = None min_withdrawal_usd: Optional[float] = None # 차량 판매상태 검증 설정 car_availability_check_enabled: Optional[bool] = None car_availability_check_hour: Optional[int] = None class SystemSettingsResponse(BaseModel): """시스템 설정 응답 스키마""" id: int search_page_size: int korea_margin_percent: float mongolia_margin_percent: float cc_per_usdc: int cc_per_view: int cc_signup_bonus: int cars_per_cc: int cc_per_banner_view: float = 0.1 cache_ttl_hours: int container_logistics_usd: int shoring_cost_usd: int domestic_export_customs_krw: int = 1150000 show_dealer_comment: bool = True referral_reward_enabled: bool = True referral_reward_percent: float = 10.0 referral_reward_type: str = "one_time" # 마케팅 캠페인 설정 marketing_enabled: bool = False marketing_start_date: Optional[datetime] = None marketing_end_date: Optional[datetime] = None sns_share_reward_cc: float = 3.0 referral_signup_reward_cc: float = 10.0 event_cc_validity_months: int = 6 withdrawal_enabled: bool = True min_withdrawal_usd: float = 10.0 # 차량 판매상태 검증 설정 car_availability_check_enabled: bool = True car_availability_check_hour: int = 6 car_availability_last_check: Optional[datetime] = None car_availability_last_result: Optional[str] = None created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class Config: from_attributes = True