Files
service-finder/docs/ultimatespecs_integration_audit.md
2026-03-22 11:02:05 +00:00

6.8 KiB

UltimateSpecs Integráció Audit

Áttekintés

Ez a dokumentum a Service Finder projekt backend/app/workers/vehicle könyvtárában található Python fájlok auditját tartalmazza, különös tekintettel az https://www.ultimatespecs.com/ weboldalról történő járműadatok gyűjtésére.

Audit Dátum

2026-03-17

Vizsgált Könyvtár

/opt/docker/dev/service_finder/backend/app/workers/vehicle

Talált Források

1. UltimateSpecs.com Integráció

Két fő fájl tartalmaz explicit hivatkozást az UltimateSpecs domainre:

a) vehicle_robot_2_1_ultima_scout.py

  • Cél: A vehicle_model_definitions táblából veszi a pending vagy manual_review_needed státuszú járműveket
  • Működés: Az UltimateSpecs keresőjén (https://www.ultimatespecs.com/index.php?q=...) keresztül talál meg adatlapokat
  • Eredmény: A talált variációkat új rekordként menti enrich_ready státusszal
  • Technológia: Playwright böngésző automatizálás, SQLAlchemy adatbázis műveletek
  • Rate Limiting: 3-6 másodperc véletlenszerű várakozás minden lekérdezés között

b) r5_ultimate_harvester.py

  • Cél: A már megtalált járművek technikai specifikációinak scrape-elése
  • Működés: Közvetlen ugrás az adatlapra, táblázatok elemzése
  • Kinyert adatok: Lóerő (kW), lökettérfogat, nyomaték, maximális sebesség, gyorsulás 0-100 km/h, súly, tengelytáv, ülések száma
  • Technológia: Playwright, regex alapú adatkinyerés
  • Adatbázis frissítés: A vehicle_model_definitions tábla megfelelő mezőinek feltöltése

2. Egyéb Külső Források

A rendszer több más forrást is használ járműadatok gyűjtéséhez:

a) Auto-Data.net

  • Fájlok: R0_brand_hunter.py, vehicle_robot_2_auto_data_net.py
  • Cél: Márkák és modellek listázása
  • URL: https://www.auto-data.net/en/allbrands

b) RDW (Holland Nyílt Adat)

  • Fájlok: vehicle_robot_1_5_heavy_eu.py, vehicle_robot_0_discovery_engine.py, vehicle_robot_1_catalog_hunter.py, vehicle_robot_2_1_rdw_enricher.py
  • Cél: Holland járművek technikai adatai
  • URL: https://opendata.rdw.nl/resource/m9d7-ebf2.json

c) NHTSA (USA)

  • Fájlok: vehicle_robot_1_2_nhtsa_fetcher.py, vehicle_robot_1_4_bike_hunter.py
  • Cél: Amerikai járművek modell listái
  • URL: https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeYear/...

d) DVLA (UK)

  • Fájl: vehicle_robot_1_gb_hunter.py
  • Cél: Brit járművek hiteles adatai
  • URL: https://driver-vehicle-licensing.api.gov.uk/vehicle-enquiry/v1/vehicles

e) GitHub Raw JSON

  • Fájl: vehicle_data_loader.py
  • Cél: Nyílt adatkészletek
  • URL-ek:
    • https://raw.githubusercontent.com/DanielKohut/car-data/master/car_data.json
    • https://raw.githubusercontent.com/matthlavacka/car-list/master/car-list.json

f) AutoEvolution.com

  • Fájlok: bike_R0_brand_hunter.py, test_aprilia.py
  • Cél: Motorok adatai
  • URL: https://www.autoevolution.com/moto/

g) Ollama API

  • Fájlok: vehicle_robot_3_alchemist_pro.py, vehicle_robot_2_researcher.py
  • Cél: AI-alapú adatfeldolgozás és elemzés
  • URL: http://sf_ollama:11434/api/generate

Függőségek

