"""
Strategy Domain Entity — Policy (Corporate Policy Management).
"""

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 Policy(TenantEntity):
    """سیاست سازمانی."""

    title: str = ""
    code: str = ""
    category: str = ""
    content: str = ""
    version: int = 1
    status: str = "draft"  # draft / active / under_review / retired
    effective_date: Optional[date] = None
    review_date: Optional[date] = None
    owner_id: Optional[uuid.UUID] = None
    approver_id: Optional[uuid.UUID] = None
    document_id: Optional[uuid.UUID] = None  # FK → Document Control (UUID only)

    metadata: dict[str, Any] = field(default_factory=dict)

    def activate(self) -> None:
        self.status = "active"

    def submit_for_review(self) -> None:
        self.status = "under_review"

    def retire(self) -> None:
        self.status = "retired"
