"""Content Engine — Celery tasks (AI summarization, bulk operations)."""

from __future__ import annotations

from celery import shared_task


@shared_task(
    name="content.ai_generate_summary",
    max_retries=2,
    default_retry_delay=60,
    acks_late=True,
)
def ai_generate_summary(item_id: str, tenant_id: int) -> None:
    """Generate an AI summary for a content item."""
    # Placeholder — will use AI Engine when integrated
    import structlog
    _log = structlog.get_logger("simorgh.content.tasks")
    _log.info("content.ai_summary_requested", item_id=item_id, tenant_id=tenant_id)


@shared_task(
    name="content.ai_generate_metadata",
    max_retries=2,
    default_retry_delay=60,
    acks_late=True,
)
def ai_generate_metadata(item_id: str, tenant_id: int) -> None:
    """Generate AI metadata (description, semantic type, keywords) for a content item."""
    import structlog
    _log = structlog.get_logger("simorgh.content.tasks")
    _log.info("content.ai_metadata_requested", item_id=item_id, tenant_id=tenant_id)


@shared_task(
    name="content.cleanup_old_versions",
    acks_late=True,
)
def cleanup_old_versions(tenant_id: int) -> None:
    """Remove versions beyond the configured retention count per content item."""
    from django.db.models import Count

    from simorgh.apps.app_settings.resolver import resolve_setting
    from simorgh.apps.content.models import ContentItem, ContentVersion

    retention = resolve_setting("content.version_retention_count", tenant_id=tenant_id) or 50

    items = ContentItem.objects.filter(tenant_id=tenant_id).annotate(
        version_count=Count("versions")
    ).filter(version_count__gt=retention)

    for item in items:
        keep = item.versions.order_by("-version")[:retention]
        keep_ids = [v.pk for v in keep]
        ContentVersion.objects.filter(content_item=item).exclude(pk__in=keep_ids).delete()
