Files
service-finder/backend/scripts/seed_expertise_taxonomy.py
2026-06-17 22:07:55 +00:00

1011 lines
55 KiB
Python

"""
Seed script: Feltölti a marketplace.expertise_tags táblát a teljes 4-szintű
autóipari taxonómiával (Master Taxonomy).
Idempotens: Törli a meglévő is_official=True rekordokat, de MEGHAGYJA
a felhasználók által létrehozott (is_official=False) címkéket.
Architektúra:
Level 0: Járműtípus (Vehicle Type)
Level 1: Iparág/Főcsoport (Industry)
Level 2: Szakma (Profession)
Level 3: Specifikus feladat/címke (Specific Tag)
Futtatás:
docker exec sf_api python3 /app/backend/scripts/seed_expertise_taxonomy.py
"""
import asyncio
import logging
from sqlalchemy import select, func, delete
from app.db.session import AsyncSessionLocal
from app.models.marketplace.service import ExpertiseTag
logger = logging.getLogger(__name__)
# ──────────────────────────────────────────────
# TELJES 4-SZINTŰ TAXONÓMIA SZÓTÁR
# ──────────────────────────────────────────────
# Formátum:
# "key": { "name_hu", "name_en", "category", "search_keywords", "description",
# "children": { ... } }
# A szintek: 0=Járműtípus, 1=Iparág, 2=Szakma, 3=Specifikus feladat
TAXONOMY = {
# ════════════════════════════════════════════
# SZEMÉLYGÉPJÁRMŰ (Level 0)
# ════════════════════════════════════════════
"szemelygepjarmu": {
"name_hu": "Személygépjármű",
"name_en": "Passenger Car",
"category": "vehicle_type",
"search_keywords": ["autó", "car", "személyautó", "passenger car", "személygépjármű"],
"description": "Személygépjárművekhez kapcsolódó szolgáltatások",
"children": {
# ─── Karbantartás, Szerviz és Javítás (Level 1) ───
"karbantartas_es_javitas": {
"name_hu": "Karbantartás, Szerviz és Javítás",
"name_en": "Maintenance, Service and Repair",
"category": "vehicle_service",
"search_keywords": ["karbantartás", "szerviz", "javítás", "maintenance", "repair"],
"description": "Gépjárművek karbantartása, szervizelése és javítása",
"children": {
"autoszerelo": {
"name_hu": "Autószerelő",
"name_en": "Car Mechanic",
"category": "mechanic",
"search_keywords": ["szerelő", "autószerelő", "mechanic", "garage"],
"description": "Személygépjárművek mechanikai javítása, karbantartása",
"children": {
"motorolaj_csere": {
"name_hu": "Motorolaj csere",
"name_en": "Oil Change",
"category": "mechanic",
"search_keywords": ["olajcsere", "motorolaj", "olaj", "oil change"],
"description": "Motorolaj és olajszűrő cseréje"
},
"vezerles_csere": {
"name_hu": "Vezérlés csere",
"name_en": "Timing Belt Replacement",
"category": "mechanic",
"search_keywords": ["vezérlés", "vezérműszíj", "timing belt", "lánc"],
"description": "Vezérműszíj vagy vezérlőlánc cseréje"
},
"fekbetet_csere": {
"name_hu": "Fékbetét csere",
"name_en": "Brake Pad Replacement",
"category": "mechanic",
"search_keywords": ["fék", "fékbetét", "brake", "fékpofa"],
"description": "Fékbetétek és fékpofák cseréje"
},
"kuplung_csere": {
"name_hu": "Kuplung csere",
"name_en": "Clutch Replacement",
"category": "mechanic",
"search_keywords": ["kuplung", "clutch", "kuplungcsere"],
"description": "Kuplung szett cseréje"
},
"turbo_felujitas": {
"name_hu": "Turbó felújítás",
"name_en": "Turbo Repair",
"category": "mechanic",
"search_keywords": ["turbó", "turbo", "feltöltő", "turbo repair"],
"description": "Turbófeltöltők javítása és felújítása"
},
"dpf_tisztitas": {
"name_hu": "DPF tisztítás",
"name_en": "DPF Cleaning",
"category": "mechanic",
"search_keywords": ["dpf", "részecskeszűrő", "diesel particulate filter"],
"description": "Dízel részecskeszűrő tisztítása és regenerálása"
},
"motordiagnosztika": {
"name_hu": "Motordiagnosztika",
"name_en": "Engine Diagnostics",
"category": "mechanic",
"search_keywords": ["diagnosztika", "motor", "hibakód", "diagnostics"],
"description": "Motorhibák diagnosztizálása számítógépes eszközökkel"
},
"klimatoltes": {
"name_hu": "Klímatöltés",
"name_en": "AC Service",
"category": "mechanic",
"search_keywords": ["klíma", "klímatöltés", "ac", "air conditioning"],
"description": "Légkondicionáló rendszer töltése és karbantartása"
},
"ozonos_klimatisztitas": {
"name_hu": "Ózonos klímatisztítás",
"name_en": "Ozone AC Cleaning",
"category": "mechanic",
"search_keywords": ["ózon", "klímatisztítás", "ozone", "ac cleaning"],
"description": "Klímarendszer ózonos fertőtlenítése"
},
"kipufogo_javitas": {
"name_hu": "Kipufogó javítás",
"name_en": "Exhaust Repair",
"category": "mechanic",
"search_keywords": ["kipufogó", "exhaust", "dob", "katalizátor"],
"description": "Kipufogórendszer javítása és hegesztése"
},
"lengescillapito_csere": {
"name_hu": "Lengéscsillapító csere",
"name_en": "Shock Absorber Replacement",
"category": "mechanic",
"search_keywords": ["lengéscsillapító", "shock", "felfüggesztés", "suspension"],
"description": "Lengéscsillapítók és felfüggesztés elemek cseréje"
}
}
},
"autovillamossag": {
"name_hu": "Autóvillamosság",
"name_en": "Auto Electrician",
"category": "electrical",
"search_keywords": ["villamosság", "elektromos", "auto electrician", "elektronika"],
"description": "Gépjármű elektromos rendszereinek javítása",
"children": {
"akkumulator_csere": {
"name_hu": "Akkumulátor csere",
"name_en": "Battery Replacement",
"category": "electrical",
"search_keywords": ["akkumulátor", "battery", "akku"],
"description": "Indítóakkumulátor cseréje"
},
"generator_felujitas": {
"name_hu": "Generátor felújítás",
"name_en": "Alternator Repair",
"category": "electrical",
"search_keywords": ["generátor", "alternator", "váltóáramú generátor"],
"description": "Generátor javítása és felújítása"
},
"onindito_javitas": {
"name_hu": "Önindító javítás",
"name_en": "Starter Motor Repair",
"category": "electrical",
"search_keywords": ["önindító", "starter", "indítómotor"],
"description": "Önindító motor javítása"
},
"hibakod_olvasas": {
"name_hu": "Hibakód olvasás",
"name_en": "DTC Reading",
"category": "electrical",
"search_keywords": ["hibakód", "dtc", "diagnosztika", "error code"],
"description": "Fedélzeti diagnosztikai hibakódok kiolvasása"
},
"immobiliser_programozas": {
"name_hu": "Immobiliser programozás",
"name_en": "Immobiliser Programming",
"category": "electrical",
"search_keywords": ["immobiliser", "immobilizer", "kulcs", "key programming"],
"description": "Indításgátló rendszer programozása és kulcsmásolás"
},
"tolatoradar_beszereles": {
"name_hu": "Tolatóradar beszerelés",
"name_en": "Parking Sensor Installation",
"category": "electrical",
"search_keywords": ["tolatóradar", "parking sensor", "parktronic"],
"description": "Tolatóradar rendszerek beszerelése"
}
}
},
"gumiszerviz": {
"name_hu": "Gumiszerviz",
"name_en": "Tire Service",
"category": "tire",
"search_keywords": ["gumi", "gumis", "tire", "tyre", "abroncs", "kerék"],
"description": "Gumiabroncsok cseréje, javítása",
"children": {
"gumiabroncs_csere": {
"name_hu": "Gumiabroncs csere",
"name_en": "Tire Change",
"category": "tire",
"search_keywords": ["gumicsere", "tire change", "abroncs csere"],
"description": "Szezonális gumiabroncs csere"
},
"centrirozas": {
"name_hu": "Centrírozás",
"name_en": "Wheel Balancing",
"category": "tire",
"search_keywords": ["centrírozás", "balancing", "kerék kiegyensúlyozás"],
"description": "Kerekek centrírozása és kiegyensúlyozása"
},
"defektjavitas": {
"name_hu": "Defektjavítás",
"name_en": "Puncture Repair",
"category": "tire",
"search_keywords": ["defekt", "puncture", "gumijavítás"],
"description": "Gumiabroncs defekt javítása"
},
"alufelni_gorgozes": {
"name_hu": "Alufelni görgőzés",
"name_en": "Alloy Wheel Straightening",
"category": "tire",
"search_keywords": ["alufelni", "görgőzés", "alloy wheel", "felni javítás"],
"description": "Alumínium felnik görgőzése és javítása"
},
"tpms_szenzor_tanitas": {
"name_hu": "TPMS szenzor tanítás",
"name_en": "TPMS Sensor Programming",
"category": "tire",
"search_keywords": ["tpms", "szenzor", "guminyomás", "tire pressure"],
"description": "Guminyomás monitor rendszer szenzorainak tanítása"
}
}
},
"karosszeria_javitas": {
"name_hu": "Karosszéria javítás",
"name_en": "Body Repair",
"category": "body",
"search_keywords": ["karosszéria", "lakatos", "bodyshop", "kasztni"],
"description": "Karosszéria javítás és lakatolás",
"children": {
"horpadasjavitas_pdr": {
"name_hu": "Horpadásjavítás (PDR)",
"name_en": "Paintless Dent Repair (PDR)",
"category": "body",
"search_keywords": ["horpadás", "pdr", "dent repair", "horpadásjavítás"],
"description": "Fényezés nélküli horpadásjavítás"
},
"jegkar_javitas": {
"name_hu": "Jégkár javítás",
"name_en": "Hail Damage Repair",
"category": "body",
"search_keywords": ["jégkár", "hail", "jégeső", "hail damage"],
"description": "Jégeső okozta károk javítása"
},
"alvazvedelem": {
"name_hu": "Alvázvédelem",
"name_en": "Underbody Protection",
"category": "body",
"search_keywords": ["alváz", "alvázvédelem", "underbody", "alvázkezelés"],
"description": "Alvázvédelem és alvázkezelés"
},
"szelvedo_csere": {
"name_hu": "Szélvédő csere",
"name_en": "Windshield Replacement",
"category": "body",
"search_keywords": ["szélvédő", "windshield", "ablak", "üveg"],
"description": "Szélvédő és autóüveg csere"
},
"muanyag_lokharito_hegesztes": {
"name_hu": "Műanyag lökhárító hegesztés",
"name_en": "Plastic Bumper Welding",
"category": "body",
"search_keywords": ["lökhárító", "bumper", "műanyag hegesztés", "bumper repair"],
"description": "Műanyag lökhárítók hegesztése és javítása"
}
}
},
"fenyezes": {
"name_hu": "Fényezés",
"name_en": "Painting",
"category": "paint",
"search_keywords": ["fényező", "fényezés", "painter", "lakkozás"],
"description": "Gépjármű fényezés és lakkozás",
"children": {
"elemfenyezes": {
"name_hu": "Elemfényezés",
"name_en": "Panel Painting",
"category": "paint",
"search_keywords": ["elemfényezés", "panel painting", "részfényezés"],
"description": "Egyedi karosszériaelemek fényezése"
},
"teljes_polirozas": {
"name_hu": "Teljes polírozás",
"name_en": "Full Polishing",
"category": "paint",
"search_keywords": ["polírozás", "polishing", "fényezés helyreállítás"],
"description": "Teljes gépjármű polírozás és fényezés helyreállítás"
},
"fényszóró_polírozás": {
"name_hu": "Fényszóró polírozás",
"name_en": "Headlight Polishing",
"category": "paint",
"search_keywords": ["fényszóró", "headlight", "polírozás", "homályosítás"],
"description": "Műanyag fényszórók polírozása és átlátszóság helyreállítás"
}
}
},
"sebessegvalto_specialista": {
"name_hu": "Sebességváltó specialista",
"name_en": "Transmission Specialist",
"category": "transmission",
"search_keywords": ["váltó", "sebességváltó", "transmission", "dsg"],
"description": "Sebességváltók javítása és karbantartása",
"children": {
"automata_valto_olajcsere": {
"name_hu": "Automata váltó olajcsere",
"name_en": "Automatic Transmission Fluid Change",
"category": "transmission",
"search_keywords": ["automata váltó", "atf", "olajcsere", "transmission fluid"],
"description": "Automata sebességváltó olajcseréje"
},
"kettostomegu_lendkerék_csere": {
"name_hu": "Kettőstömegű lendkerék csere",
"name_en": "Dual Mass Flywheel Replacement",
"category": "transmission",
"search_keywords": ["dmf", "lendkerék", "dual mass", "kettőstömegű"],
"description": "Kettőstömegű lendkerék (DMF) cseréje"
},
"dsg_javitas": {
"name_hu": "DSG javítás",
"name_en": "DSG Repair",
"category": "transmission",
"search_keywords": ["dsg", "dsg javítás", "dsg váltó", "direct shift gearbox"],
"description": "DSG sebességváltók javítása és szervize"
}
}
}
}
},
# ─── Járműmosó és Kozmetika (Level 1) ───
"jarmumoso_es_kozmetika": {
"name_hu": "Járműmosó és Kozmetika",
"name_en": "Car Wash and Detailing",
"category": "detailing",
"search_keywords": ["mosó", "kozmetika", "detailing", "mosás", "takarítás"],
"description": "Gépjárműmosás, takarítás és kozmetikai szolgáltatások",
"children": {
"kezi_autamoso": {
"name_hu": "Kézi Autómosó",
"name_en": "Hand Car Wash",
"category": "detailing",
"search_keywords": ["kézi mosás", "hand wash", "autómosó"],
"description": "Kézi erővel végzett autómosás és ápolás",
"children": {
"kulso_mosas": {
"name_hu": "Külső mosás",
"name_en": "Exterior Wash",
"category": "detailing",
"search_keywords": ["külső mosás", "exterior wash", "autómosás"],
"description": "Gépjármű külső mosása"
},
"belso_takaritas": {
"name_hu": "Belső takarítás",
"name_en": "Interior Cleaning",
"category": "detailing",
"search_keywords": ["belső", "interior", "takarítás", "porszívózás"],
"description": "Gépjármű belső terének takarítása"
},
"karpi_tisztitas": {
"name_hu": "Kárpittisztítás",
"name_en": "Upholstery Cleaning",
"category": "detailing",
"search_keywords": ["kárpit", "upholstery", "ülés", "seat cleaning"],
"description": "Ülések és kárpitok mélytisztítása"
},
"borapolas": {
"name_hu": "Bőrápolás",
"name_en": "Leather Care",
"category": "detailing",
"search_keywords": ["bőr", "leather", "bőrápolás", "bőrtisztítás"],
"description": "Bőrülések ápolása és tisztítása"
},
"keramia_bevonat": {
"name_hu": "Kerámia bevonat",
"name_en": "Ceramic Coating",
"category": "detailing",
"search_keywords": ["kerámia", "ceramic coating", "bevonat", "nano"],
"description": "Kerámia nano-bevonat felvitele a karosszériára"
}
}
},
"onkiszolgalo_moso": {
"name_hu": "Önkiszolgáló mosó",
"name_en": "Self-Service Car Wash",
"category": "detailing",
"search_keywords": ["önkiszolgáló", "self-service", "mosó", "automata mosó"],
"description": "Önkiszolgáló autómosó állomások"
},
"gepi_kefes_moso": {
"name_hu": "Gépi / Kefés mosó",
"name_en": "Automatic Car Wash",
"category": "detailing",
"search_keywords": ["gépi mosó", "kefés mosó", "automata", "automatic wash"],
"description": "Automata kefés gépjárműmosók"
}
}
},
# ─── Mentés, Szállítás és Asszisztencia (Level 1) ───
"mentes_szallitas_asszisztencia": {
"name_hu": "Mentés, Szállítás és Asszisztencia",
"name_en": "Towing, Transport and Assistance",
"category": "roadside",
"search_keywords": ["mentés", "szállítás", "asszisztencia", "tow", "roadside"],
"description": "Autómentés, szállítás és úti segítségnyújtás",
"children": {
"automento": {
"name_hu": "Autómentő",
"name_en": "Tow Truck Service",
"category": "roadside",
"search_keywords": ["mentő", "autómentő", "tow", "roadside assistance"],
"description": "Autómentés és útszéli segítségnyújtás",
"children": {
"darus_mentes": {
"name_hu": "Darus mentés",
"name_en": "Crane Recovery",
"category": "roadside",
"search_keywords": ["daru", "crane", "mentés", "kiemelés"],
"description": "Darus gépjármű kiemelés és mentés"
},
"melygarazsbol_mentes": {
"name_hu": "Mélygarázsból mentés",
"name_en": "Underground Garage Recovery",
"category": "roadside",
"search_keywords": ["mélygarázs", "underground", "garázs", "mentés"],
"description": "Mélygarázsokból történő gépjármű mentés"
},
"felretankolas_szivas": {
"name_hu": "Félretankolás szívás",
"name_en": "Wrong Fuel Drain",
"category": "roadside",
"search_keywords": ["félretankolás", "rossz üzemanyag", "szívás", "wrong fuel"],
"description": "Rossz üzemanyaggal tankolt jármű üzemanyagának eltávolítása"
}
}
},
"mobil_gumiszerviz": {
"name_hu": "Mobil Gumiszerviz",
"name_en": "Mobile Tire Service",
"category": "roadside",
"search_keywords": ["mobil gumis", "mobile tire", "helyszíni gumicsere"],
"description": "Helyszíni gumiszerviz szolgáltatás"
},
"autoszallitas_trelerek": {
"name_hu": "Autószállítás / Tréler",
"name_en": "Car Transport / Trailer",
"category": "roadside",
"search_keywords": ["szállítás", "tréler", "trailer", "autószállítás", "transport"],
"description": "Gépjárművek szállítása trélerrel",
"children": {
"nemzetkozi_autoszallitas": {
"name_hu": "Nemzetközi autószállítás",
"name_en": "International Car Transport",
"category": "roadside",
"search_keywords": ["nemzetközi", "international", "export", "import", "szállítás"],
"description": "Nemzetközi gépjármű szállítás"
}
}
}
}
},
# ─── Hatósági Vizsgáztatás (Level 1) ───
"hatosagi_vizsgaztatas": {
"name_hu": "Hatósági Vizsgáztatás",
"name_en": "Official Inspection",
"category": "inspection",
"search_keywords": ["vizsga", "műszaki", "inspection", "hatósági", "vizsgáztatás"],
"description": "Hatósági gépjármű vizsgáztatás",
"children": {
"muszaki_vizsgaallomas": {
"name_hu": "Műszaki vizsgaállomás",
"name_en": "MOT Inspection Station",
"category": "inspection",
"search_keywords": ["műszaki vizsga", "MOT", "inspection", "vizsgaállomás"],
"description": "Időszakos műszaki vizsgáztatás"
},
"eredetisegvizsgalat": {
"name_hu": "Eredetiségvizsgálat",
"name_en": "Vehicle Authenticity Check",
"category": "inspection",
"search_keywords": ["eredetiség", "authenticity", "kilométer", "származás"],
"description": "Gépjármű eredetiségének vizsgálata"
}
}
},
# ─── Út menti / Kényelmi Szolgáltatások (Level 1) ───
"ut_menti_kenyelmi_szolgaltatasok": {
"name_hu": "Út menti / Kényelmi Szolgáltatások",
"name_en": "Roadside Convenience Services",
"category": "convenience",
"search_keywords": ["étterem", "szállás", "parkoló", "motel", "convenience"],
"description": "Út menti kényelmi és vendéglátó szolgáltatások",
"children": {
"etterem_bufe": {
"name_hu": "Étterem / Büfé",
"name_en": "Restaurant / Snack Bar",
"category": "convenience",
"search_keywords": ["étterem", "büfé", "restaurant", "snack", "vendéglátás"],
"description": "Út menti éttermek és büfék"
},
"szallashely_motel": {
"name_hu": "Szálláshely / Motel",
"name_en": "Accommodation / Motel",
"category": "convenience",
"search_keywords": ["szállás", "motel", "hotel", "accommodation", "pihenő"],
"description": "Út menti szálláshelyek és motelek"
},
"orzott_parkolo": {
"name_hu": "Őrzött parkoló",
"name_en": "Secured Parking",
"category": "convenience",
"search_keywords": ["parkoló", "parking", "őrzött", "garázs", "secured"],
"description": "Őrzött gépjármű parkolók"
}
}
}
}
},
# ════════════════════════════════════════════
# MOTORKERÉKPÁR (Level 0)
# ════════════════════════════════════════════
"motorkerekpar": {
"name_hu": "Motorkerékpár",
"name_en": "Motorcycle",
"category": "vehicle_type",
"search_keywords": ["motor", "motorcycle", "robogó", "scooter", "motorkerékpár"],
"description": "Motorkerékpárokhoz kapcsolódó szolgáltatások",
"children": {
"motor_karbantartas_es_javitas": {
"name_hu": "Karbantartás és Javítás",
"name_en": "Maintenance and Repair",
"category": "vehicle_service",
"search_keywords": ["motor szerelés", "motor javítás", "motorcycle repair"],
"description": "Motorkerékpárok karbantartása és javítása",
"children": {
"motor_szerelo": {
"name_hu": "Motorkerékpár szerelő",
"name_en": "Motorcycle Mechanic",
"category": "mechanic",
"search_keywords": ["motor szerelő", "motorcycle mechanic", "robogó szerelő"],
"description": "Motorkerékpárok és robogók mechanikai javítása",
"children": {
"motor_olajcsere": {
"name_hu": "Motor olajcsere",
"name_en": "Motorcycle Oil Change",
"category": "mechanic",
"search_keywords": ["motor olaj", "motorcycle oil", "olajcsere"],
"description": "Motorkerékpár motorolaj cseréje"
},
"motor_lanc_csere": {
"name_hu": "Lánc csere",
"name_en": "Chain Replacement",
"category": "mechanic",
"search_keywords": ["lánc", "chain", "lánckészlet", "motor lánc"],
"description": "Motorkerékpár lánc és lánckerekek cseréje"
},
"motor_gumicsere": {
"name_hu": "Motor gumicsere",
"name_en": "Motorcycle Tire Change",
"category": "tire",
"search_keywords": ["motor gumi", "motorcycle tire", "abroncs"],
"description": "Motorkerékpár gumiabroncsok cseréje"
}
}
},
"motor_villamossag": {
"name_hu": "Motor villamosság",
"name_en": "Motorcycle Electrician",
"category": "electrical",
"search_keywords": ["motor elektromos", "motorcycle electrical", "akkumulátor"],
"description": "Motorkerékpárok elektromos rendszereinek javítása"
}
}
},
"motor_kiegeszitok": {
"name_hu": "Kiegészítők és Tuning",
"name_en": "Accessories and Tuning",
"category": "accessories",
"search_keywords": ["motor kiegészítő", "tuning", "motorcycle accessories", "kipufogó"],
"description": "Motorkerékpár kiegészítők és tuning szolgáltatások",
"children": {
"motor_kiegeszito_szereles": {
"name_hu": "Kiegészítők beszerelése",
"name_en": "Accessory Installation",
"category": "accessories",
"search_keywords": ["kiegészítő", "topcase", "oldaltáska", "accessory"],
"description": "Motorkerékpár kiegészítők beszerelése"
}
}
}
}
},
# ════════════════════════════════════════════
# KISHASZONJÁRMŰ (Level 0)
# ════════════════════════════════════════════
"kishaszonjarmu": {
"name_hu": "Kishaszonjármű",
"name_en": "Light Commercial Vehicle (LCV)",
"category": "vehicle_type",
"search_keywords": ["kishaszon", "lcv", "furgon", "van", "kisteher", "pickup"],
"description": "Kishaszonjárművekhez kapcsolódó szolgáltatások",
"children": {
"lcv_karbantartas": {
"name_hu": "Karbantartás és Javítás",
"name_en": "Maintenance and Repair",
"category": "vehicle_service",
"search_keywords": ["furgon szerelés", "lcv repair", "kisteher javítás"],
"description": "Kishaszonjárművek karbantartása és javítása",
"children": {
"lcv_szerelo": {
"name_hu": "Kishaszonjármű szerelő",
"name_en": "LCV Mechanic",
"category": "mechanic",
"search_keywords": ["furgon szerelő", "lcv mechanic", "kisteher szerelő"],
"description": "Furgonok és kisteher járművek mechanikai javítása"
},
"lcv_gumiszerviz": {
"name_hu": "LCV Gumiszerviz",
"name_en": "LCV Tire Service",
"category": "tire",
"search_keywords": ["furgon gumi", "lcv tire", "kisteher gumi"],
"description": "Kishaszonjármű gumiabroncsok cseréje és javítása"
}
}
},
"lcv_moso": {
"name_hu": "Nagyhaszonjármű mosó",
"name_en": "LCV / Truck Wash",
"category": "detailing",
"search_keywords": ["furgon mosó", "lcv wash", "kisteher mosás", "nagy mosó"],
"description": "Kishaszonjárművek és kisteher járművek mosása"
}
}
},
# ════════════════════════════════════════════
# NAGYHASZONJÁRMŰ (KAMION) (Level 0)
# ════════════════════════════════════════════
"nagyhaszonjarmu_kamion": {
"name_hu": "Nagyhaszonjármű (Kamion)",
"name_en": "Heavy Goods Vehicle (HGV / Truck)",
"category": "vehicle_type",
"search_keywords": ["kamion", "truck", "hgv", "teherautó", "nyerges", "nehéz"],
"description": "Nagyhaszonjárművekhez és kamionokhoz kapcsolódó szolgáltatások",
"children": {
"kamion_karbantartas": {
"name_hu": "Karbantartás és Javítás",
"name_en": "Maintenance and Repair",
"category": "vehicle_service",
"search_keywords": ["kamion szerelés", "truck repair", "hgv maintenance"],
"description": "Kamionok és nehézgépjárművek karbantartása és javítása",
"children": {
"kamion_szerelo": {
"name_hu": "Kamionszerelő",
"name_en": "Truck Mechanic",
"category": "mechanic",
"search_keywords": ["kamion szerelő", "truck mechanic", "hgv szerelő"],
"description": "Kamionok mechanikai javítása és karbantartása"
},
"kamion_diagnosztika": {
"name_hu": "Kamion diagnosztika",
"name_en": "Truck Diagnostics",
"category": "mechanic",
"search_keywords": ["kamion diagnosztika", "truck diagnostics", "hibakód"],
"description": "Kamionok fedélzeti diagnosztikája"
},
"kamion_fekrendszer": {
"name_hu": "Fékrendszer szerviz",
"name_en": "Brake System Service",
"category": "mechanic",
"search_keywords": ["kamion fék", "truck brake", "fékrendszer", "légfék"],
"description": "Kamionok légfék rendszerének karbantartása"
}
}
},
"kamion_gumiszerviz": {
"name_hu": "Kamion Gumiszerviz",
"name_en": "Truck Tire Service",
"category": "tire",
"search_keywords": ["kamion gumi", "truck tire", "hgv tire", "abroncs"],
"description": "Kamion gumiabroncsok cseréje és javítása"
},
"kamion_moso": {
"name_hu": "Nagyhaszonjármű mosó",
"name_en": "Truck Wash",
"category": "detailing",
"search_keywords": ["kamion mosó", "truck wash", "nagy mosó", "teherautó mosás"],
"description": "Kamionok és nehézgépjárművek mosása"
},
"tachograf_szerviz": {
"name_hu": "Tachográf szerviz",
"name_en": "Tachograph Service",
"category": "inspection",
"search_keywords": ["tachográf", "tachograph", "menetíró", "digitális tachográf"],
"description": "Digitális és analóg tachográfok karbantartása és hitelesítése",
"children": {
"tachograf_kalibralas": {
"name_hu": "Tachográf kalibrálás",
"name_en": "Tachograph Calibration",
"category": "inspection",
"search_keywords": ["kalibrálás", "calibration", "tachográf hitelesítés"],
"description": "Tachográf rendszerek időszakos kalibrálása"
},
"tachograf_illesztes": {
"name_hu": "Tachográf illesztés",
"name_en": "Tachograph Fitting",
"category": "inspection",
"search_keywords": ["tachográf szerelés", "tachograph installation", "illesztés"],
"description": "Tachográf készülékek beszerelése és cseréje"
}
}
},
"kamion_szallitas": {
"name_hu": "Kamionos szállítás",
"name_en": "Truck Transport",
"category": "roadside",
"search_keywords": ["kamion szállítás", "truck transport", "fuvarozás", "teherszállítás"],
"description": "Kamionos áru- és teherszállítási szolgáltatások"
}
}
},
# ════════════════════════════════════════════
# MUNKAGÉP / TRAKTOR (Level 0)
# ════════════════════════════════════════════
"munkagep_traktor": {
"name_hu": "Munkagép / Traktor",
"name_en": "Agricultural / Construction Machinery",
"category": "vehicle_type",
"search_keywords": ["traktor", "tractor", "munkagép", "mezőgazdasági", "építőipari"],
"description": "Mezőgazdasági és építőipari munkagépek szolgáltatásai",
"children": {
"munkagep_karbantartas": {
"name_hu": "Karbantartás és Javítás",
"name_en": "Maintenance and Repair",
"category": "vehicle_service",
"search_keywords": ["traktor szerelés", "tractor repair", "munkagép javítás"],
"description": "Mezőgazdasági és építőipari gépek karbantartása",
"children": {
"traktor_szerelo": {
"name_hu": "Traktor szerelő",
"name_en": "Tractor Mechanic",
"category": "mechanic",
"search_keywords": ["traktor szerelő", "tractor mechanic", "mezőgazdasági gép"],
"description": "Traktorok és mezőgazdasági gépek javítása"
},
"epitoipari_gep_szerelo": {
"name_hu": "Építőipari gép szerelő",
"name_en": "Construction Machinery Mechanic",
"category": "mechanic",
"search_keywords": ["építőipari gép", "construction", "kotró", "dózer"],
"description": "Építőipari gépek (kotrók, dózerok) javítása"
},
"hidraulika_szerviz": {
"name_hu": "Hidraulika szerviz",
"name_en": "Hydraulic Service",
"category": "mechanic",
"search_keywords": ["hidraulika", "hydraulic", "munkahenger", "tömítés"],
"description": "Hidraulikus rendszerek javítása és karbantartása"
}
}
}
}
},
# ════════════════════════════════════════════
# PÓTKOCSI / UTÁNFUTÓ (Level 0)
# ════════════════════════════════════════════
"potkocsi_utanfuto": {
"name_hu": "Pótkocsi / Utánfutó",
"name_en": "Trailer",
"category": "vehicle_type",
"search_keywords": ["pótkocsi", "utánfutó", "trailer", "félpótkocsi"],
"description": "Pótkocsikhoz és utánfutókhoz kapcsolódó szolgáltatások",
"children": {
"potkocsi_karbantartas": {
"name_hu": "Karbantartás és Javítás",
"name_en": "Maintenance and Repair",
"category": "vehicle_service",
"search_keywords": ["pótkocsi szerelés", "trailer repair", "utánfutó javítás"],
"description": "Pótkocsik és utánfutók karbantartása",
"children": {
"potkocsi_szerelo": {
"name_hu": "Pótkocsi szerelő",
"name_en": "Trailer Mechanic",
"category": "mechanic",
"search_keywords": ["pótkocsi szerelő", "trailer mechanic", "utánfutó szerelő"],
"description": "Pótkocsik és utánfutók mechanikai javítása"
},
"potkocsi_fek_javitas": {
"name_hu": "Pótkocsi fék javítás",
"name_en": "Trailer Brake Repair",
"category": "mechanic",
"search_keywords": ["pótkocsi fék", "trailer brake", "utánfutó fék"],
"description": "Pótkocsik fékrendszerének javítása"
}
}
},
"potkocsi_vizsga": {
"name_hu": "Pótkocsi vizsgáztatás",
"name_en": "Trailer Inspection",
"category": "inspection",
"search_keywords": ["pótkocsi vizsga", "trailer inspection", "utánfutó műszaki"],
"description": "Pótkocsik időszakos műszaki vizsgáztatása"
}
}
},
# ════════════════════════════════════════════
# BUSZ (Level 0)
# ════════════════════════════════════════════
"busz": {
"name_hu": "Busz",
"name_en": "Bus / Coach",
"category": "vehicle_type",
"search_keywords": ["busz", "bus", "coach", "autóbusz", "távolsági busz"],
"description": "Buszokhoz és autóbuszokhoz kapcsolódó szolgáltatások",
"children": {
"busz_karbantartas": {
"name_hu": "Karbantartás és Javítás",
"name_en": "Maintenance and Repair",
"category": "vehicle_service",
"search_keywords": ["busz szerelés", "bus repair", "autóbusz javítás"],
"description": "Buszok és autóbuszok karbantartása",
"children": {
"busz_szerelo": {
"name_hu": "Buszszerelő",
"name_en": "Bus Mechanic",
"category": "mechanic",
"search_keywords": ["busz szerelő", "bus mechanic", "autóbusz szerelő"],
"description": "Buszok mechanikai javítása és karbantartása"
},
"busz_diagnosztika": {
"name_hu": "Busz diagnosztika",
"name_en": "Bus Diagnostics",
"category": "mechanic",
"search_keywords": ["busz diagnosztika", "bus diagnostics", "fedélzeti rendszer"],
"description": "Buszok fedélzeti rendszereinek diagnosztikája"
}
}
},
"busz_takaritas": {
"name_hu": "Busz takarítás",
"name_en": "Bus Cleaning",
"category": "detailing",
"search_keywords": ["busz takarítás", "bus cleaning", "autóbusz mosás"],
"description": "Buszok belső és külső takarítása"
}
}
},
# ════════════════════════════════════════════
# LAKÓAUTÓ / LAKÓKOCSI (Level 0)
# ════════════════════════════════════════════
"lakoauto_lakokocsi": {
"name_hu": "Lakóautó / Lakókocsi",
"name_en": "Motorhome / Caravan",
"category": "vehicle_type",
"search_keywords": ["lakóautó", "lakókocsi", "motorhome", "caravan", "camper"],
"description": "Lakóautókhoz és lakókocsikhoz kapcsolódó szolgáltatások",
"children": {
"lakokocsi_karbantartas": {
"name_hu": "Karbantartás és Javítás",
"name_en": "Maintenance and Repair",
"category": "vehicle_service",
"search_keywords": ["lakóautó szerelés", "motorhome repair", "lakókocsi javítás"],
"description": "Lakóautók és lakókocsik karbantartása",
"children": {
"lakoauto_szerelo": {
"name_hu": "Lakóautó szerelő",
"name_en": "Motorhome Mechanic",
"category": "mechanic",
"search_keywords": ["lakóautó szerelő", "motorhome mechanic", "camper szerelő"],
"description": "Lakóautók gépészeti javítása"
},
"lakokocsi_karosszeria": {
"name_hu": "Lakókocsi karosszéria javítás",
"name_en": "Caravan Body Repair",
"category": "body",
"search_keywords": ["lakókocsi javítás", "caravan repair", "lakóautó karosszéria"],
"description": "Lakókocsik és lakóautók karosszéria javítása"
}
}
},
"lakoauto_szerelveny": {
"name_hu": "Lakóautó szerelvény szerviz",
"name_en": "Motorhome Fitting Service",
"category": "accessories",
"search_keywords": ["szerelvény", "fitting", "lakóautó felszerelés", "camper átalakítás"],
"description": "Lakóautók belső szerelvényeinek karbantartása"
}
}
}
}
# ──────────────────────────────────────────────
# SEED LOGIC
# ──────────────────────────────────────────────
async def _flatten_and_insert(db, parent_id: int | None, level: int, path_prefix: str, data: dict, parent_key: str | None):
"""
Rekurzívan bejárja a TAXONOMY szótárat, és beszúrja a rekordokat.
Visszaadja a beszúrt rekordok számát.
"""
inserted = 0
for key, node in data.items():
# Path építése: root esetén csak a key, egyébként path_prefix/key
if level == 0:
path = key
else:
path = f"{path_prefix}/{key}" if path_prefix else key
tag = ExpertiseTag(
key=key,
name_hu=node["name_hu"],
name_en=node["name_en"],
category=node.get("category", ""),
search_keywords=node.get("search_keywords", []),
description=node.get("description", ""),
is_official=True,
level=level,
parent_id=parent_id,
path=path,
discovery_points=10,
usage_count=0,
)
db.add(tag)
inserted += 1
# Rekurzív gyermekek feldolgozása
children = node.get("children", {})
if children:
# Flush kell, hogy meglegyen az ID a parent_id-hoz
await db.flush()
child_inserted = await _flatten_and_insert(
db=db,
parent_id=tag.id,
level=level + 1,
path_prefix=path,
data=children,
parent_key=key,
)
inserted += child_inserted
return inserted
async def seed_expertise_taxonomy():
"""Feltölti az expertise_tags táblát a teljes 4-szintű taxonómiával."""
async with AsyncSessionLocal() as db:
try:
# 1. Meglévő hivatalos rekordok törlése (is_official=True)
# A felhasználói (is_official=False) címkék MEGMARADNAK!
print("🗑️ Meglévő hivatalos (is_official=True) rekordok törlése...")
stmt_del = delete(ExpertiseTag).where(ExpertiseTag.is_official == True)
result = await db.execute(stmt_del)
deleted_count = result.rowcount
print(f" Törölve: {deleted_count} rekord")
await db.commit()
# 2. Taxonómia beszúrása
print("🌱 Taxonómia beszúrása...")
total_inserted = await _flatten_and_insert(
db=db,
parent_id=None,
level=0,
path_prefix="",
data=TAXONOMY,
parent_key=None,
)
await db.commit()
print(f"✅ Sikeresen beszúrva {total_inserted} kategória.")
# 3. Ellenőrzés
result = await db.execute(select(func.count(ExpertiseTag.id)))
final_count = result.scalar()
print(f"📊 Összes rekord az expertise_tags táblában: {final_count}")
# 4. Statisztika szintenként
for level in range(4):
result = await db.execute(
select(func.count(ExpertiseTag.id)).where(
ExpertiseTag.level == level,
ExpertiseTag.is_official == True,
)
)
count = result.scalar()
print(f" Level {level}: {count} rekord")
except Exception as e:
await db.rollback()
logger.error(f"Hiba a seed-elés során: {e}", exc_info=True)
print(f"❌ Hiba: {e}")
raise
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
asyncio.run(seed_expertise_taxonomy())