from sqlalchemy import Column, Integer, String, Float, DateTime, Boolean
from sqlalchemy.sql import func
from ..database import Base


class SystemSettings(Base):
    """시스템 설정"""
    __tablename__ = "system_settings"

    id = Column(Integer, primary_key=True, index=True)

    # 검색 결과 페이지 크기
    search_page_size = Column(Integer, default=20)

    # 마진 설정 (%)
    korea_margin_percent = Column(Float, default=5.0)
    mongolia_margin_percent = Column(Float, default=5.0)

    # CC 코인 설정
    cc_per_usdc = Column(Integer, default=10)  # 1 USDC = 10 CC
    cc_per_view = Column(Integer, default=1)   # 차량 상세 조회 시 1 CC
    cc_signup_bonus = Column(Integer, default=3)  # 신규 가입 시 3 CC
    cars_per_cc = Column(Integer, default=3)  # 1 CC당 추천 차량 수 (기본 3대)

    # 캐시 TTL (시간)
    cache_ttl_hours = Column(Integer, default=2)

    # 컨테이너 물류비 설정 (USD)
    container_logistics_usd = Column(Integer, default=3600)  # 컨테이너 물류비 $3,600
    shoring_cost_usd = Column(Integer, default=300)  # 쇼링비 (컨테이너 고정) $300

    # 레퍼럴 보상 설정
    referral_reward_enabled = Column(Boolean, default=True)  # 레퍼럴 보상 활성화
    referral_reward_percent = Column(Float, default=10.0)  # 보상 비율 (기본 10%)
    referral_reward_type = Column(String(20), default="one_time")  # one_time / recurring

    # 환율 가중치 설정 (%)
    exchange_rate_weight_usd = Column(Float, default=0.0)  # USD 가중치
    exchange_rate_weight_mnt = Column(Float, default=0.0)  # MNT (몽골 투그릭) 가중치
    exchange_rate_weight_rub = Column(Float, default=0.0)  # RUB (러시아 루블) 가중치
    exchange_rate_weight_cny = Column(Float, default=0.0)  # CNY (중국 위안) 가중치

    # 타임스탬프
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
