"""پیکربندی Celery برای پردازش‌های async.

صف‌های اولیه:
    default        - وظایف عمومی
    core_events    - پردازش رویدادهای هسته (Outbox)
    notifications  - اعلان‌ها (فازهای بعدی)
    webhooks       - ارسال webhook (فازهای بعدی)
"""
from __future__ import annotations

from celery import Celery
from kombu import Queue

from app.core.config import settings

celery_app = Celery(
    "core_service",
    broker=settings.celery_broker_url,
    backend=settings.celery_result_backend,
    include=["app.workers.tasks"],
)

celery_app.conf.update(
    task_serializer="json",
    result_serializer="json",
    accept_content=["json"],
    timezone="UTC",
    enable_utc=True,
    task_track_started=True,
    task_default_queue="default",
    task_queues=(
        Queue("default"),
        Queue("core_events"),
        Queue("notifications"),
        Queue("webhooks"),
    ),
    # زمان‌بندی دوره‌ای برای پردازش Outbox.
    beat_schedule={
        "process-outbox-events": {
            "task": "app.workers.tasks.process_outbox_events",
            "schedule": 30.0,  # هر ۳۰ ثانیه
            "options": {"queue": "core_events"},
        },
    },
)
