Files
service-finder/docs/vehicle_dataflow_audit_2026-06-21.md
2026-06-23 21:11:21 +00:00

181 lines
9.3 KiB
Markdown

# 🚗 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