Files
service-finder/docs/masterbook_2.0.1/service_book_specification.md
2026-03-31 06:20:43 +00:00

141 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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éshű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 kmes 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éteralapú 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 (softdelete) |
| **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égesemé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ű:** 2018as Toyota Corolla (Asset ID: `abc123`)
2. **Szerviz:** 30 000 kmes 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`: `INV20260330001`
4. **Esemény létrehozása:**
- `event_type`: `SERVICE`
- `odometer_reading`: 30 150
- `description`: „30 000 kmes nagyszerviz olaj, szűrők, fékbetét”
- `cost_id`: (a fenti AssetCost rekord IDja)
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
- **OCRalapú számlafelismerés** a feltöltött számlákból automatikus AssetEvent generálás.
- **AIjavaslatok** 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.