import asyncio import logging from sqlalchemy import text from app.database import AsyncSessionLocal logging.basicConfig(level=logging.INFO, format='%(asctime)s [OPTIMIZER] %(message)s') logger = logging.getLogger("Efficiency-Optimizer") async def optimize_queue(): async with AsyncSessionLocal() as db: try: # 1. FÁZIS: AUTO-GOLD (Ami már kész van, ne menjen AI-hoz) # Ha az UltimateSpecs vagy az RDW már kitöltötte a lényeget, lőjük Aranyba! logger.info("🚀 1. Fázis: Auto-Gold ellenőrzés indítása...") auto_gold_query = text(""" UPDATE vehicle.vehicle_model_definitions SET status = 'gold_enriched', updated_at = NOW(), source = source || ' + AUTO_GOLD' WHERE status = 'awaiting_ai_synthesis' AND power_kw > 0 AND engine_capacity > 0 AND fuel_type != 'Unknown' AND body_type IS NOT NULL AND trim_level != '' RETURNING id; """) result = await db.execute(auto_gold_query) logger.info(f"✅ {len(result.fetchall())} járművet automatikusan ARANY státuszba emeltem (AI megspórolva).") # 2. FÁZIS: DEDUPLIKÁCIÓ (Katalógus összehasonlítás) # Keressük azokat a várakozókat, amiknek már van egy ARANY párjuk logger.info("🚀 2. Fázis: Duplikációk szűrése a katalógus alapján...") dedup_query = text(""" UPDATE vehicle.vehicle_model_definitions AS pending SET status = 'merged_duplicate', updated_at = NOW() FROM vehicle.vehicle_model_definitions AS gold WHERE pending.status = 'awaiting_ai_synthesis' AND gold.status = 'gold_enriched' AND pending.make = gold.make AND pending.normalized_name = gold.normalized_name AND pending.year_from = gold.year_from AND pending.fuel_type = gold.fuel_type AND pending.market = gold.market AND pending.id != gold.id RETURNING pending.id; """) result = await db.execute(dedup_query) logger.info(f"🗑️ {len(result.fetchall())} duplikált várakozót töröltem a sorból (Már van Arany párjuk).") await db.commit() logger.info("🏆 Optimalizálás befejezve. A sor megtisztítva!") except Exception as e: await db.rollback() logger.error(f"❌ Hiba az optimalizálás során: {e}") if __name__ == "__main__": asyncio.run(optimize_queue())