Files
service-finder/docs/full_stack_disconnect_analysis_2026-06-16.md

11 KiB

🚨 Full Stack Disconnect Analysis — "Extrák" Hiányzó Checkbox Grid

Dátum: 2026-06-16
Elemző: Rendszer-Architect
Scope: VehicleFormModal (Frontend) ↔ Asset Schema (Backend) ↔ Asset DB Model (PostgreSQL)


🔍 1. FRONTEND VIZSGÁLAT — VehicleFormModal.vue

Jelenlegi lépések (line 870-875):

Index Lépés neve Tartalom
0 Azonosítás Kategória, VIN, Rendszám
1 Alapadatok Márka, Modell, Évjárat, Üzemanyag, Kivitel/Felszereltség (összemosva), Becenév, Km óra
2 Műszaki Hengerűrtartalom, Teljesítmény kW, Hajtás, Váltó, Karosszéria (body_type), Klíma, Ajtók, Ülések, EV blokk, Okmányadatok
3 Extrák Saját besorolás, Saját megjegyzés + Features checkbox grid (csak personal esetén!)

Step 3 ("Extrák") valós tartalma (line 684-764):

<div v-if="step === 3" class="space-y-4">
  <p>Itt adhatsz hozzá extra információkat a járművedhez.</p>
  <!-- Saját besorolás (condition) select -->
  <!-- Saját megjegyzés (notes) input -->
  
  <!-- Features / Extrák - CSAK personal járműveknél -->
  <div v-if="form.vehicle_class === 'personal'" class="pt-2">
    <!-- Technical, Interior, Exterior, Multimedia, Other checkbox groups -->
  </div>
</div>

⚠️ Kritikus probléma:

A 75+ checkbox csak akkor jelenik meg, ha a felhasználó personal (személyautó) kategóriát választott. Minden más járműosztálynál (motorcycle, light_commercial, commercial, work_machine, trailer, bus, camper, boat, aircraft, other) a Step 3 tényleg üres — csak "Saját besorolás" és "Saját megjegyzés" látszik. Ez magyarázza a képernyőképen látott üres felületet!

A features tömörítve individual_equipment.car_specs.features-ként megy a backendbe

Mely fájlba lettek a checkboxok?

A checkbox grid a VehicleFormModal.vue fájlban van (line 710-763), de nem kapta meg a saját dedikált komponensét, és nincs külön "Extrák" almappája a kategóriáknak (Beltér/Kültér/Multimédia/Egyéb). Minden egy form.features string tömbben van tárolva, nem pedig strukturált JSONB-ként.


🗄️ 2. ADATBÁZIS & SÉMA VIZSGÁLAT

Tervező által kért mezők vs Valós állapot

Azonosítás

Kért mező Backend (DB Model) Pydantic Schema Frontend Form Státusz
Márka Asset.brand AssetCreate.brand form.brand OK
Modell Asset.model AssetCreate.model form.model OK
Típusjel NINCS NINCS NINCS HIÁNYZIK

"Típusjel" — ez a mező sehol nem létezik önálló entitásként. A trim_level ("Kivitel / Felszereltség") próbálja helyettesíteni, de a Tervező szerint a Típusjel (pl. "320i", "X5 xDrive30d") külön fogalom.

Általános

Kért mező Backend Schema Frontend Státusz
Km óra állás current_mileage OK
Évjárat year_of_manufacture OK
Kivitel (Karosszéria) body_type a JSONB-ben nincs külön mező form.body_type (Step 2-ben!) ROSSZ helyen
Állapot condition_score NINCS a sémában form.condition (string!) ⚠️ Inkonzisztens

"Kivitel (Karosszéria)" — a body_type mező létezik a JSONB-ben (individual_equipment.car_specs.body_type), de a "Műszaki" (Step 2) fül alatt van, nem az alapadatok között. A Tervező szerint az Általános adatoknál kellene lennie, külön a "Felszereltségtől".

Műszaki

