# app/modules/monitoring/tasks/capacity.py
"""
Celery tasks for capacity monitoring and forecasting.

Captures daily snapshots of platform capacity metrics for trend analysis.
"""

import logging

from app.core.celery_config import celery_app
from app.modules.task_base import ModuleTask

logger = logging.getLogger(__name__)


@celery_app.task(
    bind=True,
    base=ModuleTask,
    name="app.modules.monitoring.tasks.capacity.capture_capacity_snapshot",
)
def capture_capacity_snapshot(self):
    """
    Capture a daily snapshot of platform capacity metrics.

    Runs daily at midnight via Celery beat.

    Returns:
        dict: Snapshot summary with store and product counts.
    """
    from app.modules.monitoring.services.capacity_forecast_service import (
        capacity_forecast_service,
    )

    with self.get_db() as db:
        snapshot = capacity_forecast_service.capture_daily_snapshot(db)

        logger.info(
            f"Captured capacity snapshot: {snapshot.total_stores} stores, "
            f"{snapshot.total_products} products"
        )

        return {
            "snapshot_id": snapshot.id,
            "snapshot_date": snapshot.snapshot_date.isoformat(),
            "total_stores": snapshot.total_stores,
            "total_products": snapshot.total_products,
        }
