"""
Расписание периодических задач Celery Beat.
"""
from celery.schedules import crontab


# Расписание периодических задач
CELERY_BEAT_SCHEDULE = {
    # Отправка отложенных уведомлений (каждую минуту)
    'send-scheduled-notifications': {
        'task': 'apps.notifications.tasks.send_scheduled_notifications',
        'schedule': 60.0,  # каждые 60 секунд
    },
    
    # Очистка старых уведомлений (каждый день в 3:00)
    'cleanup-old-notifications': {
        'task': 'apps.notifications.tasks.cleanup_old_notifications',
        'schedule': crontab(hour=3, minute=0),
    },
    
    # Очистка старых записей видео (каждый день в 4:00)
    'cleanup-old-recordings': {
        'task': 'apps.video.tasks.cleanup_old_recordings',
        'schedule': crontab(hour=4, minute=0),
    },
    
    # Завершение неактивных видеокомнат (каждые 5 минут)
    'end-inactive-rooms': {
        'task': 'apps.video.tasks.end_inactive_rooms',
        'schedule': 300.0,  # каждые 5 минут
    },
    
    # Автоматическое завершение видеокомнат, идущих более 10 минут (каждые 10 минут)
    'auto-end-long-rooms': {
        'task': 'apps.video.tasks.auto_end_long_rooms',
        'schedule': 600.0,  # каждые 10 минут
    },
    
    # ============================================
    # ЗАДАЧИ РАСПИСАНИЯ ЗАНЯТИЙ
    # ============================================
    
    # Автоматическое начало занятий по времени (каждую минуту)
    'start-lessons-automatically': {
        'task': 'apps.schedule.tasks.start_lessons_automatically',
        'schedule': 60.0,  # каждые 60 секунд
    },
    
    # Проверка истекших подписок (каждый день в 00:00)
    'check-expired-subscriptions': {
        'task': 'apps.subscriptions.tasks.check_expired_subscriptions',
        'schedule': crontab(hour=0, minute=0),
    },
    
    # Предупреждения об истечении подписок (каждый день в 10:00)
    'send-expiration-warnings': {
        'task': 'apps.subscriptions.tasks.send_expiration_warnings',
        'schedule': crontab(hour=10, minute=0),
    },
    
    # Автопродление подписок (каждый день в 02:00)
    'auto-renew-subscriptions': {
        'task': 'apps.subscriptions.tasks.auto_renew_subscriptions',
        'schedule': crontab(hour=2, minute=0),
    },
    
    # Сброс месячного использования (1-го числа в 00:00)
    'reset-monthly-usage': {
        'task': 'apps.subscriptions.tasks.reset_monthly_usage',
        'schedule': crontab(day_of_month=1, hour=0, minute=0),
    },
    
    # Очистка старой истории платежей (1-го числа в 03:00)
    'cleanup-old-payment-history': {
        'task': 'apps.subscriptions.tasks.cleanup_old_payment_history',
        'schedule': crontab(day_of_month=1, hour=3, minute=0),
    },
    
    # Генерация отчетов по подпискам (1-го числа в 09:00)
    'generate-subscription-reports': {
        'task': 'apps.subscriptions.tasks.generate_subscription_reports',
        'schedule': crontab(day_of_month=1, hour=9, minute=0),
    },
    
    # ============================================
    # ЗАДАЧИ ДОМАШНИХ ЗАДАНИЙ
    # ============================================
    
    # Напоминания о дедлайнах домашних заданий (каждый день в 09:00)
    'send-homework-deadline-reminders': {
        'task': 'apps.homework.tasks.send_homework_deadline_reminders',
        'schedule': crontab(hour=9, minute=0),
    },
    
    # Автоматическая проверка домашних заданий через AI (каждые 30 минут)
    'auto-check-homework-submissions': {
        'task': 'apps.homework.tasks.auto_check_homework_submissions',
        'schedule': 1800.0,  # каждые 30 минут
    },
    
    # Проверка просроченных домашних заданий (каждый день в 08:00)
    'check-overdue-homeworks': {
        'task': 'apps.homework.tasks.check_overdue_homeworks',
        'schedule': crontab(hour=8, minute=0),
    },
    
    # Обновление статистики домашних заданий (каждый день в 02:00)
    'update-homework-statistics': {
        'task': 'apps.homework.tasks.update_homework_statistics',
        'schedule': crontab(hour=2, minute=0),
    },
    
    # Очистка старых данных домашних заданий (1-го числа в 05:00)
    'cleanup-old-homework-data': {
        'task': 'apps.homework.tasks.cleanup_old_homework_data',
        'schedule': crontab(day_of_month=1, hour=5, minute=0),
    },
}

