STABLE: Final schema sync, optimized gitignore

This commit is contained in:
Kincses
2026-02-26 08:19:25 +01:00
parent 893f39fa15
commit 505543330a
203 changed files with 11590 additions and 9542 deletions

View File

@@ -1,46 +1,74 @@
# /opt/docker/dev/service_finder/backend/app/seed_honda.py
import asyncio
from sqlalchemy import text
from app.db.session import SessionLocal
import logging
from sqlalchemy import select
from app.database import AsyncSessionLocal
from app.models.asset import AssetCatalog
from app.models.staged_data import DiscoveryParameter
async def seed():
async with SessionLocal() as db:
print("🚀 Honda adatok betöltése...")
# 1. Kategóriák (Autó, Motor) - Sima idézőjelekkel a SQL-ben
await db.execute(text("""
INSERT INTO data.vehicle_categories (name, slug)
VALUES (\u0027Személyautó\u0027, \u0027car\u0027), (\u0027Motorkerékpár\u0027, \u0027motorcycle\u0027)
ON CONFLICT (slug) DO NOTHING
"""))
# Logolás beállítása
logging.basicConfig(level=logging.INFO, format='%(asctime)s [%(levelname)s] Sentinel-Seed: %(message)s')
logger = logging.getLogger("Honda-Seeder")
# 2. Márka: Honda
res = await db.execute(text("""
INSERT INTO data.vehicle_brands (name, slug, country_code)
VALUES (\u0027Honda\u0027, \u0027honda\u0027, \u0027JP\u0027)
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name
RETURNING id
"""))
brand_id = res.fetchone()[0]
async def seed_honda():
"""
Honda specifikus alapozás az MB2.0 MDM (Master Data Management) szerint.
Létrehozza a katalógus-vázat és a robot-feladatokat.
"""
async with AsyncSessionLocal() as db:
logger.info("🚀 Honda márka-ökoszisztéma inicializálása...")
# 3. Modellek listája
models = [
("Civic", "civic"),
("Accord", "accord"),
("CR-V", "cr-v"),
("Jazz", "jazz"),
("HR-V", "hr-v"),
("NSX", "nsx")
# 1. LOGIKA: Robot Discovery feladatok rögzítése
# Ezzel mondjuk meg a Hunter robotnak, hogy keressen rá minden Honda variánsra
discovery_tasks = [
DiscoveryParameter(make="HONDA", vehicle_class="car", city="BUDAPEST", keyword="repair", is_active=True),
DiscoveryParameter(make="HONDA", vehicle_class="motorcycle", city="BUDAPEST", keyword="service", is_active=True)
]
for name, slug in models:
await db.execute(text(f"""
INSERT INTO data.vehicle_models (brand_id, name, slug)
VALUES ({brand_id}, \u0027{name}\u0027, \u0027{slug}\u0027)
ON CONFLICT (brand_id, slug) DO NOTHING
"""))
for task in discovery_tasks:
# Megnézzük, van-e már ilyen feladat
stmt = select(DiscoveryParameter).where(
DiscoveryParameter.make == task.make,
DiscoveryParameter.vehicle_class == task.vehicle_class
)
exists = (await db.execute(stmt)).scalar_one_or_none()
if not exists:
db.add(task)
# 2. LOGIKA: Népszerű modellek (Arany Rekordok) betöltése
# Ezek a "Starter" adatok, amik azonnal elérhetők a felhasználóknak
honda_models = [
# Személyautók
{"model": "CIVIC", "gen": "X (2015-2021)", "class": "car"},
{"model": "ACCORD", "gen": "X (2017-)", "class": "car"},
{"model": "CR-V", "gen": "V (2016-)", "class": "car"},
{"model": "JAZZ", "gen": "IV (2020-)", "class": "car"},
# Motorkerékpárok
{"model": "CB500X", "gen": "PC64 (2019-)", "class": "motorcycle"},
{"model": "AFRICA TWIN", "gen": "CRF1100L", "class": "motorcycle"},
{"model": "NC750X", "gen": "RH09 (2021-)", "class": "motorcycle"}
]
for m in honda_models:
# Ellenőrizzük az AssetCatalog-ban (MDM tábla)
stmt = select(AssetCatalog).where(
AssetCatalog.make == "HONDA",
AssetCatalog.model == m["model"],
AssetCatalog.generation == m["gen"]
)
exists = (await db.execute(stmt)).scalar_one_or_none()
if not exists:
db.add(AssetCatalog(
make="HONDA",
model=m["model"],
generation=m["gen"],
vehicle_class=m["class"],
factory_data={"source": "manual_priority_seed"} # MDM metaadat
))
await db.commit()
print("✅ Honda márka és modellek sikeresen betöltve!")
logger.info("✅ Honda (Autó & Motor) katalógus váz sikeresen felépítve!")
if __name__ == "__main__":
asyncio.run(seed())
asyncio.run(seed_honda())