"""Telegram-safe rendering for complete review batches."""

from __future__ import annotations

from autoshorts.review.package import render_telegram_review_package
from autoshorts.review.workflow import CandidateReviewItem, ReviewBatch


def _render_error_item(item: CandidateReviewItem) -> str:
    errors = "; ".join(item.errors) if item.errors else "-"
    return f"- {item.candidate.candidate_id} — {item.candidate.title}\n  Reasons: {errors}"


def render_review_batch_summary(review_batch: ReviewBatch) -> str:
    """Render a full review batch as one Telegram-friendly text block.

    The output deliberately avoids language that implies publication. It is a
    review document, not a launch button. Civilization, barely.
    """

    lines: list[str] = [
        f"## Review Batch: {review_batch.batch_id}",
        f"Ready: {len(review_batch.ready_for_review)}",
        f"Blocked: {len(review_batch.blocked)}",
        f"Invalid: {len(review_batch.invalid)}",
    ]

    if review_batch.ready_for_review:
        lines.extend(["", "## Ready for review"])
        for item in review_batch.ready_for_review:
            if item.package is not None:
                lines.append(render_telegram_review_package(item.package))

    if review_batch.blocked:
        lines.extend(["", "## Blocked"])
        lines.extend(_render_error_item(item) for item in review_batch.blocked)

    if review_batch.invalid:
        lines.extend(["", "## Invalid"])
        lines.extend(_render_error_item(item) for item in review_batch.invalid)

    return "\n".join(lines)
