frontend költség beállítások
This commit is contained in:
180
docs/vehicle_dataflow_audit_2026-06-21.md
Normal file
180
docs/vehicle_dataflow_audit_2026-06-21.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# 🚗 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
|
||||
Reference in New Issue
Block a user