"""Resumen de una ronda de simulacion multi-agente."""

from __future__ import annotations

from dataclasses import dataclass, field

from agent_action import AgentAction


@dataclass
class RoundSummary:
    """Resumen de una ronda de simulacion multi-agente.

    Agrupa las acciones de todos los agentes en esa ronda con tiempos y conteos.
    Permite replay de simulaciones ronda por ronda, visualizacion de timeline,
    y analisis post-simulacion.

    Attributes:
        round_num: Numero de ronda de la simulacion.
        start_time: Timestamp ISO 8601 de inicio de la ronda.
        end_time: Timestamp ISO 8601 de fin de la ronda (None si aun corre).
        simulated_hour: Hora simulada dentro de la ronda (0.0 por defecto).
        actions: Lista de acciones realizadas por los agentes en esta ronda.
        active_agents: Numero de agentes activos durante la ronda.
    """

    round_num: int
    start_time: str
    end_time: str | None = None
    simulated_hour: float = 0.0
    actions: list[AgentAction] = field(default_factory=list)
    active_agents: int = 0

    def to_dict(self) -> dict:
        """Convierte el resumen de ronda a un diccionario serializable."""
        return {
            "round_num": self.round_num,
            "start_time": self.start_time,
            "end_time": self.end_time,
            "simulated_hour": self.simulated_hour,
            "actions": [a.to_dict() for a in self.actions],
            "active_agents": self.active_agents,
        }
