Files
service-finder/docs/database_catalog_reconnaissance_2026-06-11.md

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, bus stb. 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

  1. BodyType modell létrehozása — normalizált karosszériatípus szótár (id, code, name, icon, vehicle_class_id)
  2. TrimLevel modell létrehozása — normalizált kivitel szótár (id, code, name)
  3. Adatmigráció: A 152 meglévő body_type érték normalizálása és deduplikálása
  4. API végpontok: GET /body-types, GET /trims, GET /vehicle-classes
  5. vehicle_types feltöltése — a hiányzó járműtípusok (motorcycle, truck, bus stb.) hozzáadása