Initial commit: Robot ökoszisztéma v2.0 - Stabilizált jármű és szerviz robotok

This commit is contained in:
Kincses
2026-03-04 02:03:03 +01:00
commit 250f4f4b8f
7942 changed files with 449625 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
import httpx
import asyncio
import json
async def discover_rdw_datasets():
# Ez a meta-adat API megmutatja az összes regisztrált járművekkel kapcsolatos táblát
discovery_url = "https://opendata.rdw.nl/api/views/metadata/v1"
async with httpx.AsyncClient() as client:
response = await client.get(discovery_url)
if response.status_code == 200:
datasets = response.json()
print(f"Talált táblák száma: {len(datasets)}\n")
# Kilistázzuk a legfontosabbakat
for ds in datasets[:20]: # Csak az első 20-at a példa kedvéért
name = ds.get('name', 'N/A')
id = ds.get('id', 'N/A')
print(f"Név: {name}")
print(f"Link: https://opendata.rdw.nl/resource/{id}.json")
print("-" * 30)
else:
print(f"Hiba a lekérdezés során: {response.status_code}")
if __name__ == "__main__":
asyncio.run(discover_rdw_datasets())
# docker exec -it sf_api python /app/app/test_outside/rdw_api_test.py

View File

@@ -0,0 +1,27 @@
import httpx
import asyncio
async def get_full_vehicle_data(kenteken: str):
# A legfontosabb táblák listája
resources = {
"Alapadatok": "m9d7-ebf2",
"Üzemanyag": "826y-p86p",
"Műszaki": "8ys7-d773"
}
kenteken = kenteken.upper().replace("-", "")
async with httpx.AsyncClient() as client:
for name, res_id in resources.items():
url = f"https://opendata.rdw.nl/resource/{res_id}.json?kenteken={kenteken}"
resp = await client.get(url)
if resp.status_code == 200 and resp.json():
print(f"--- {name} ({res_id}) ---")
print(json.dumps(resp.json()[0], indent=2))
else:
print(f"--- {name} ({res_id}): Nincs adat vagy 404 ---")
if __name__ == "__main__":
import json
asyncio.run(get_full_vehicle_data("ZT646P")) # Teszt rendszám

View File

@@ -0,0 +1,55 @@
# /app/app/test_outside/robot_dashboard.py
import asyncio
import sys
from sqlalchemy import text
from app.database import AsyncSessionLocal
async def run_dashboard():
print("\n" + "="*60)
print("🤖 ROBOT HADOSZTÁLY ÁLLAPOTJELENTÉS 🤖")
print("="*60)
async with AsyncSessionLocal() as db:
# --- 1. DISCOVERY (Felfedezés) ---
print("\n📡 1. FÁZIS: Felfedezés (Discovery Engine)")
print("-" * 40)
res = await db.execute(text("SELECT status, count(*) FROM data.catalog_discovery GROUP BY status ORDER BY count DESC"))
rows = res.fetchall()
if not rows: print(" Nincs adat.")
for row in rows: print(f" - {row[0].upper().ljust(20)}: {row[1]} db")
# --- 2. FELDOLGOZÁS (Hunter, Researcher, Alchemist) ---
print("\n⚙️ 2. FÁZIS: Feldolgozás és Tisztítás (Köztes tábla)")
print("-" * 40)
res = await db.execute(text("SELECT status, count(*) FROM data.vehicle_model_definitions GROUP BY status ORDER BY count DESC"))
rows = res.fetchall()
if not rows: print(" Nincs adat.")
for row in rows: print(f" - {row[0].upper().ljust(20)}: {row[1]} db")
# --- 3. HIBÁK (Kritikus elakadások) ---
print("\n🚨 LEGGYAKORIBB HIBÁK (Top 3 felfüggesztett)")
print("-" * 40)
res = await db.execute(text("""
SELECT substring(last_error from 1 for 70) as err, count(*)
FROM data.vehicle_model_definitions
WHERE status = 'suspended' AND last_error IS NOT NULL
GROUP BY err ORDER BY count DESC LIMIT 3
"""))
errors = res.fetchall()
if errors:
for row in errors: print(f" - [{row[1]} db] {row[0]}...")
else:
print(" - Nincs felfüggesztett, hibás rekord! 🎉")
# --- 4. ARANY REKORDOK (Végleges) ---
print("\n🏆 3. FÁZIS: Végleges Arany Katalógus")
print("-" * 40)
res = await db.execute(text("SELECT count(*) FROM data.vehicle_catalog"))
print(f" - Kész járművek száma : {res.scalar()} db")
print("\n" + "="*60 + "\n")
if __name__ == "__main__":
asyncio.run(run_dashboard())
# docker exec -it sf_api python /app/app/test_outside/robot_dashboard.py

