"""
Strategy Domain Entity — GateReview (review session for a gate).
"""

from __future__ import annotations

import uuid
from dataclasses import dataclass, field
from datetime import date, datetime
from typing import Any, Optional

from shared.base_classes.entity import TenantEntity


@dataclass
class GateReview(TenantEntity):
    """بازبینی دروازه — جلسه بررسی عبور از یک Gate."""

    gate_id: Optional[uuid.UUID] = None
    entity_id: Optional[uuid.UUID] = None   # Project / Program ID
    entity_type: str = "project"             # project / program
    status: str = "pending"                  # pending / in_review / passed / conditional / failed
    review_date: Optional[date] = None
    notes: str = ""

    metadata: dict[str, Any] = field(default_factory=dict)

    def start_review(self) -> None:
        self.status = "in_review"

    def approve(self) -> None:
        self.status = "passed"

    def approve_conditional(self) -> None:
        self.status = "conditional"

    def reject(self) -> None:
        self.status = "failed"
