szervíz rögzítés külső szemmel

This commit is contained in:
Roo
2026-06-18 00:04:42 +00:00
parent 127b130401
commit 404d04c56b
10 changed files with 524 additions and 14 deletions

View File

@@ -31,6 +31,112 @@ logger = logging.getLogger(__name__)
# "children": { ... } }
# A szintek: 0=Járműtípus, 1=Iparág, 2=Szakma, 3=Specifikus feladat
# ──────────────────────────────────────────────
# UNIVERZÁLIS (JÁRMŰFÜGGETLEN) LEVEL 1 KATEGÓRIÁK
# ──────────────────────────────────────────────
# Ezek a kategóriák nem tartoznak egyetlen járműtípushoz sem (parent_id=None).
# A frontend "Univerzális Szolgáltatások" blokkban jelennek meg.
# Példák: Benzinkút, Étterem, Szállás
UNIVERSAL_CATEGORIES = {
"uzemanyag_toltoallomas": {
"name_hu": "Üzemanyag és Töltőállomás",
"name_en": "Fuel and Charging Station",
"category": "fuel_station",
"search_keywords": ["benzin", "dízel", "üzemanyag", "töltőállomás", "elektromos töltés", "fuel", "charging", "gas station"],
"description": "Üzemanyagtöltő állomások és elektromos jármű töltőállomások",
"children": {
"benzinkut": {
"name_hu": "Benzinkút",
"name_en": "Gas Station",
"category": "fuel_station",
"search_keywords": ["benzin", "dízel", "üzemanyag", "benzinkút", "töltőállomás", "gas station", "fuel", "petrol"],
"description": "Hagyományos üzemanyagtöltő állomások benzinnel, dízel üzemanyaggal",
},
"elektromos_toltoallomas": {
"name_hu": "Elektromos Töltőállomás",
"name_en": "EV Charging Station",
"category": "ev_charging",
"search_keywords": ["elektromos töltés", "töltőállomás", "EV charging", "electric car charging", "elektromos autó"],
"description": "Elektromos járművek töltőállomásai",
},
},
},
"etel_ital": {
"name_hu": "Étel és Ital",
"name_en": "Food and Drink",
"category": "food_drink",
"search_keywords": ["étterem", "büfé", "kávézó", "gyorsétterem", "vendéglő", "restaurant", "cafe", "food"],
"description": "Étterem, büfé, kávézó és egyéb vendéglátó egységek",
"children": {
"etterem": {
"name_hu": "Étterem",
"name_en": "Restaurant",
"category": "restaurant",
"search_keywords": ["étterem", "vendéglő", "restaurant", "fine dining", "étkezés"],
"description": "Étterem és vendéglátó egységek",
},
"gyorsetterem_bufe": {
"name_hu": "Gyorsétterem / Büfé",
"name_en": "Fast Food / Cafeteria",
"category": "fast_food",
"search_keywords": ["gyorsétterem", "büfé", "kávézó", "fast food", "cafe", "snack"],
"description": "Gyorséttermek, büfék és kávézók",
},
},
},
"szallas": {
"name_hu": "Szállás",
"name_en": "Accommodation",
"category": "accommodation",
"search_keywords": ["szállás", "motel", "hotel", "panzió", "vendégház", "accommodation", "hotel", "motel"],
"description": "Szálláshelyek, motelek, hotelek és panziók",
"children": {
"hotel": {
"name_hu": "Hotel",
"name_en": "Hotel",
"category": "hotel",
"search_keywords": ["hotel", "szálloda", "accommodation", "hotel"],
"description": "Hotelek és szállodák",
},
"motel_panzio": {
"name_hu": "Motel / Panzió",
"name_en": "Motel / Guesthouse",
"category": "motel",
"search_keywords": ["motel", "panzió", "vendégház", "guesthouse", "motel"],
"description": "Motelek, panziók és vendégházak",
},
},
},
"orzes_parkolas": {
"name_hu": "Őrzés és Parkolás",
"name_en": "Security and Parking",
"category": "parking",
"search_keywords": ["parkoló", "őrzött parkoló", "garázs", "parking", "garage"],
"description": "Őrzött parkolók, garázsok és parkolási szolgáltatások",
"children": {
"uni_orzott_parkolo": {
"name_hu": "Őrzött Parkoló",
"name_en": "Secured Parking",
"category": "secured_parking",
"search_keywords": ["őrzött parkoló", "parkoló", "secured parking", "parking lot"],
"description": "Őrzött parkolók és parkolóházak",
},
"uni_garazs": {
"name_hu": "Garázs",
"name_en": "Garage",
"category": "garage",
"search_keywords": ["garázs", "garage", "tároló", "storage"],
"description": "Garázsok és járműtárolók",
},
},
},
}
# 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)
@@ -983,12 +1089,50 @@ async def seed_expertise_taxonomy():
await db.commit()
print(f"✅ Sikeresen beszúrva {total_inserted} kategória.")
# 3. Ellenőrzés
# 3. Univerzális (járműfüggetlen) Level 1 kategóriák beszúrása
print("🌱 Univerzális (járműfüggetlen) Level 1 kategóriák beszúrása...")
universal_inserted = 0
for key, node in UNIVERSAL_CATEGORIES.items():
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=1,
parent_id=None,
path=key,
discovery_points=10,
usage_count=0,
)
db.add(tag)
universal_inserted += 1
# Gyermekek (Level 2) rekurzív feldolgozása
children = node.get("children", {})
if children:
await db.flush()
child_inserted = await _flatten_and_insert(
db=db,
parent_id=tag.id,
level=2,
path_prefix=key,
data=children,
parent_key=key,
)
universal_inserted += child_inserted
await db.commit()
print(f"✅ Sikeresen beszúrva {universal_inserted} univerzális kategória (Level 1 + Level 2 gyermekek).")
# 4. 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
# 5. Statisztika szintenként
for level in range(4):
result = await db.execute(
select(func.count(ExpertiseTag.id)).where(