Files
service-finder/docs/vehicle_api_frontend_architecture.md

252 lines
12 KiB
Markdown

# 🚗 Service Finder - Jármű API és Frontend Architektúra Elemzés
> **Verzió:** 1.0
> **Dátum:** 2026-06-05
> **Szerző:** Rendszer-Architect
> **Cél:** A backend jármű API teljes áttekintése és frontend csoportosítási javaslat
---
## 1. 📊 Backend API Réteg - Teljes Végpont Térkép
A FastAPI routerek a `backend/app/api/v1/api.py` fájlban vannak összefogva. Az összes járművel kapcsolatos végpont az alábbi prefixek alatt fut:
### 1.1 `/assets` prefix - Jármű (Asset) Menedzsment
**Router:** `backend/app/api/v1/endpoints/assets.py`
| Metódus | Végpont | Cél | Adatbázis kapcsolat |
|---------|---------|-----|---------------------|
| GET | /assets/vehicles | Felhasználó járműveinek listázása (Garázs). Paginált. Támogatja: személyes mód (owner/operator) és vállalati mód (szervezet garázsai/Branch-ek). | Asset - vehicle.assets tábla |
| POST | /assets/vehicles | Új jármű hozzáadása vagy meglévő igénylése. Ellenőrzi a járműlimitet, kezeli a VIN duplikációt, XP jutalmat ad. | Asset |
| GET | /assets/{asset_id} | Jármű részletes adatai (katalógus adatokkal együtt). Jogosultság ellenőrzés (tulajdonos/szervezet). | Asset + AssetCatalog |
| GET | /assets/{asset_id}/financial-summary | Pénzügyi riport - kategóriákra bontott összesítés (Local/EUR). | AssetCost |
| GET | /assets/{asset_id}/costs | Tételes költséglista lapozással. | AssetCost |
| GET | /assets/{asset_id}/maintenance | Szerviznapló - karbantartási költségek listája. | AssetCost - cost_category='maintenance' |
| POST | /assets/{asset_id}/maintenance | Szervizbejegyzés hozzáadása (date, odometer, description, cost). Létrehoz AssetEvent-et is. | AssetCost + AssetEvent |
### 1.2 `/catalog` prefix - Jármű Katalógus
**Router:** `backend/app/api/v1/endpoints/catalog.py`
| Metódus | Végpont | Cél | Adatbázis kapcsolat |
|---------|---------|-----|---------------------|
| GET | /catalog/makes | Márkák listázása (opcionálisan vehicle_class szerint szűrve). | AssetCatalog |
| GET | /catalog/models | Típusok listázása adott márkához. | AssetCatalog |
| GET | /catalog/generations | Generációk/Évjáratok adott márka+típushoz. | AssetCatalog |
| GET | /catalog/engines | Motorváltozatok és technikai specifikációk (ID, engine_code, fuel_type, factory_data). | AssetCatalog |
### 1.3 `/vehicles` prefix - Jármű Értékelések
**Router:** `backend/app/api/v1/endpoints/vehicles.py`
| Metódus | Végpont | Cél | Adatbázis kapcsolat |
|---------|---------|-----|---------------------|
| POST | /vehicles/{vehicle_id}/ratings | Jármű értékelése 4 dimenzióban (driving_experience, reliability, comfort, consumption_satisfaction 1-10). Egy user csak egyszer értékelhet. | VehicleUserRating |
| GET | /vehicles/{vehicle_id}/ratings | Értékelések lekérése adott járműhöz. | VehicleUserRating |
### 1.4 `/expenses` prefix - Flotta Költségek (TCO)
**Router:** `backend/app/api/v1/endpoints/expenses.py`
| Metódus | Végpont | Cél | Adatbázis kapcsolat |
|---------|---------|-----|---------------------|
| POST | /expenses/ | Költség rögzítése (üzemanyag, szerviz, adó, biztosítás). Dynamic Gatekeeper: draft jármű limit ellenőrzés. | AssetCost + SystemParameter |
### 1.5 `/analytics` prefix - Jármű Analitika
**Router:** `backend/app/api/v1/endpoints/analytics.py`
| Metódus | Végpont | Cél | Adatbázis kapcsolat |
|---------|---------|-----|---------------------|
| GET | /analytics/{vehicle_id}/summary | TCO összesítő járművenként (user costs, lifetime costs, benchmark). | AssetCost, VehicleModelDefinition |
| GET | /analytics/dashboard | Dashboard analitika (mock data - havi költségek, üzemanyag-hatékonyság, cost/km trendek). | Jelenleg mock |
### 1.6 További kapcsolódó végpontok
| Metódus | Végpont | Cél | Router helye |
|---------|---------|-----|-------------|
| POST | /documents/upload/{parent_type}/{parent_id} | Dokumentumfeltöltés járműhöz | documents.py |
| POST | /evidence/scan-registration | OCR regisztrációs dokumentum szkennelés | evidence.py |
| GET | /search/match | Geo-keresés PostGIS segítségével | search.py |
| POST | /services/hunt | Szerviz vadászat indítása | services.py |
| GET | /reports/summary/{vehicle_id} | Jármű összesítő jelentés | reports.py |
| GET | /reports/trends/{vehicle_id} | Jármű trend jelentés | reports.py |
---
## 2. 🗄️ Adatbázis Modell Réteg - Jármű Domain
### 2.1 Core Asset Model - A "Digital Twin"
Az Asset modell (backend/app/models/vehicle/asset.py) a központi entitás:
```
Asset ──┬── AssetCatalog (katalógus kapcsolat)
├── AssetFinancials (pénzügyi adatok)
├── AssetCost (költségnapló)
├── AssetEvent (eseménynapló - Digitális Szervizkönyv)
├── VehicleLogbook (útnyilvántartás)
├── AssetInspection (ellenőrzési napló)
├── AssetReview (értékelések)
├── AssetTelemetry (telemetria)
├── AssetAssignment (szervezeti hozzárendelés)
├── VehicleOwnership (tulajdonosváltás)
└── ServiceRequest (szervizkérések)
```
### 2.2 Főbb Modellek Leírása
| Modell | Tábla (séma) | Cél |
|--------|-------------|-----|
| Asset | vehicle.assets | Fizikai eszköz (Digital Twin) - Minden adat itt fut össze |
| AssetCatalog | vehicle.vehicle_catalog | Jármű katalógus mesteradatok |
| VehicleModelDefinition | vehicle.vehicle_model_definitions | Multi-Tier MDM Master - technikai igazságforrás |
| VehicleType | vehicle.vehicle_types | Jármű kategóriák |
| CostCategory | vehicle.cost_categories | Standardizált költségkategória fa |
| AssetCost | vehicle.asset_costs | Üzemeltetési költség (TCO) |
| AssetEvent | vehicle.asset_events | Digitális Szervizkönyv események |
| VehicleOdometerState | vehicle.vehicle_odometer_states | Km óra állapot és becslés |
| VehicleUserRating | vehicle.vehicle_user_ratings | Jármű értékelés 4 dimenzióban |
---
## 3. 🔌 Jelenlegi Frontend Implementáció
### 3.1 Garázs Nézet (DashboardView.vue)
A frontend egy egységes garázs nézetet használ, ahol az összes jármű egy grid-ben jelenik meg:
- Adatforrás: GET /api/v1/assets/vehicles -> vehicleStore.fetchVehicles()
- Megjelenítés: Minden jármű egy kártyán, amely tartalmazza az EU-s rendszámtáblát, márka+modell nevet, gyártási évet, állapot score-t, futott km-t, státusz badge-t
- UI élmény: Zen mód (UI elrejtése), 3D téreffektusok
### 3.2 Hiányzó Frontend Funkciók
A backend által biztosított API-k közül a frontend CSAK a járműlista lekérést használja. Az alábbi funkciók NINCSENEK implementálva:
- Jármű hozzáadása (POST /assets/vehicles)
- Jármű részletes adatlapja (GET /assets/{id})
- Költségnapló megjelenítése/rögzítése
- Szerviznapló (karbantartási rekordok)
- Katalógus böngésző (márka -> modell -> generáció -> motor)
- TCO analitika és dashboard
- Jármű értékelés
- Dokumentumfeltöltés
- Útnyilvántartás (logbook)
---
## 4. 🎯 Frontend Csoportosítási Javaslat
### 4.1 Javasolt Menü Szerkezet
Az alábbi csoportosítás a DDD (Domain-Driven Design) elveket követi, és a felhasználói élményt (UX) helyezi előtérbe:
```
GARÁZS (fő nézet)
├── 🔧 JÁRMŰVEK
│ ├── Garázs áttekintés <- Jelenlegi DashboardView
│ ├── Jármű hozzáadása <- POST /assets/vehicles
│ ├── Katalógus böngésző <- GET /catalog/makes -> models -> engines
│ └── Jármű részletek <- GET /assets/{id}
├── 📊 PÉNZÜGYEK & TCO
│ ├── Költségnapló <- GET /assets/{id}/costs, POST /expenses
│ ├── Pénzügyi riport <- GET /assets/{id}/financial-summary
│ ├── TCO Analitika <- GET /analytics/{id}/summary
│ └── Dashboard analitika <- GET /analytics/dashboard
├── 🔧 KARBANTARTÁS
│ ├── Szerviznapló <- GET /assets/{id}/maintenance
│ ├── Új szerviz bejegyzés <- POST /assets/{id}/maintenance
│ ├── Eseménynapló <- AssetEvent adatok
│ └── Km óra állapot <- GET /admin/odometer/{id}
├── 📄 DOKUMENTUMOK
│ ├── Feltöltés <- POST /documents/upload/vehicle/{id}
│ └── OCR szkennelés <- POST /evidence/scan-registration
└── ⭐ KÖZÖSSÉG
├── Értékelés <- POST /vehicles/{id}/ratings
└── Vélemények <- GET /vehicles/{id}/ratings
```
### 4.2 Javasolt Vue Router Struktúra
```
/dashboard Garázs áttekintés (DashboardView)
/vehicles/add Jármű hozzáadása
/vehicles/catalog Katalógus böngésző
/vehicles/{id} Jármű részletes nézet
/vehicles/{id}/costs Költségek
/vehicles/{id}/maintenance Szerviznapló
/vehicles/{id}/analytics TCO Analitika
/vehicles/{id}/documents Dokumentumok
/vehicles/{id}/ratings Értékelések
```
### 4.3 Javasolt Store Bővítés
A jelenlegi vehicleStore bővítendő az alábbiakkal:
```
ÚJ state-ek:
- selectedVehicle Aktuálisan kiválasztott jármű
- vehicleCosts Költségnapló tételek
- maintenanceRecords Szerviz rekordok
- financialSummary Pénzügyi összesítő
ÚJ katalógus state-ek:
- catalogMakes Márkák listája
- catalogModels Modellek listája
- catalogGenerations Generációk listája
- catalogEngines Motorváltozatok listája
ÚJ action-ök:
- fetchVehicleDetail(id)
- createVehicle(payload)
- fetchCosts(assetId)
- createExpense(payload)
- fetchMaintenance(assetId)
- fetchFinancialSummary(assetId)
- fetchAnalytics(assetId)
- fetchMakes(vehicleClass?)
- fetchModels(make)
- fetchGenerations(make, model)
- fetchEngines(make, model, gen)
```
### 4.4 UX/UI Javaslatok
1. **Garázs Szűrők:** A járművek szűrhetők legyenek járműosztály (personal, motorcycle, commercial), státusz (active, draft, maintenance) és márka szerint.
2. **Jármű Kártya Információs Rétegek:**
- 1. réteg (alap): Rendszám, márka, modell, státusz - látszik a grid-ben
- 2. réteg (hover): Gyors infók (km, állapot, utolsó szerviz)
- 3. réteg (kattintás): Teljes részletes nézet
3. **TCO Dashboard:** A garázs nézet tetején egy összesítő sáv (teljes flotta km, havi költség, átlagos állapot). Minden járműkártyán egy "TCO" gomb.
4. **Katalógus Böngésző:** Lépcsőzetes dropdown-ok (márka -> modell -> generáció -> motor). Gyors hozzáadás: "Add this to my garage" gomb.
---
## 5. 📝 Összefoglalás
A backend rendelkezésre álló API végpontok lefedik a járműkezelés teljes életciklusát:
| Fázis | API Végpontok | Állapot |
|-------|--------------|---------|
| Felfedezés (Katalógus) | /catalog/makes, /catalog/models, /catalog/generations, /catalog/engines | Backend kész |
| Létrehozás | POST /assets/vehicles | Backend kész |
| Megtekintés (Garázs) | GET /assets/vehicles, GET /assets/{id} | Backend kész, Frontend részleges |
| Költségkövetés (TCO) | POST /expenses/, GET /assets/{id}/costs, GET /assets/{id}/financial-summary | Backend kész, Frontend hiányzik |
| Karbantartás | GET/POST /assets/{id}/maintenance | Backend kész, Frontend hiányzik |
| Analitika | GET /analytics/{id}/summary, GET /analytics/dashboard | Backend kész (részben mock), Frontend hiányzik |
| Értékelés | GET/POST /vehicles/{id}/ratings | Backend kész, Frontend hiányzik |
| Dokumentumok | POST /documents/upload/{parent_type}/{parent_id} | Backend kész, Frontend hiányzik |
**Következtetés:** A backend erős alapokon áll a járműkezeléshez. A frontenden a garázs nézet (DashboardView) csak a járművek listázását valósítja meg. A javasolt csoportosítás (Járművek -> Pénzügyek -> Karbantartás -> Dokumentumok -> Közösség) egy logikus, felhasználó-központú navigációs struktúrát adna a teljes jármű életciklus kezeléséhez.