"""
Strategy Domain Entity — KPI Assignment.
"""

from __future__ import annotations

import uuid
from dataclasses import dataclass, field
from datetime import datetime
from typing import Any, Optional

from shared.base_classes.entity import TenantEntity


@dataclass
class KPIAssignment(TenantEntity):
    """تخصیص KPI به سطح/واحد سازمانی."""

    kpi_id: Optional[uuid.UUID] = None

    # level: portfolio / program / project / org_unit / department / team
    level: str = ""
    entity_id: Optional[uuid.UUID] = None  # ID of portfolio/program/project/org_unit

    weight: float = 1.0
    status: str = "active"  # active / inactive

    notes: str = ""
    metadata: dict[str, Any] = field(default_factory=dict)

    # ── Business Rules ──────────────────────────

    def activate(self) -> None:
        self.status = "active"

    def deactivate(self) -> None:
        self.status = "inactive"
