98 lines
3.6 KiB
Python
Executable File
98 lines
3.6 KiB
Python
Executable File
# /opt/docker/dev/service_finder/backend/app/tests_internal/seeds/seed_catalog.py
|
|
"""
|
|
🌱 MB2.0 KATALÓGUS ÉS ROBOT SEEDER
|
|
----------------------------------
|
|
CÉL: A járműkatalógus alapadatainak és a robotok munkalistájának feltöltése.
|
|
|
|
FUNKCIÓK:
|
|
1. DiscoveryParameter: Azon városok rögzítése, ahol a Scout robot keresni fog.
|
|
2. CatalogDiscovery: Azon márkák rögzítése, amiket a Robot 0/1 fel fog dolgozni.
|
|
3. AssetCatalog: 'Arany' (már validált) technikai rekordok beszúrása.
|
|
|
|
JAVÍTÁSOK:
|
|
- 'last_error' oszlop eltávolítva (mivel az adatbázisban nem létezik).
|
|
- 'attempts' mező kényszerített 0 értékkel (NOT NULL kényszer miatt).
|
|
"""
|
|
|
|
import asyncio
|
|
import logging
|
|
from app.database import AsyncSessionLocal
|
|
from app.models.asset import AssetCatalog, CatalogDiscovery
|
|
from app.models.staged_data import DiscoveryParameter
|
|
|
|
# Logolás beállítása
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s [%(levelname)s] Sentinel-Seed: %(message)s')
|
|
logger = logging.getLogger("Seed-Catalog")
|
|
|
|
async def quick_seed():
|
|
""" Katalógus és Discovery adatok inicializálása. """
|
|
async with AsyncSessionLocal() as db:
|
|
logger.info("🚀 Katalógus alapozás indítása...")
|
|
|
|
try:
|
|
# 1. Felderítendő Városok (DiscoveryParameter)
|
|
# A Scout robot ezekben a városokban kezdi meg a szervizek kutatását.
|
|
cities = [
|
|
("BUDAPEST", "HU"),
|
|
("DEBRECEN", "HU"),
|
|
("GYŐR", "HU"),
|
|
("SZEGED", "HU")
|
|
]
|
|
|
|
for city_name, country in cities:
|
|
db.add(DiscoveryParameter(
|
|
city=city_name,
|
|
keyword=country,
|
|
is_active=True
|
|
))
|
|
|
|
# 2. Felderítendő Márkák és Típusok (CatalogDiscovery)
|
|
# Ezeket a rekordokat fogja a Robot 0 és Robot 1 feldolgozni a háttérben.
|
|
discovery_queue = [
|
|
("SUZUKI", "ALL"),
|
|
("TOYOTA", "ALL"),
|
|
("HONDA", "ALL"),
|
|
("SKODA", "ALL"),
|
|
("YAMAHA", "ALL")
|
|
]
|
|
|
|
for m, mod in discovery_queue:
|
|
# Az attempts=0 kötelező a DB kényszer miatt
|
|
db.add(CatalogDiscovery(
|
|
make=m,
|
|
model=mod,
|
|
status="pending",
|
|
attempts=0
|
|
))
|
|
|
|
# 3. Arany rekordok (AssetCatalog / vehicle_catalog tábla)
|
|
# Példa adatok, amik már átmentek a validációs folyamaton.
|
|
gold_data = [
|
|
AssetCatalog(
|
|
make="SUZUKI",
|
|
model="VITARA",
|
|
generation="LY (2015-)",
|
|
fuel_type="petrol",
|
|
factory_data={"segment": "SUV", "origin": "Hungary"}
|
|
),
|
|
AssetCatalog(
|
|
make="SKODA",
|
|
model="OCTAVIA",
|
|
generation="IV (2020-)",
|
|
fuel_type="diesel",
|
|
factory_data={"segment": "Sedan/Combi"}
|
|
)
|
|
]
|
|
db.add_all(gold_data)
|
|
|
|
# Mentés végrehajtása
|
|
await db.commit()
|
|
logger.info("✨ Katalógus és Discovery paraméterek sikeresen rögzítve!")
|
|
|
|
except Exception as e:
|
|
await db.rollback()
|
|
logger.error(f"❌ HIBA a katalógus feltöltésekor: {e}")
|
|
raise e
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(quick_seed()) |