141 lines
7.3 KiB
Markdown
141 lines
7.3 KiB
Markdown
# AssetEvent Service Book – Digitális Szervizkönyv Specifikáció
|
||
|
||
**Verzió:** 2.0.1
|
||
**Dátum:** 2026-03-30
|
||
**Státusz:** Aktív
|
||
**Kapcsolódó issue:** #179 (Asset Refactor Documentation Sync)
|
||
|
||
## 1. Áttekintés
|
||
|
||
Az **AssetEvent** modell a Service Finder digitális szervizkönyvének magja. Minden olyan jelentős eseményt rögzít, amely egy járművel (Asset) történik: szerviz, javítás, baleset, műszaki vizsga, gumicsere, karbantartás, fejlesztés, visszahívás.
|
||
|
||
A Service Book célja, hogy **egyetlen, hiteles forrást** biztosítson a jármű teljes élettörténetéről, összekapcsolva a szervizeseményeket a költségekkel, a kilométerállással és a szolgáltatóval.
|
||
|
||
## 2. Főbb jellemzők
|
||
|
||
### 2.1. Eseménytípusok (AssetEventTypeEnum)
|
||
|
||
| Típus | Leírás | Kapcsolódó költségkategória |
|
||
|-------|--------|-----------------------------|
|
||
| **SERVICE** | Rendszeres szerviz (olajcsere, szűrőcsere, fékellenőrzés) | `maintenance` |
|
||
| **REPAIR** | Hibajavítás (motor, fékrendszer, elektromika) | `repair` |
|
||
| **ACCIDENT** | Baleset (karosszéria javítás, üvegcserék) | `accident` |
|
||
| **INSPECTION** | Műszaki vizsga, környezetvédelmi vizsgálat | `inspection` |
|
||
| **TIRE_CHANGE** | Gumi csere (nyári/téli, sérült gumi) | `tires` |
|
||
| **MAINTENANCE** | Preventív karbantartás (fűtés‑hűtés, futómű) | `maintenance` |
|
||
| **UPGRADE** | Fejlesztés (hangrendszer, navigáció, biztonsági rendszer) | `upgrade` |
|
||
| **RECALL** | Gyártói visszahívás (garanciás javítás) | `recall` (általában ingyenes) |
|
||
|
||
### 2.2. Adatmodell (`vehicle.asset_events` tábla)
|
||
|
||
| Mező | Típus | Kötelező | Leírás |
|
||
|------|-------|----------|--------|
|
||
| `id` | UUID | Igen | Egyedi azonosító |
|
||
| `asset_id` | UUID | Igen | Kapcsolódó Asset (FK: `vehicle.assets.id`) |
|
||
| `user_id` | Integer | Nem | A felhasználó, aki rögzítette (FK: `identity.users.id`) |
|
||
| `organization_id` | Integer | Nem | A szervezet, amelyhez az esemény tartozik (FK: `fleet.organizations.id`) |
|
||
| `event_type` | String(50) | Igen | Az esemény típusa (AssetEventTypeEnum) |
|
||
| `odometer_reading` | Integer | Nem | Km óra állás az esemény időpontjában |
|
||
| `description` | Text | Nem | Szabad szöveges leírás (pl. „Első 15 000 km‑es szerviz”) |
|
||
| `cost_id` | UUID | Nem | Kapcsolódó költségrekord (FK: `vehicle.asset_costs.id`) |
|
||
| `event_date` | DateTime | Igen (default: now) | Az esemény dátuma |
|
||
| `created_at` | DateTime | Igen (default: now) | Rögzítés időpontja |
|
||
| `updated_at` | DateTime | Nem | Utolsó módosítás időpontja |
|
||
|
||
### 2.3. Kapcsolatok
|
||
|
||
- **`asset`** – az eseményhez tartozó jármű (Asset).
|
||
- **`user`** – a felhasználó, aki rögzítette (opcionális).
|
||
- **`organization`** – a szervezet, amelyhez az esemény tartozik (opcionális).
|
||
- **`cost`** – a költségrekord (ha van).
|
||
|
||
## 3. Működési folyamat
|
||
|
||
### 3.1. „Verified Service Entry” létrehozása
|
||
|
||
A **hitelesített szervizbejegyzés** (Verified Service Entry) egy olyan AssetEvent, amely:
|
||
1. **Kapcsolódik egy AssetCost rekordhoz** (`cost_id` kitöltve).
|
||
2. **Van odometer_reading értéke** (a jármű kilométerállása az eseménykor).
|
||
3. **Legalább egy szervezethez vagy felhasználóhoz köthető** (`user_id` vagy `organization_id` kitöltve).
|
||
|
||
A létrehozás lépései:
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[Szerviz teljesítése] --> B[Költség rögzítése AssetCost táblában]
|
||
B --> C{Költség rekord létrejött?}
|
||
C -->|Igen| D[AssetEvent létrehozása cost_id hivatkozással]
|
||
C -->|Nem| E[AssetEvent létrehozása cost_id nélkül]
|
||
D --> F[Verified Service Entry]
|
||
E --> G[Unverified Service Entry]
|
||
```
|
||
|
||
### 3.2. Költségek összekapcsolása
|
||
|
||
Az AssetCost tábla (`vehicle.asset_costs`) a következő mezőket tartalmazza:
|
||
- `asset_id` – a jármű
|
||
- `cost_category` – a költség kategóriája (pl. `maintenance`, `repair`, `fuel`, `insurance`)
|
||
- `amount_net` – nettó összeg
|
||
- `currency` – pénznem
|
||
- `date` – a költség keletkezésének dátuma
|
||
- `invoice_number` – számlaszám (opcionális)
|
||
- `data` – JSONB extra adatok (pl. szolgáltató neve, garancia információ)
|
||
|
||
Amikor egy AssetEvent létrejön `cost_id` hivatkozással, a rendszer automatikusan ki tudja számolni:
|
||
- **Összes szervizköltség** egy adott időszakban.
|
||
- **Átlagos szervizköltség / 10 000 km**.
|
||
- **Legdrágább szervizesemény** az Asset élettartama alatt.
|
||
|
||
### 3.3. Idővonal és jelentések
|
||
|
||
Az AssetEvent rekordok alapján a rendszer képes generálni:
|
||
- **Teljes szerviztörténet** időrendi sorrendben.
|
||
- **Költség‑összesítő** eseménytípusonként.
|
||
- **Kilométer‑alapú szerviz előrejelzés** (pl. „Következő olajcsere 5 000 km múlva”).
|
||
|
||
## 4. API végpontok
|
||
|
||
| Metódus | Útvonal | Leírás |
|
||
|---------|---------|--------|
|
||
| **GET** | `/api/v1/assets/{asset_id}/events` | Egy jármű összes eseményének listázása (szűrhető típus, dátum szerint) |
|
||
| **POST** | `/api/v1/assets/{asset_id}/events` | Új esemény létrehozása |
|
||
| **GET** | `/api/v1/assets/{asset_id}/events/{event_id}` | Egy esemény részletei |
|
||
| **PUT** | `/api/v1/assets/{asset_id}/events/{event_id}` | Esemény módosítása |
|
||
| **DELETE** | `/api/v1/assets/{asset_id}/events/{event_id}` | Esemény törlése (soft‑delete) |
|
||
| **GET** | `/api/v1/assets/{asset_id}/events/summary` | Összesítő statisztika (költség, km, események száma) |
|
||
|
||
## 5. Admin felület integráció
|
||
|
||
Az admin felületen a Service Book a következő módokon jelenik meg:
|
||
|
||
1. **Jármű részletek oldal** – „Szerviztörténet” fül, táblázatos lista az eseményekről.
|
||
2. **Költség‑esemény kapcsolás** – a költségek listáján egy „Szerviznaplóhoz hozzáadás” gomb.
|
||
3. **Exportálás** – CSV vagy PDF formátumban a teljes szerviztörténet letöltése.
|
||
4. **Értesítések** – ha egy esemény típusa „RECALL”, a rendszer értesíti a tulajdonost.
|
||
|
||
## 6. Példa: Teljes szervizfolyamat
|
||
|
||
1. **Jármű:** 2018‑as Toyota Corolla (Asset ID: `abc123`)
|
||
2. **Szerviz:** 30 000 km‑es nagyszerviz (olaj, szűrők, fékbetét).
|
||
3. **Költség rögzítése:**
|
||
- `AssetCost` rekord létrehozása:
|
||
- `cost_category`: `maintenance`
|
||
- `amount_net`: 85 000 HUF
|
||
- `invoice_number`: `INV‑2026‑0330‑001`
|
||
4. **Esemény létrehozása:**
|
||
- `event_type`: `SERVICE`
|
||
- `odometer_reading`: 30 150
|
||
- `description`: „30 000 km‑es nagyszerviz – olaj, szűrők, fékbetét”
|
||
- `cost_id`: (a fenti AssetCost rekord ID‑ja)
|
||
5. **Eredmény:** A Toyota Corolla szerviztörténetében megjelenik a bejegyzés, a költségek automatikusan hozzáadódnak a TCO számításhoz.
|
||
|
||
## 7. Jövőbeli bővítések
|
||
|
||
- **OCR‑alapú számlafelismerés** – a feltöltött számlákból automatikus AssetEvent generálás.
|
||
- **AI‑javaslatok** – a korábbi események alapján javasolt szervizintervallumok.
|
||
- **Szolgáltatói portál** – külső szervizek közvetlen rögzítése a Service Bookba.
|
||
- **Garancia követés** – garanciális események külön kezelése, lejárati figyelmeztetések.
|
||
|
||
## 8. Összefoglaló
|
||
|
||
Az **AssetEvent Service Book** a Service Finder 2.0.1 egyik legfontosabb vállalati funkciója. Nem csupán napló, hanem egy **élő, összekapcsolt adatháló**, amely lehetővé teszi a járművek teljes életciklusának nyomon követését, a költségek pontos elszámolását és a flotta megbízhatóságának folyamatos javítását. |