from celery import Celery
from celery.schedules import crontab
from app.core.config import get_settings


celery_app = Celery("documenta", broker=get_settings().redis_url, backend=get_settings().redis_url)
celery_app.conf.update(
    task_serializer="json", result_serializer="json", accept_content=["json"], timezone=get_settings().app_timezone,
    enable_utc=True, task_acks_late=True, worker_prefetch_multiplier=1,
    beat_schedule={
        "vencer-documentos": {"task": "app.tasks.jobs.vencer_documentos", "schedule": crontab(minute="*/15")},
        "procesar-outbox": {"task": "app.tasks.jobs.procesar_outbox", "schedule": 10.0},
        "reintentar-gesnot": {"task": "app.tasks.jobs.reintentar_gesnot", "schedule": 300.0},
        "procesar-webhooks-pro": {"task": "app.tasks.jobs.procesar_webhooks_pro", "schedule": 15.0},
        "heartbeat-operacion-h12": {"task": "app.tasks.jobs.heartbeat_operacion", "schedule": 60.0},
    },
)
celery_app.autodiscover_tasks(["app.tasks"])

# Registro explicito después de crear la aplicación para evitar importación circular.
import app.tasks.jobs  # noqa: E402,F401
