"""Typed aggregate result for one weekly operations dispatch tick."""

from dataclasses import dataclass

from .nutrition_weekly_operations import Topic59PublicationDisposition


@dataclass(frozen=True, slots=True)
class WeeklyOperationsDispatchResult:
    failures: tuple[str, ...]
    topic59_dispositions: tuple[Topic59PublicationDisposition, ...]

    @property
    def maintenance_noop(self) -> bool:
        return (
            not self.failures
            and Topic59PublicationDisposition.NOOP_MAINTENANCE
            in self.topic59_dispositions
        )
