deep-risk/backend/app/models/contract.py
2025-12-14 20:08:27 +08:00

88 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
主播分成协议模型
"""
from datetime import date
from typing import Optional, TYPE_CHECKING
from sqlalchemy import (
Column,
Date,
String,
Text,
Float,
)
from sqlalchemy.orm import Mapped, mapped_column
from app.models.base import BaseModel
if TYPE_CHECKING:
from .streamer import StreamerInfo, McnAgency
class RevenueSharingContract(BaseModel):
"""
主播分成协议表(收入分成协议)
"""
__tablename__ = "contract"
contract_id: Mapped[str] = mapped_column(
String(50), unique=True, nullable=False, comment="协议ID"
)
contract_no: Mapped[str] = mapped_column(
String(100), nullable=False, comment="协议编号"
)
contract_type: Mapped[str] = mapped_column(
String(50),
nullable=False,
comment="协议类型tip_sharing-打赏分成ecommerce_cooperation-电商合作brand_ambassador-品牌代言",
)
streamer_id: Mapped[str] = mapped_column(
String(50), nullable=False, comment="主播ID"
)
streamer_name: Mapped[str] = mapped_column(
String(100), nullable=False, comment="主播姓名"
)
streamer_entity_type: Mapped[str] = mapped_column(
String(20), nullable=False, comment="主播主体类型"
)
platform_party: Mapped[str] = mapped_column(
String(200), nullable=False, comment="平台方名称"
)
platform_credit_code: Mapped[str] = mapped_column(
String(18), nullable=False, comment="平台方统一社会信用代码"
)
revenue_type: Mapped[str] = mapped_column(
String(50),
nullable=False,
comment="收入类型tip-打赏product_sales-商品销售advertising-广告",
)
platform_ratio: Mapped[float] = mapped_column(
nullable=False, comment="平台分成比例"
)
streamer_ratio: Mapped[float] = mapped_column(
nullable=False, comment="主播分成比例"
)
settlement_cycle: Mapped[str] = mapped_column(
String(20),
nullable=False,
comment="结算周期weekly-周结monthly-月结quarterly-季结",
)
contract_start_date: Mapped[date] = mapped_column(
Date, nullable=False, comment="协议开始日期"
)
contract_end_date: Mapped[date] = mapped_column(
Date, nullable=False, comment="协议结束日期"
)
contract_status: Mapped[str] = mapped_column(
String(20),
default="active",
comment="协议状态active-生效suspended-暂停terminated-终止expired-过期",
)
remark: Mapped[Optional[str]] = mapped_column(
Text, nullable=True, comment="备注"
)
# 向后兼容的别名
Contract = RevenueSharingContract