"""Registro de una accion individual de un agente en una simulacion multi-agente."""

from __future__ import annotations

from dataclasses import dataclass, field


@dataclass
class AgentAction:
    """Registro de una accion individual de un agente en una simulacion multi-agente.

    Captura que hizo el agente, cuando, en que plataforma, y si fue exitoso.

    Attributes:
        round_num: Ronda de la simulacion en la que ocurrio la accion.
        timestamp: Timestamp ISO 8601 del momento de la accion.
        platform: Plataforma donde ocurrio ("twitter", "reddit", o custom).
        agent_id: ID numerico del agente.
        agent_name: Nombre del agente.
        action_type: Tipo de accion ("CREATE_POST", "LIKE_POST", "COMMENT", etc.).
        action_args: Parametros especificos de la accion.
        result: Resultado de la accion (None si aun no hay resultado).
        success: Si la accion fue exitosa.
    """

    round_num: int
    timestamp: str
    platform: str
    agent_id: int
    agent_name: str
    action_type: str
    action_args: dict = field(default_factory=dict)
    result: str | None = None
    success: bool = True

    def to_dict(self) -> dict:
        """Convierte la accion a un diccionario serializable."""
        return {
            "round_num": self.round_num,
            "timestamp": self.timestamp,
            "platform": self.platform,
            "agent_id": self.agent_id,
            "agent_name": self.agent_name,
            "action_type": self.action_type,
            "action_args": self.action_args,
            "result": self.result,
            "success": self.success,
        }
