"""Side-effect-free delivery planning for social media draft reviews."""

from __future__ import annotations

from dataclasses import dataclass

_TELEGRAM_MESSAGE_LIMIT = 4096
_FORBIDDEN_ACTION_WORDS = ("publish", "post")


@dataclass(frozen=True)
class SocialDraftDelivery:
    text: str
    topic: str = "review"
    delivery_type: str = "social_draft_review"
    requires_human_approval: bool = True
    side_effects: tuple[str, ...] = ()


def prepare_social_draft_delivery(review_text: str, *, topic: str = "review") -> SocialDraftDelivery:
    """Prepare a Telegram-bound social draft review without sending it."""

    if not (review_text or "").strip():
        raise ValueError("review text is required")
    if len(review_text) > _TELEGRAM_MESSAGE_LIMIT:
        raise ValueError("Telegram message exceeds 4096 characters")

    lowered = review_text.casefold()
    if any(word in lowered for word in _FORBIDDEN_ACTION_WORDS):
        raise ValueError("social draft delivery must not imply publishing")

    return SocialDraftDelivery(
        text=review_text,
        topic=topic,
        delivery_type="social_draft_review",
        requires_human_approval=True,
        side_effects=(),
    )
