import os
import json
import aio_pika
import logging

logger = logging.getLogger(__name__)

QUEUE_NAME = "pdf_generation_queue"

async def publish_ticket_task(ticket_id: int):
    """Отправляет ID билета в RabbitMQ."""
    # Читаем строго из ENV прямо перед вызовом
    rabbitmq_url = os.getenv("RABBITMQ_URL")
    if not rabbitmq_url:
        logger.error("КРИТИЧЕСКАЯ ОШИБКА: RABBITMQ_URL не задан в переменных окружения!")
        return

    try:
        connection = await aio_pika.connect_robust(rabbitmq_url)
        async with connection:
            channel = await connection.channel()
            queue = await channel.declare_queue(QUEUE_NAME, durable=True)
            
            message = aio_pika.Message(
                body=json.dumps({"ticket_id": ticket_id}).encode(),
                delivery_mode=aio_pika.DeliveryMode.PERSISTENT
            )
            
            await channel.default_exchange.publish(
                message,
                routing_key=queue.name,
            )
            logger.info(f"Задача на генерацию PDF для билета {ticket_id} улетела в очередь.")
    except Exception as e:
        logger.error(f"Сбой RabbitMQ при отправке билета {ticket_id}: {e}")