import asyncio import logging from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from app.db.session import SessionLocal from app.models.asset import AssetCatalog logging.basicConfig(level=logging.INFO) logger = logging.getLogger("Robot1-Catalog") class CatalogScout: """ Robot 1: Járműkatalógus feltöltő. Stratégia: Magyarországi alapok -> Globális EU márkák -> Technikai mélység. """ @staticmethod async def get_initial_hu_data(): """ Kezdeti adathalmaz (Példa). Élesben itt egy külső API vagy CSV feldolgozás helye van. """ return [ # Suzuki - A magyar utak királya {"make": "Suzuki", "model": "Swift", "generation": "III (2005-2010)", "engine_variant": "1.3 (92 LE)", "year_from": 2005, "year_to": 2010, "fuel_type": "petrol"}, {"make": "Suzuki", "model": "Vitara", "generation": "IV (2015-)", "engine_variant": "1.6 VVT (120 LE)", "year_from": 2015, "year_to": 2024, "fuel_type": "petrol"}, # Opel - Astra népautó {"make": "Opel", "model": "Astra", "generation": "H (2004-2009)", "engine_variant": "1.4 Twinport (90 LE)", "year_from": 2004, "year_to": 2009, "fuel_type": "petrol"}, {"make": "Opel", "model": "Astra", "generation": "J (2009-2015)", "engine_variant": "1.7 CDTI (110 LE)", "year_from": 2009, "year_to": 2015, "fuel_type": "diesel"}, # Skoda - Családi/Flotta kedvenc {"make": "Skoda", "model": "Octavia", "generation": "II (2004-2013)", "engine_variant": "1.6 MPI (102 LE)", "year_from": 2004, "year_to": 2013, "fuel_type": "petrol"}, {"make": "Skoda", "model": "Octavia", "generation": "III (2013-2020)", "engine_variant": "2.0 TDI (150 LE)", "year_from": 2013, "year_to": 2020, "fuel_type": "diesel"}, # BMW - GS Motorosoknak {"make": "BMW", "model": "R 1200 GS", "generation": "K50 (2013-2018)", "engine_variant": "Adventure (125 LE)", "year_from": 2013, "year_to": 2018, "fuel_type": "petrol"} ] @classmethod async def run(cls): logger.info("🤖 Robot 1 indítása: Járműkatalógus feltöltés...") async with SessionLocal() as db: data = await cls.get_initial_hu_data() added_count = 0 for item in data: # Ellenőrizzük az egyediséget (Make + Model + Generation + Engine) stmt = select(AssetCatalog).where( AssetCatalog.make == item["make"], AssetCatalog.model == item["model"], AssetCatalog.engine_variant == item["engine_variant"] ) result = await db.execute(stmt) if not result.scalar_one_or_none(): db.add(AssetCatalog(**item)) added_count += 1 await db.commit() logger.info(f"✅ Robot 1 sikeresen rögzített {added_count} új katalógus elemet.") if __name__ == "__main__": asyncio.run(CatalogScout.run())