252 lines
12 KiB
Markdown
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.
|