""" Seed script: Beszúrja az "Autóbontó / Használt alkatrész" kategóriát a marketplace.expertise_tags táblába, ha még nem létezik. Idempotens - ON CONFLICT DO NOTHING miatt többször is futtatható. Futtatás: docker exec sf_api python3 /app/backend/app/scripts/seed_dismantler_category.py """ import asyncio import logging from sqlalchemy import select, func from app.db.session import AsyncSessionLocal from app.models.marketplace.service import ExpertiseTag logger = logging.getLogger(__name__) DISMANTLER_CATEGORY = { "key": "autobonto_hasznalt_alkatresz", # --- 🏗️ i18n JSONB Migration (Phase 3) --- "name_i18n": {"hu": "Autóbontó / Használt alkatrész", "en": "Car Dismantler / Used Parts"}, "name_hu": "Autóbontó / Használt alkatrész", "name_en": "Car Dismantler / Used Parts", "category": "parts", "search_keywords": [ "bontó", "autóbontó", "bontás", "használt alkatrész", "dismantler", "used parts", "scrap yard", "break yard", "alkatrész bontás", "roncs", "roncsautó", ], "description": "Használt gépjármű alkatrészek értékesítése, autóbontás, roncsautó felvásárlás", } async def seed_dismantler_category(): """Beszúrja az Autóbontó kategóriát, ha még nem létezik.""" async with AsyncSessionLocal() as db: try: # Ellenőrizzük, hogy létezik-e már stmt = select(ExpertiseTag).where( ExpertiseTag.key == DISMANTLER_CATEGORY["key"] ) result = await db.execute(stmt) existing = result.scalar_one_or_none() if existing: print( f"✅ Az 'Autóbontó / Használt alkatrész' kategória " f"már létezik (ID: {existing.id}). Nincs szükség seed-elésre." ) return # Beszúrás tag = ExpertiseTag( key=DISMANTLER_CATEGORY["key"], # --- 🏗️ i18n JSONB Migration (Phase 3) --- name_i18n=DISMANTLER_CATEGORY.get("name_i18n", {"hu": DISMANTLER_CATEGORY["name_hu"], "en": DISMANTLER_CATEGORY["name_en"]}), name_hu=DISMANTLER_CATEGORY["name_hu"], name_en=DISMANTLER_CATEGORY["name_en"], category=DISMANTLER_CATEGORY["category"], search_keywords=DISMANTLER_CATEGORY["search_keywords"], description=DISMANTLER_CATEGORY["description"], is_official=True, discovery_points=10, usage_count=0, ) db.add(tag) await db.commit() await db.refresh(tag) print( f"✅ Sikeresen beszúrva az 'Autóbontó / Használt alkatrész' " f"kategória (ID: {tag.id})." ) # Ellenőrzés count_result = await db.execute( select(func.count(ExpertiseTag.id)) ) final_count = count_result.scalar() print(f"📊 Összes rekord az expertise_tags táblában: {final_count}") except Exception as e: await db.rollback() logger.error(f"Hiba a seed-elés során: {e}") print(f"❌ Hiba: {e}") raise if __name__ == "__main__": logging.basicConfig(level=logging.INFO) asyncio.run(seed_dismantler_category())