"""
Strategy Domain — KeyResultCheckIn Entity

ثبت پیشرفت — گزارش دوره‌ای از وضعیت نتیجه کلیدی.
"""

from dataclasses import dataclass, field
from datetime import date, datetime
from decimal import Decimal
from typing import Optional
from uuid import UUID

from shared.base_classes.entity import TenantEntity

from ..value_objects.common import ConfidenceLevel


@dataclass
class KeyResultCheckIn(TenantEntity):
    """
    ثبت پیشرفت (Check-In).

    هر Check-In یک گزارش از وضعیت فعلی نتیجه کلیدی است.
    """

    # --- Relations ---
    key_result_id: Optional[UUID] = None  # → KeyResult

    # --- Value ---
    value: Decimal = Decimal("0")
    confidence: str = ConfidenceLevel.MEDIUM
    notes: str = ""

    # --- Audit ---
    checked_by: Optional[UUID] = None  # → User
    check_date: Optional[date] = field(default_factory=date.today)

    # --- Metadata ---
    metadata: Optional[dict] = field(default_factory=dict)
