belépés jó, rgisztráción kicsit faragni kell még
This commit is contained in:
251
docs/vehicle_api_frontend_architecture.md
Normal file
251
docs/vehicle_api_frontend_architecture.md
Normal file
@@ -0,0 +1,251 @@
|
||||
# 🚗 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.
|
||||
Reference in New Issue
Block a user