"""
ContractTemplate — Domain Entity.

قالب‌های از پیش تعریف‌شده قرارداد.
"""
from dataclasses import dataclass, field
from typing import Optional, List
from uuid import UUID

from shared.base_classes.entity import TenantEntity


@dataclass
class ContractTemplate(TenantEntity):
    """
    قالب قرارداد.

    Rules:
    - نام قالب باید در هر tenant یکتا باشد
    - بندهای پیش‌فرض به‌صورت JSON ذخیره شوند
    """

    name: str = ""
    name_en: str = ""
    description: str = ""
    category: str = ""
    contract_type: str = ""

    # Template content
    default_clauses: list = field(default_factory=list)
    default_milestones: list = field(default_factory=list)
    default_payment_terms_days: int = 30
    default_advance_payment_percent: int = 0
    default_retention_percent: int = 0
    default_penalty_rate_per_day: int = 0

    # Settings
    numbering_prefix: str = "CNT"
    numbering_pattern: str = "{prefix}-{year}-{seq:04d}"

    is_active: bool = True
    is_default: bool = False
    usage_count: int = 0
    metadata: dict = field(default_factory=dict)
