Initial commit: Robot ökoszisztéma v2.0 - Stabilizált jármű és szerviz robotok
This commit is contained in:
28
backend/app/test_outside/rdw_api_test.py
Executable file
28
backend/app/test_outside/rdw_api_test.py
Executable 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
|
||||
27
backend/app/test_outside/rdw_zt646p_test.py
Executable file
27
backend/app/test_outside/rdw_zt646p_test.py
Executable 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
|
||||
55
backend/app/test_outside/robot_dashboard.py
Executable file
55
backend/app/test_outside/robot_dashboard.py
Executable 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
|
||||
37
backend/app/test_outside/rontgen_felkesz_adatok.py
Executable file
37
backend/app/test_outside/rontgen_felkesz_adatok.py
Executable 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
|
||||
30
backend/app/test_outside/rontgen_skript.py
Executable file
30
backend/app/test_outside/rontgen_skript.py
Executable 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
|
||||
45
backend/app/test_outside/sql_listak_md
Executable file
45
backend/app/test_outside/sql_listak_md
Executable 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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user