Files
AutonetSellCar/backend/app/models/settings.py
AutonetSellCar Deploy e0c1f4540b feat: Add bulletin board system
- Add BoardCategory and BoardPost models with multi-language support
- Add bulletin API endpoints (CRUD, notice toggle, pin toggle)
- Add board_enabled setting to control menu visibility
- Create frontend board pages (list, detail, write, edit)
- Create admin board management and category management pages
- Update Header.tsx with conditional Board menu between Inquiry and Contact Us
- Update admin settings with board_enabled toggle
- Add Board menu to admin sidebar

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:34:41 +09:00

78 lines
3.7 KiB
Python

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대)
cc_per_banner_view = Column(Float, default=0.1) # 배너 차량 PDF/상세 보기 비용 (기본 0.1 CC)
# 캐시 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
# 국내비용 + 수출통관비용 (KRW)
domestic_export_customs_krw = Column(Integer, default=1150000) # ₩1,150,000
# 딜러 코멘트 표시 설정
show_dealer_comment = Column(Boolean, default=True) # 딜러 코멘트 표시 여부
# 레퍼럴 보상 설정
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 (중국 위안) 가중치
# 마케팅 캠페인 설정
marketing_enabled = Column(Boolean, default=False) # 마케팅 캠페인 활성화
marketing_start_date = Column(DateTime(timezone=True), nullable=True) # 캠페인 시작일
marketing_end_date = Column(DateTime(timezone=True), nullable=True) # 캠페인 종료일
# SNS 공유 보상 설정
sns_share_reward_cc = Column(Float, default=3.0) # SNS 공유 보상 CC (기본 3CC)
referral_signup_reward_cc = Column(Float, default=10.0) # 레퍼럴 가입 보상 CC (기본 10CC)
# 이벤트 CC 유효기간 (개월)
event_cc_validity_months = Column(Integer, default=6) # 이벤트 CC 유효기간 (기본 6개월)
# 출금 설정
withdrawal_enabled = Column(Boolean, default=True) # 출금 기능 활성화
min_withdrawal_usd = Column(Float, default=10.0) # 최소 출금 금액 (USD)
# 게시판 설정
board_enabled = Column(Boolean, default=True) # 게시판 상단 메뉴 표시 여부
# 차량 판매상태 검증 설정
car_availability_check_enabled = Column(Boolean, default=True) # 자동 검증 활성화
car_availability_check_hour = Column(Integer, default=6) # 검증 시간 (0-23, 기본 새벽 6시)
car_availability_last_check = Column(DateTime(timezone=True), nullable=True) # 마지막 검증 시간
car_availability_last_result = Column(String(500), nullable=True) # 마지막 검증 결과 요약
# 타임스탬프
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())