# 🚗 JĂĄrmƱ Adatfolyam Audit 2026-06-21 **KĂĄrtya:** #275 - Audit: JĂĄrmƱ adatfolyam (DB → API → Frontend) teljes körƱ elemzĂ©se **Auditor:** Rendszer-Architect **StĂĄtusz:** KĂ©sz --- ## 📋 VizsgĂĄlt KĂ©rdĂ©sek 1. **Dashboard jĂĄrmƱ kĂĄrtyĂĄk hova mutatnak?** 2. **JĂĄrmƱvek oldalon milyen adatok lĂĄtszanak?** 3. **ÁttekintĂ©s (Overview) fĂŒl melyik adatbĂĄzis tĂĄblĂĄkbĂłl kapja az adatokat?** 4. **API kapcsolatok lefedik-e az összes adatbĂĄzis adatot?** --- ## 1. Dashboard JĂĄrmƱ KĂĄrtyĂĄk (VehicleCardStandard) **FĂĄjl:** `frontend/src/components/vehicle/VehicleCardStandard.vue` **LinkelĂ©s:** - `@click="$emit('click', vehicle')` → A parent komponens kezeli (pl. DashboardView, CompanyGarageView), ami megnyitja a `VehicleDetailModal`-t **KĂĄrtyĂĄn megjelenƑ adatok Ă©s forrĂĄsaik:** | MezƑ | ForrĂĄs (DB) | API | |------|-------------|-----| | `license_plate` | `vehicle.asset.license_plate` | `GET /assets/vehicles` | | `brand` | `vehicle.asset.brand` | `GET /assets/vehicles` | | `model` | `vehicle.asset.model` | `GET /assets/vehicles` | | `year_of_manufacture` | `vehicle.asset.year_of_manufacture` | `GET /assets/vehicles` | | `current_mileage` | `vehicle.asset.current_mileage` | `GET /assets/vehicles` | | `engine` (kW / cmÂł) | `vehicle.asset.power_kw` / `engine_capacity` | `GET /assets/vehicles` | | `fuel_type` | `vehicle.asset.fuel_type` | `GET /assets/vehicles` | | `color` | `individual_equipment.color` (JSONB) | `GET /assets/vehicles` | | `nextService` | `individual_equipment.dates.next_service` (JSONB) | `GET /assets/vehicles` | --- ## 2. JĂĄrmƱ RĂ©szletek (VehicleDetailModal) **FĂĄjl:** `frontend/src/components/vehicle/VehicleDetailModal.vue` A modĂĄl **4 tab**-ot tartalmaz: ### Tab 1: Alapadatok (Basic Data) - **ForrĂĄs:** `vehicle.asset` mezƑi + `individual_equipment` JSONB - **MegjelenĂ­tett:** Engine (kW/LE), body_type, VIN, mileage, transmission, drive_type, fuel_type, trim_level, EV specs, features, dates, documents, trust score ### Tab 2: PĂ©nzĂŒgyek (Finance) - **API:** `GET /assets/{id}/costs` → `finance.asset_costs` - **Tartalom:** Éves TCO, fix/running költsĂ©gek, prĂ©mium chartok, ĂĄtlag fogyasztĂĄs/km költsĂ©g - **HIÁNYZIK:** AssetFinancials (beszerzĂ©s/lĂ­zing), VehicleInsurancePolicy (biztosĂ­tĂĄsok), VehicleTaxObligation (adĂłk) ### Tab 3: FigyelmeztetĂ©sek (Alerts) - **ForrĂĄs:** `individual_equipment.dates.*` (JSONB) - **Tartalom:** insurance_expiry, mot_expiry, next_service, tire_change ### Tab 4: Szervizkönyv (Servicebook) - **API:** `GET /assets/{id}/events` → `vehicle.asset_events` - **MƱvelet:** ListĂĄzĂĄs + POST Ășj esemĂ©ny --- ## 3. ÁttekintĂ©s (OverviewTab) AdatforrĂĄsai **FĂĄjl:** `frontend/src/components/vehicles/tabs/OverviewTab.vue` | Adat | ForrĂĄs | DB TĂĄbla/MezƑ | |------|--------|---------------| | `license_plate` | `inject('vehicle')` | `vehicle.asset.license_plate` | | `brand`, `model` | `inject('vehicle')` | `vehicle.asset.brand/model` | | `year_of_manufacture` | `inject('vehicle')` | `vehicle.asset.year_of_manufacture` | | `fuel_type` | `inject('vehicle')` (i18n) | `vehicle.asset.fuel_type` | | `current_mileage` | `inject('vehicle')` | `vehicle.asset.current_mileage` | | Havi költsĂ©g | `expenseStore.monthlyCost` | `finance.asset_costs` (aggregĂĄlt) | | Havi km | `individual_equipment.monthly_mileage` (JSONB) | `vehicle.asset` | | LegutĂłbbi 3 költsĂ©g | `expenseStore.recentExpenses` | `finance.asset_costs` | | MOT lejĂĄrat | `individual_equipment.dates.mot_expiry` (JSONB) | `vehicle.asset` | | KövetkezƑ szerviz | `individual_equipment.dates.next_service` (JSONB) | `vehicle.asset` | --- ## 4. API LefedettsĂ©g EllenƑrzĂ©s ### AssetResponse lefedettsĂ©g (50+ mezƑ) - **Minden** `vehicle.asset` mezƑ szerepel az `AssetResponse`-ban - A frontend `Vehicle` interface is lefedi az összes mezƑt - **KivĂ©tel:** `cargo_volume_x` Ă©s `cargo_volume_y` közĂŒl csak `cargo_volume_y` van a frontend tĂ­pusban ### Fleet_finance lefedettsĂ©g - `asset_financials` → `GET /assets/vehicles/{id}/financials` - `vehicle_insurance_policies` → `GET /assets/vehicles/{id}/insurance` - `vehicle_tax_obligations` → `GET /assets/vehicles/{id}/taxes` - MindhĂĄrom kĂŒlön API endpointon, teljes CRUD tĂĄmogatĂĄssal ### HiĂĄnyzĂł API endpointok - `VehicleUserRating` → Nincs API (trust score rendszer hiĂĄnyos) - `VehicleTransferRequest` → Nincs API (tulajdonosvĂĄltĂĄs kĂ©zzel) - `VehicleLogbook` → Nincs API (naplĂłzĂĄs hiĂĄnyos) --- ## 5. FeltĂĄrt ProblĂ©mĂĄk ### PROBLÉMA 1: AssetFinancials hiĂĄnya a VehicleDetailModal-bĂłl **SĂșlyossĂĄg:** Magas **LeĂ­rĂĄs:** A VehicleDetailModal PĂ©nzĂŒgyek tabja csak az AssetCost adatokat jelenĂ­ti meg. Az AssetFinancials (beszerzĂ©s, lĂ­zing), VehicleInsurancePolicy (biztosĂ­tĂĄsok) Ă©s VehicleTaxObligation (adĂłk) adatok a kĂŒlön FinancialsTab komponensben Ă©rhetƑk el, ami nem rĂ©sze a modĂĄlnak. **Javaslat:** IntegrĂĄlni a FinancialsTab-ot a VehicleDetailModal-ba, vagy legalĂĄbb linket tenni a teljes pĂ©nzĂŒgyi nĂ©zetre. ### PROBLÉMA 2: is_primary vizuĂĄlis jelzĂ©s hiĂĄnya **SĂșlyossĂĄg:** Közepes **LeĂ­rĂĄs:** Az `is_primary` mezƑ lĂ©tezik (JSONB-bƑl szĂĄmolva), de a VehicleCardStandard nem jelenĂ­ti meg vizuĂĄlisan. **Javaslat:** Csillag/jelvĂ©ny hozzĂĄadĂĄsa a kĂĄrtyĂĄhoz, ha a jĂĄrmƱ elsƑdleges. ### PROBLÉMA 3: Frontend Vehicle tĂ­pushiba **SĂșlyossĂĄg:** Alacsony **LeĂ­rĂĄs:** A frontend Vehicle interface tartalmaz `asset_financials`, `insurance_policies`, `tax_obligations` mezƑket, de ezek nem rĂ©szei a backend AssetResponse sĂ©mĂĄnak - kĂŒlön API hĂ­vĂĄsokkal töltƑdnek be. **Javaslat:** TisztĂĄzni a frontend tĂ­pusokat, opcionĂĄlis mezƑkĂ©nt jelezni, hogy ezek kĂŒlön betöltendƑk. --- ## 6. Adatfolyam Diagram ``` ┌──────────────────┐ GET /assets/vehicles ┌──────────────────┐ │ PostgreSQL DB │ ←─────────────────────────→ │ FastAPI Backend │ │ │ │ │ │ vehicle.asset │ AssetResponse (50+ mezƑ) │ /vehicles GET │ │ vehicle.asset_ │ AssetCatalogResponse │ /vehicles/{id} │ │ catalog │ AssetEventResponse │ /{id}/events │ │ finance.asset_ │ AssetCostResponse │ /{id}/costs │ │ costs │ AssetFinancialsResponse │ /{id}/financials│ │ fleet_finance.* │ VehicleInsurancePolicyResp │ /{id}/insurance │ │ vehicle.asset_ │ VehicleTaxObligationResp │ /{id}/taxes │ │ events │ │ │ └──────────────────┘ └──────────────────┘ │ â–Œ ┌──────────────────┐ │ Vue 3 Frontend │ │ │ │ VehicleCard │ │ → click │ │ → DetailModal │ │ │ │ VehicleDetail │ │ Modal (4 tab) │ │ ├─ Alapadatok │ │ ├─ PĂ©nzĂŒgyek │ │ │ (csak costs) │ │ ├─ Figyelmezt. │ │ └─ Szervizkönyv │ │ │ │ OverviewTab │ │ (inject vehicle │ │ + expenseStore)│ │ │ │ FinancialsTab │ │ (kĂŒlön oldal) │ └──────────────────┘ ``` --- ## 7. KövetkeztetĂ©s **ÖsszessĂ©gĂ©ben az adatfolyam megfelelƑen van felĂ©pĂ­tve.** Az API lefedi az adatbĂĄzis összes fontos mezƑjĂ©t, a frontend komponensek a megfelelƑ API vĂ©gpontokrĂłl olvassĂĄk az adatokat. **FƑbb erƑssĂ©gek:** - Thick Digital Twin koncepciĂł jĂłl implementĂĄlva - AssetResponse minden mezƑt tartalmaz - Fleet_finance modellek kĂŒlön, tiszta API endpointokon - JSONB mezƑk (individual_equipment) rugalmasan hasznĂĄlva **FƑbb hiĂĄnyossĂĄgok:** 1. VehicleDetailModal PĂ©nzĂŒgyek tabja nem tartalmazza a lĂ­zing/biztosĂ­tĂĄs/adĂł adatokat 2. is_primary vizuĂĄlis jelzĂ©s hiĂĄnyzik a kĂĄrtyĂĄn 3. VehicleUserRating, VehicleTransferRequest, VehicleLogbook API-hiĂĄnyos