7.0 KiB
📊 Adatbázis Katalógus & Szótár Felderítés
Dátum: 2026-06-11 Vizsgált rendszer: Service Finder Backend (PostgreSQL + SQLAlchemy) Cél: Karosszéria/Kivitel (Body Type / Trim) funkció előfeltérképezése
1. SQL Adatbázis Felfedezés
1.1 Katalógus-táblák a vehicle sémában
Az information_schema.tables lekérdezés alapján az összes releváns tábla a vehicle sémában található. Nincs külön catalog vagy dictionary séma.
| # | Tábla | Típus | Sorok száma | Állapot |
|---|---|---|---|---|
| 1 | vehicle.vehicle_model_definitions |
BASE TABLE | 345,400 | ✅ Feltöltve (MDM master) |
| 2 | vehicle.vehicle_catalog |
BASE TABLE | 1,596,564 | ✅ Feltöltve (variánsok) |
| 3 | vehicle.vehicle_types |
BASE TABLE | 1 | ❌ Csak 1 rekord (car) |
| 4 | vehicle.feature_definitions |
BASE TABLE | 16 | ⚠️ Csak 16 felszereltség |
| 5 | vehicle.model_feature_maps |
BASE TABLE | 0 | ❌ Üres kapcsolótábla |
| 6 | vehicle.catalog_discovery |
BASE TABLE | 172,525 | ✅ Feltöltve (robot várólista) |
| 7 | vehicle.gb_catalog_discovery |
BASE TABLE | 0 | ❌ Üres (UK piac) |
1.2 Body Típusok (Karosszéria) Állapota
- 152 különböző
body_typeérték létezik az adatbázisban - 4,050 rekordnál (~1.17%) hiányzik a body_type
- Probléma: Az értékek nem normalizáltak — ugyanaz a karosszéria többféleképpen van tárolva:
"SUV"vs"SUV, Crossover"vs"SUV, Fastback""SEDAN"vs"Sedan"vs"sedan""CONVERTIBLE"vs"Cabriolet"vs"cabriolet"- Hollandi nyelvű RDW értékek:
"hatchback","stationwagen","cabriolet"stb.
1.3 Trim Szintek (Kivitelek) Állapota
- 22,375 különböző
trim_levelérték - 187,159 rekordnál (~54%) hiányzik a trim_level
- Az értékek többsége kódolt (#BK, #LE, #LF stb.) — nem emészthető emberi szemmel
1.4 Vehicle Típusok
- Csak 1 rekord:
code='car',name='Személyautó' - A
motorcycle,truck,busstb. típusok nincsenek feltöltve
1.5 Vehicle Class
4 érték található: car, motorcycle, other, truck
2. SQLAlchemy Modellek Állapota
2.1 A vehicle_definitions.py modelljei
| Modell | Tábla | Oszlopok | Létezik? |
|---|---|---|---|
VehicleType (vehicle_definitions.py:17) |
vehicle.vehicle_types |
id, code, name, icon, units |
✅ Van |
FeatureDefinition (vehicle_definitions.py:33) |
vehicle.feature_definitions |
id, vehicle_type_id, code, name, category |
✅ Van |
VehicleModelDefinition (vehicle_definitions.py:48) |
vehicle.vehicle_model_definitions |
id, make, marketing_name, body_type, trim_level, vehicle_class, fuel_type... |
✅ Van (MDM) |
ModelFeatureMap (vehicle_definitions.py:145) |
vehicle.model_feature_maps |
id, model_definition_id, feature_id, is_standard |
✅ Van |
2.2 A asset.py modelljei
| Modell | Tábla | Oszlopok | Létezik? |
|---|---|---|---|
AssetCatalog (asset.py:14) |
vehicle.vehicle_catalog |
id, make, model, generation, year_from, year_to, fuel_type... |
✅ Van |
Asset (asset.py:69) |
vehicle.assets |
id, vin, brand, model, trim_level, vehicle_class... |
✅ Van |
CatalogDiscovery (asset.py:402) |
vehicle.catalog_discovery |
id, make, model, vehicle_class, market, model_year, status |
✅ Van |
GbCatalogDiscovery (vehicle.py:195) |
vehicle.gb_catalog_discovery |
id, vrm, make, model, status |
✅ Van |
2.3 Egyéb releváns modellek
| Fájl | Modell | Tábla |
|---|---|---|
external_reference.py:6 |
ExternalReferenceLibrary |
vehicle.external_reference_library |
motorcycle_specs.py:6 |
MotorcycleSpecs |
vehicle.motorcycle_specs |
reference_data.py:6 |
ReferenceLookup |
vehicle.reference_lookup |
2.4 ⚠️ Kritikus hiányosság: NINCS BodyType modell!
Nincs önálló BodyType SQLAlchemy modell! A body_type jelenleg egy szabad szöveges (String(100)) mező a VehicleModelDefinition osztályban (vehicle_definitions.py:92). Ez magyarázza a 152 nem normalizált értéket.
Ugyanez igaz a trim_level-re is (vehicle_definitions.py:94): szabad szöveges mező, nincs normalizált szótár mögötte.
3. API Végpontok Állapota
3.1 Meglévő katalógus végpontok (catalog.py)
| Végpont | Módszer | Leírás | Védett? |
|---|---|---|---|
/makes (catalog.py:11) |
GET | Márkák listázása (opcionális vehicle_class szűrő) | ✅ Igen |
/models (catalog.py:21) |
GET | Modellek listázása adott márkához | ✅ Igen |
/generations (catalog.py:38) |
GET | Generációk/évjáratok listázása | ✅ Igen |
/engines (catalog.py:55) |
GET | Motorváltozatok és specifikációk | ✅ Igen |
Minden végpont az AssetService-t használja (asset_service.py:339-385), ami a vehicle_model_definitions táblából lekérdezéseket futtat.
3.2 NEM létező, de szükséges végpontok
A Karosszéria/Kivitel funkcióhoz az alábbi végpontok hiányoznak:
- ❌
GET /body-types— Karosszéria típusok listázása - ❌
GET /trims— Kivitelek listázása (szűrhető márka/modell szerint) - ❌
GET /vehicle-classes— Jármű osztályok listázása - ❌
POST /body-types— Új karosszériatípus hozzáadása (admin) - ❌
POST /trims— Új kivitel hozzáadása (admin)
3.3 Meglévő jármű végpontok (vehicles.py)
| Végpont | Módszer | Leírás |
|---|---|---|
/{vehicle_id}/ratings (vehicles.py:22) |
POST | Értékelés küldése |
/{vehicle_id}/ratings (vehicles.py:94) |
GET | Értékelések lekérése |
4. Összefoglaló és Javaslatok
4.1 Adatbázis
✅ 345,400 járműdefiníció és 1.59M katalógus variáns — a botok jól dolgoztak
⚠️ vehicle_types tábla majdnem üres (csak 1 rekord)
⚠️ body_type és trim_level nem normalizált, szabad szöveges mezők
⚠️ 152 féle body_type, nagy része duplikátum (kisbetű/nagybetű, holland/angol keverék)
4.2 Modellek
✅ Létezik VehicleModelDefinition, VehicleType, FeatureDefinition
❌ NINCS önálló BodyType modell — ez a legnagyobb hiányosság
❌ NINCS önálló TrimLevel modell sem
4.3 API
✅ Négy katalógus végpont működik (/makes, /models, /generations, /engines)
❌ NINCS /body-types, /trims, /vehicle-classes végpont
4.4 Ajánlott következő lépések
BodyTypemodell létrehozása — normalizált karosszériatípus szótár (id, code, name, icon, vehicle_class_id)TrimLevelmodell létrehozása — normalizált kivitel szótár (id, code, name)- Adatmigráció: A 152 meglévő body_type érték normalizálása és deduplikálása
- API végpontok:
GET /body-types,GET /trims,GET /vehicle-classes vehicle_typesfeltöltése — a hiányzó járműtípusok (motorcycle, truck, bus stb.) hozzáadása