"""
Strategy Domain Entity — Causal Link (edge on strategy map).
"""

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 CausalLink(TenantEntity):
    """ارتباط علّی بین اهداف در نقشه راهبردی (یال)."""

    map_id: Optional[uuid.UUID] = None
    from_objective_id: Optional[uuid.UUID] = None  # StrategyMapObjective
    to_objective_id: Optional[uuid.UUID] = None    # StrategyMapObjective

    strength: str = "medium"  # weak / medium / strong
    description: str = ""

    metadata: dict[str, Any] = field(default_factory=dict)