View File

@@ -0,0 +1,37 @@
# /app/app/test_outside/rontgen_felkesz_adatok.py
import asyncio
from sqlalchemy import text
from app.database import AsyncSessionLocal
async def show_halfway():
async with AsyncSessionLocal() as db:
# Lekérdezzük a Hunter által már feldolgozott (ACTIVE) rekordokat
res = await db.execute(text('''
SELECT make, marketing_name, engine_capacity, power_kw, fuel_type, priority_score
FROM data.vehicle_model_definitions
WHERE status = 'ACTIVE'
ORDER BY updated_at DESC
LIMIT 15
'''))
rows = res.fetchall()
print('\n' + '🔍 FÉLKÉSZ ADATOK (A Hunter robot zsákmánya) 🔍'.center(60))
print('=' * 60)
if not rows:
print('Nincsenek aktív járművek a köztes táblában.')
return
for r in rows:
make, model, ccm, kw, fuel, prio = r
ccm_txt = f"{ccm} ccm" if ccm else "?"
kw_txt = f"{kw} kW" if kw else "?"
print(f"🚗 {make} {model} (Prio: {prio or 0})")
print(f" ⚙️ Motor RDW adat: {ccm_txt} | {kw_txt} | ⛽ {fuel or '?'}")
print('-' * 60)
if __name__ == "__main__":
asyncio.run(show_halfway())
# docker exec -it sf_api python /app/app/test_outside/rontgen_felkesz_adatok.py

View File

@@ -0,0 +1,30 @@
# /app/app/test_outside/rontgen_skript.py
import asyncio
import json
from sqlalchemy import text
from app.database import AsyncSessionLocal
async def show_gold():
async with AsyncSessionLocal() as db:
res = await db.execute(text('SELECT make, model, power_kw, engine_capacity, fuel_type, factory_data FROM data.vehicle_catalog ORDER BY id DESC LIMIT 10'))
rows = res.fetchall()
print('\n' + '🏆 AZ ARANY KATALÓGUS LEGÚJABB JÁRMŰVEI 🏆'.center(60))
print('=' * 60)
for r in rows:
make, model, kw, ccm, fuel, json_data = r
print(f'🚗 {make} {model}')
print(f' ⚙️ Motor: {ccm or "?"} ccm | {kw or "?"} kW')
print(f' ⛽ Üzemanyag: {fuel}')
# Megnézzük, van-e az AI által talált extra adat (pl. motorkód vagy gumi méret)
if json_data and isinstance(json_data, dict):
engine_code = json_data.get('engine_code', 'Nincs adat')
print(f' 🔍 Motorkód (AI/RDW): {engine_code}')
print('-' * 60)
if __name__ == "__main__":
asyncio.run(show_gold())
# docker exec -it sf_api python /app/app/test_outside/rontgen_skript.py

View File

@@ -0,0 +1,45 @@
### 1. A teljes folyamat áttekintése:
SQL
SELECT '1. Felfedezésre vár (Discovery)' as fazis, status, count(*) FROM data.catalog_discovery GROUP BY status
UNION ALL
SELECT '2. Feldolgozás alatt (Hunter/Alchemist)' as fazis, status, count(*) FROM data.vehicle_model_definitions GROUP BY status
ORDER BY fazis, count DESC;
### 2. Hány "Arany" (végleges) autóm van már?
SQL
SELECT make, count(*) as db
FROM data.vehicle_catalog
GROUP BY make
ORDER BY db DESC;
### 3. Mik a hibák, amiken elakadnak a robotok? (Nagyon hasznos!)
SQL
SELECT last_error, count(*) as elakadas_szama
FROM data.vehicle_model_definitions
WHERE status = 'suspended'
GROUP BY last_error
ORDER BY elakadas_szama DESC;
**1. Módszer: SQL Lekérdezés (pgAdmin / DBeaver)**
Ha grafikus felületen nézed az adatbázist, futtasd le ezt az SQL parancsot. Ez gyönyörűen, oszlopokba rendezve megmutatja a legfontosabb műszaki adatokat, és az AI által összerakott teljes JSON struktúrát is!
SQL
SELECT
id,
make AS "Márka",
model AS "Modell",
vehicle_class AS "Kategória",
engine_capacity || ' ccm' AS "Hengerűrtartalom",
power_kw || ' kW' AS "Teljesítmény",
fuel_type AS "Üzemanyag",
factory_data AS "AI Nyers JSON"
FROM
data.vehicle_catalog
ORDER BY
id DESC;