134 lines
6.8 KiB
Markdown
134 lines
6.8 KiB
Markdown
# 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:** `pending` → `expanded_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. |