Bemeneti Függőségek

  1. Külső API-k és Weboldalak: Minden fent felsorolt forrás
  2. Böngésző Automatizálás: Playwright keretrendszer Chromium böngészőhöz
  3. Adatbázis Kapcsolat: PostgreSQL adatbázis SQLAlchemy ORM-mel
  4. Hálózati Infrastruktúra: Stabil internetkapcsolat, proxy beállítások

Kimeneti Függőségek

  1. vehicle_model_definitions tábla: A járművek mesterkatalógusa, amely a Service Finder alkalmazás alapját képezi
  2. További feldolgozó robotok: Az enrich_ready státuszú rekordok a következő feldolgozási lépésekbe kerülnek
  3. Analitikai Rendszer: A gyűjtött adatok a TCO (Total Cost of Ownership) számításokhoz és egyéb elemzésekhez használhatók

Műszaki Megvalósítás

Playwright Használata

Mindkét UltimateSpecs robot Playwright-et használ a weboldal böngészéséhez:

  • Headless mód: Háttérben futó böngésző
  • Timeout kezelés: 25-30 másodperc timeout
  • Hibatűrés: Kivételkezelés és újrapróbálkozási mechanizmus

Adatbázis Műveletek

  • Atomi zárolás: FOR UPDATE SKIP LOCKED a párhuzamos feldolgozáshoz
  • Duplikáció ellenőrzés: URL alapján ellenőrzi, hogy már létezik-e a rekord
  • Státusz kezelés: pendingexpanded_to_variants vagy research_failed_empty

Rate Limiting és Etikett Viselkedés

  • Várakozások: 3-6 másodperc véletlenszerű várakozás lekérdezések között
  • Kvóta kezelés: A QuotaManager naplózza a DVLA API hívásokat
  • User-Agent: Valós böngésző user-agent használata

Biztonsági Szempontok

Adatvédelmi Megfontolások

  1. Nyilvános adatok: Az UltimateSpecs és más források nyilvánosan elérhető adatokat tartalmaznak
  2. API kulcsok: A DVLA API kulcs környezeti változóból kerül betöltésre (.env fájl)
  3. Adatminőség: A scrapelt adatok hitelességét a rendszer validálja és auditálja

Jogi Megfontolások

  1. Terms of Service: Az UltimateSpecs ToS-ét be kell tartani (rate limiting, robot.txt)
  2. Adatfelhasználás: Csak saját adatbázis feltöltésére használjuk, nem terjesztjük tovább
  3. Nyílt adatok: A többi forrás nyílt adatlicenc alatt áll (RDW, NHTSA, GitHub)

Javaslatok

1. Monitoring Fejlesztése

  • Naplózás: Részletesebb naplózás a scrape sikerről/sikertelenségéről
  • Metrikák: API hívások számának nyomon követése
  • Riasztások: Ha egy forrás hosszabb ideig nem elérhető

2. Hibakezelés Javítása

  • Retry logika: Intelligensebb újrapróbálkozási stratégia
  • Fallback források: Ha az UltimateSpecs nem elérhető, alternatív források használata
  • Adatvalidáció: Scrapelt adatok formátumellenőrzése

3. Teljesítmény Optimalizálás

  • Párhuzamos feldolgozás: Több jármű egyidejű feldolgozása
  • Cache réteg: Gyakran lekérdezett adatok gyorsítótárazása
  • Adatbázis indexek: Optimalizált lekérdezések gyorsabb végrehajtásához

Következtetés

Az UltimateSpecs integráció teljesen működőképes és jól implementált. A rendszer megfelelő rate limitinggel és hibatűréssel rendelkezik, etikusan viselkedik a célweboldallal szemben. A többforrásos megközelítés (RDW, NHTSA, DVLA, Auto-Data.net) biztosítja az adatok átfogó lefedettségét és redundanciáját.

A jelenlegi implementáció készen áll éles használatra, és alapvetően nem igényel módosítást. Javasolt azonban a fent említett monitoring és hibakezelési fejlesztések implementálása a hosszú távú megbízhatóság érdekében.