admin firs step
This commit is contained in:
60
backend/app/workers/vehicle/vehicle_efficiency_optimizer.py
Normal file
60
backend/app/workers/vehicle/vehicle_efficiency_optimizer.py
Normal file
@@ -0,0 +1,60 @@
|
||||
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())
|
||||
Reference in New Issue
Block a user