"""Celery tasks for the Repository integration sub-module."""

from __future__ import annotations

import logging

from celery import shared_task

logger = logging.getLogger(__name__)


@shared_task(name="apps.repository.integration.tasks.poll_repository_inbox")
def poll_repository_inbox() -> dict:
    """Periodic Celery task: ingest new email submissions (FRREP-DCI012).

    Wraps :func:`apps.repository.integration.mail_ingest.poll_inbox` and emits
    a structured log line. Safe to run when no IMAP backend is configured —
    the underlying poller short-circuits and returns a zeroed summary.
    """
    from apps.repository.integration.mail_ingest import poll_inbox

    summary = poll_inbox()
    payload = {
        "polled": summary.polled,
        "ingested": summary.ingested,
        "skipped_dup": summary.skipped_dup,
        "skipped_invalid": summary.skipped_invalid,
        "rejected_sender": summary.rejected_sender,
        "rejected_recipient": summary.rejected_recipient,
        "errors": summary.errors,
    }
    if any(payload.values()):
        logger.info("repo_inbox_poll: %s", payload)
    return payload