Kért mező Backend Schema Frontend Státusz
Üzemanyag fuel_type OK
Hengerűrtartalom (cm³) engine_capacity OK
Teljesítmény (kW/LE) power_kw (HP display) OK
Nyomaték (Nm) torque_nm DB-ben AssetCreate.torque_nm NINCS input mező! HIÁNYZIK

Nyomaték (torque_nm) — a legkritikusabb hiányzó mező! A backend modellben (Asset.py sor 97) benne van, a Pydantic sémában (AssetCreate.torque_nm sor 151) benne van, de a frontend űrlapban SEHOL nincs input mező a Nyomaték megadására. Amikor a felhasználó elmenti az űrlapot, a torque_nm egyszerűen null marad.

Hajtáslánc

Kért mező Backend Schema Frontend Státusz
Sebességváltó transmission_type OK
Hajtás drive_type OK

Kényelem

Kért mező Backend Schema Frontend Státusz
Klíma fajtája JSONB-ben (ac_type) nincs külön mező form.ac_type ⚠️ JSONB-be van rejtve

Okmányok

Kért mező Backend Schema Frontend Státusz
Forgalmi szám JSONB-ben nincs külön mező ⚠️ JSONB-ben
Törzskönyv szám JSONB-ben nincs külön mező ⚠️ JSONB-ben
Műszaki lejárat JSONB-ben nincs külön mező ⚠️ JSONB-ben
Okmány lejárat JSONB-ben nincs külön mező ⚠️ JSONB-ben

Extrák (JSONB)

Kért mező Backend Schema Frontend Státusz
Beltér JSONB car_specs.features individual_equipment (checkbox) OK
Kültér JSONB car_specs.features individual_equipment (checkbox) OK
Multimédia JSONB car_specs.features individual_equipment (checkbox) OK
Egyéb JSONB car_specs.features individual_equipment (checkbox) OK

További hiányzó mezők a frontendről (de backendben léteznek):

Mező DB Oszlop Pydantic Schema Frontend Input Státusz
curb_weight (saját tömeg) HIÁNYZIK
max_weight (össztömeg) HIÁNYZIK
cargo_volume_x (raktér hossz) HIÁNYZIK
cargo_volume_y (raktér szél.) HIÁNYZIK
roof_type (tető típus) HIÁNYZIK
audio_system_type (hangi) HIÁNYZIK

🌐 3. API VÁLASZ VIZSGÁLAT

GET /assets/vehicles/{id} (assets.py line 290-337)

A végpont az AssetResponse Pydantic modellt használja (response_model=AssetResponse). A from_attributes=True miatt az ORM Asset objektum automatikusan Pydantic-ként szerializálódik.

A JSON válasz tartalmazza:

  • Az összes "sima" oszlopot (brand, model, engine_capacity, power_kw, torque_nm, transmission_type, drive_type, stb.)
  • Az individual_equipment JSONB mezőt teljes egészében (benne car_specs, ev_specs, dates, documents)
  • A catalog kapcsolódó objektumot (ha van)

A frontend populateForm() (line 1162-1215) helyesen olvassa vissza a JSONB-t, de a torque_nm sosem kerül beolvasásra, mert nincs hozzá input mező.


🎯 4. ÖSSZEGZÉS: A KAPCSOLAT MEGSZAKADÁSI PONTOK

1. 🔴 Nyomaték (torque_nm) — Backend adat, frontend nélkül

  • Hol: DB Asset.torque_nm sor 97, Schema AssetCreate.torque_nm sor 151
  • Probléma: A backend tárolja és a Pydantic séma támogatja, de a VehicleFormModal.vue egyetlen lépésében sincs input mező.
  • Következmény: A flottavezetők soha nem adják meg a nyomatékot, a "Thick Digital Twin" koncepció adathiányos.

2. 🟠 "Típusjel" mező teljes hiánya

  • Hol: Sehol az egész stack-ben
  • Probléma: A Tervező által kért Típusjel (pl. "320i", "X5 xDrive30d") fogalma nem létezik. Csak a trim_level van.

3. 🟠 "Kivitel" és "Felszereltség" összemosása

  • Hol: VehicleFormModal.vue Step 1 (line 376-409)
  • Probléma: A trim_level egyszerre próbálja lefedni a karosszéria kivitelt ÉS a felszereltségi szintet.

