# Masterbook 2.0.1: Backend - Frontend UI Szakadék Elemzés

**Dátum:** 2026. március 29.
**Készítette:** Enterprise Solutions Architect
**Referencia:** Issue #172 Mélyelemzés

## 1. Vezetői Összefoglaló (A Brutális Valóság)

A mai nap folyamán a Backend rendszermag (SQLAlchemy + Database + API) sikeresen megkapta a Masterbook 2.0.1 legfejlettebb vállalati funkcióit:
1. **`data_status` oszlop** a `vehicle.assets` táblában (DRAFT, ACTIVE, stb. státuszokhoz).
2. **`vehicle_transfer_requests` tábla** a tulajdonosváltási (Owner transfer) forgatókönyvekhez (rendszám igénylés/átvétel/elutasítás).
3. **`system_data_completion_weights` tábla és dinamikus `completion_percentage`** a profil kitöltöttség mérésére (Gamification és Trust score alapja).

**A Frontend azonban jelenleg "vak" és teljesen leválasztott ezekről a mély, vállalati szintű (Enterprise) funkciókról.** 
A Vue.js komponensek, mint a `Dashboard.vue`, `VehicleCard.vue`, `VehicleShowcase.vue` vagy `AddVehicle.vue` vagy hardkódolt értékekkel (vagy egyszerű fallbacks-ekkel) dolgoznak, vagy egyáltalán nem is jelenítik meg a Backend által szolgáltatott adatokat. Ráadásul az alapvető navigációt biztosító profilt váltó rendszerek (Profile/Organization Switcher) 500-as Internal Server Errort dobnak bizonyos esetekben, ami blokkolja a Garage funkciók rendes tesztelését.

## 2. Részletes Elemzés (Mélyfúrás a kódban)

### 2.1. A Dinamikus Profil Kitöltöttség (Completion Percentage) és Data Status Hiánya
**A Backend oldalon:** 
A rendszer a `system_data_completion_weights` alapján súlyozza a megadott adatokat, és API válaszban küldené a dinamikusan kalkulált `completion_percentage` értéket és az adat minőségét/státuszát (`data_status`).
**A Frontend oldalon:**
- A `frontend/src/components/garage/VehicleCard.vue` fájlban jelenleg egy hardkódolt vagy hiányos fall-back szerepel:
  ```vue
  <div class="text-xs text-gray-600 mb-1">Profile: {{ vehicle.profile_completion_percentage || 0 }}% Complete</div>
  <div class="w-full bg-gray-200 rounded-full h-2">
    <div class="bg-yellow-500 h-2 rounded-full" :style="{ width: (vehicle.profile_completion_percentage || 0) + '%' }"></div>
  </div>
  ```
- A `vehicle.status` ugyan ki van vezetve (pl. `'draft'`), de az új `data_status` szintű bontás (enum: DRAFT, DISCOVERED, ENRICHED, ACTIVE, ARCHIVED stb.) vizualizálása nem teljes körű vagy nincs a helyes backend mezőre drótozva.

### 2.2. A Jármű Átruházás (Vehicle Transfer Requests) teljes hiánya a UI-on
**A Backend oldalon:**
Teljes életciklus kezelés (Scenario A, B, C) készült a rendszám alapján történő igénylésre, konfliktuskezelésre (ha már valakié az autó), és tulajdonosváltás lebonyolítására.
**A Frontend oldalon:**
- A `frontend/src/views/AddVehicle.vue` csak egy egyszerű form (`model_name`, `plate`, `vin`, `current_odo`), amely a `POST /assets/vehicles` endpointot hívja.
- Nincs UI ág arra az esetre, ha a API 409 Conflict-ot adna vissza (már létezik a jármű).
- Nincs "Transfer Request" nézet, ahol a felhasználó láthatná a bejövő és kimenő jármű igényléseit, és ahol jóváhagyhatná/elutasíthatná azokat.

### 2.3. A Blokkoló Hiba: 500-as hiba a Profile/Organization Switcher-ben
Ahhoz, hogy a B2B és B2C (Private Garage vs. Corporate Fleet) nézeteket és járműveket érdemben tesztelni lehessen, a fiókváltás kritikus. Jelenleg a Profile Select / Org Switcher backend/frontend integrációja bizonyos API hívásoknál 500-as Internal Server Errorra fut, ami lehetetlenné teszi a különböző szerepkörök (Owner vs. Member, Private vs. Corporate) tiszta elkülönítését és tesztelését a Garage nézetben. 

## 3. Következtetés

Jelenleg egy "Ferrari motoros Trabantot" építettünk. A Backend enterprise szinten kezeli az állapottérgépet (State Machine), a minőségi pontozást és az eszköztulajdonosi konfliktusokat, míg a Frontend egy v1-es, "MVP" (Minimum Viable Product) szintű UI-t használ. Ezt a szakadékot azonnal, három célzott Issue (Gitea jegy) formájában kell áthidalnunk.
