# /opt/docker/dev/service_finder/backend/app/services/robot_manager.py
import asyncio
import logging
from datetime import datetime
from .harvester_cars import VehicleHarvester 
# Megjegyzés: Csak azokat importáld, amik öröklődnek a BaseHarvester-ből

logger = logging.getLogger(__name__)

class RobotManager:
    @staticmethod
    async def run_full_sync(db):
        """ Sorban lefuttatja a robotokat az új AssetCatalog struktúrához. """
        logger.info(f"🕒 Teljes szinkronizáció indítva: {datetime.now()}")
        
        robots = [
            VehicleHarvester(),
            # BikeHarvester(), # Későbbi bővítéshez
        ]
        
        for robot in robots:
            try:
                # JAVÍTVA: A modern Harvesterek a harvest_all metódust használják
                await robot.harvest_all(db) 
                logger.info(f"✅ {robot.category} robot sikeresen lefutott.")
                await asyncio.sleep(5) 
            except Exception as e:
                logger.error(f"❌ Kritikus hiba a {robot.category} robotnál: {e}")

    @staticmethod
    async def schedule_nightly_run(db):
        """ 
        LOGIKA MEGŐRIZVE: Éjszakai futtatás 02:00-kor. 
        """
        while True:
            now = datetime.now()
            if now.hour == 2 and now.minute == 0:
                await RobotManager.run_full_sync(db)
                await asyncio.sleep(70) # Megakadályozzuk az újraindulást ugyanabban a percben
            await asyncio.sleep(30)