"""
Strategy Domain Entity — GateDeliverable (deliverable item in a GateReview).
"""

from __future__ import annotations

import uuid
from dataclasses import dataclass, field
from typing import Any, Optional

from shared.base_classes.entity import TenantEntity


@dataclass
class GateDeliverable(TenantEntity):
    """تحویل‌دادنی دروازه — آیتم مورد نیاز برای عبور از Gate."""

    review_id: Optional[uuid.UUID] = None
    name: str = ""
    status: str = "pending"             # pending / submitted / accepted / rejected
    document_id: Optional[uuid.UUID] = None  # FK → Document Control (cross-module, UUID only)

    metadata: dict[str, Any] = field(default_factory=dict)

    def submit(self) -> None:
        self.status = "submitted"

    def accept(self) -> None:
        self.status = "accepted"

    def reject(self) -> None:
        self.status = "rejected"