4. 🟡 Features checkbox grid csak personal osztálynál

  • Hol: VehicleFormModal.vue line 711
  • Probléma: v-if="form.vehicle_class === 'personal'" — más osztályoknál tényleg üres az Extrák fül.

5. 🟡 Hiányzó fizikai méret és tömeg mezők

  • curb_weight, max_weight, cargo_volume_x, cargo_volume_y — backendben vannak, de nincsenek a formban.

6. 🟡 Okmányadatok JSONB-be rejtve

  • mot_expiry, document_expiry, reg_cert_number, title_cert_number a JSONB-ben, nem dedikált oszlopokban.

🏗️ 5. JAVASLAT: 7 LÉPÉSES ÚJ ŰRLAPSTRUKTÚRA

Step 0: 🚗 AZONOSÍTÁS
  - Kategória (vehicle_class)
  - Márka (brand)
  - Modell (model)
  - Típusjel (type_designation) ⬅️ ÚJ!
  - Rendszám (license_plate)
  - Alvázszám (vin)

Step 1: 📋 ÁLTALÁNOS ADATOK
  - Évjárat (year_of_manufacture)
  - Km óra állás (current_mileage)
  - Kivitel / Karosszéria (body_type) ⬅️ Külön!
  - Állapot / Saját besorolás (condition)

Step 2: ⚙️ MŰSZAKI ADATOK
  - Üzemanyag (fuel_type)
  - Hengerűrtartalom (engine_capacity)
  - Teljesítmény (power_kw) + LE kijelzés
  - Nyomaték (torque_nm) ⬅️ ÚJ!
  - Hengerelrendezés (cylinder_layout)

Step 3: 🔧 HAJTÁSLÁNC
  - Sebességváltó (transmission_type)
  - Hajtás (drive_type)

Step 4: 🌡️ KÉNYELEM & KLÍMA
  - Klíma fajtája (ac_type)
  - Tető típus (roof_type) ⬅️ ÚJ!
  - Hangrendszer (audio_system_type) ⬅️ ÚJ!
  - Ajtók száma (door_count)
  - Ülések száma (seat_count)

Step 5: 📄 OKMÁNYOK
  - Műszaki érvényesség (mot_expiry)
  - Okmány érvényesség (document_expiry)
  - Forgalmi szám (registration_cert_number)
  - Törzskönyv szám (title_cert_number)

Step 6: ✨ EXTRÁK (Felszereltség) - Dedikált komponens!
  - Beltér (interior features)
  - Kültér (exterior features)
  - Multimédia (multimedia features)
  - Technikai (technical features)
  - Egyéb (other features)
  - Súly & Méretek (curb_weight, max_weight, cargo)

📊 HIÁNYZÓ MEZŐK MASTER LIST

# Mező DB/Séma Frontend Javasolt lépés
1 torque_nm Van NINCS Step 2
2 type_designation NINCS NINCS Step 0
3 curb_weight Van NINCS Step 6
4 max_weight Van NINCS Step 6
5 cargo_volume_x Van NINCS Step 6
6 cargo_volume_y Van NINCS Step 6
7 roof_type Van NINCS Step 4
8 audio_system_type Van NINCS Step 4

AZONNALI TEENDŐK (Prioritási sorrendben)

  1. 🟢 FRONTEND: Add hozzá a torque_nm input mezőt a "Műszaki" (Step 2) lépéshez. Ez 5 perc fejlesztés és a legnagyobb adatveszteséget szünteti meg.

  2. 🟡 FRONTEND: Bontsd ki a features checkbox grid-et egy külön Vue komponensbe (VehicleFeaturesGrid.vue), és engedélyezd MINDEN járműosztálynál, ne csak personal-nál.

  3. 🟡 FRONTEND+SCHEMA: Válaszd szét a "Kivitel" (body_type) és "Felszereltség" (trim_level) fogalmakat.

  4. 🔴 ARCHITECT TERV: Készíts logic_spec dokumentációt az űrlap teljes átépítéséhez a fenti 7 lépéses struktúra alapján.