Járműkezelés majdnem kész frontend

This commit is contained in:
Roo
2026-06-11 11:22:47 +00:00
parent 90e3173fbc
commit 0a3fd8de74
18 changed files with 2749 additions and 99 deletions

View File

@@ -0,0 +1,120 @@
# 🚗 Járműszerkesztés 404-es hiba - Teljes analízis és javítási terv
## 📋 Probléma Leírása
A manager dashboardon a járműkártya szerkesztésekor a **Mentés** gombra kattintva a böngésző `PUT /api/v1/assets/vehicles/{id}` kérést küld, amely **HTTP 404 Not Found** hibával tér vissza.
---
## 🔍 Root Cause #1 - Stale uvicorn folyamat (MÁR JAVÍTVA)
### Tünet
A PUT végpont 404-et adott, pedig a kód a fájlokban létezett.
### Ok
A [`sf_api`](docker-compose.yml:21) konténerben az uvicorn [`--reload` nélkül](backend/app/scripts/pre_start.sh) indult PID 1-ként. Amikor a kódot módosították a konténer indulása után, a futó Python folyamat továbbra is a **régi, cache-elt modulokat** használta (`sys.modules`).
### Bizonyíték
- TestClient (friss Python import): `PUT /vehicles/{id}`**401** (route létezik) ✅
- httpx a futó uvicorn-hoz: `PUT /vehicles/{id}`**404** (route nem létezik a cache-ben) ❌
### Javítás
```bash
docker compose restart sf_api
```
**Elvégezve** - a konténer újraindult, a PUT végpont már 401-et ad (route létezik, auth kell).
---
## 🔍 Root Cause #2 - Dual Entity ID mismatch (MÉG JAVÍTANDÓ)
### Tünet
A konténer újraindítás után a PUT végpont 401 helyett **továbbra is 404-et ad** hitelesített kérésekre.
### Ok
A projekt **Dual Entity** modellt használ:
- `User` tábla (`id` = 28) - technikai fiók
- `Person` tábla (`id` = 29) - valós személy
A járművek (`Asset`) `owner_person_id` mezője a **Person ID-t** (29) tárolja. A GET végpont helyesen használja a `current_user.person_id`-t, de a PUT végpont hibásan `current_user.id`-t használ.
### Hiba helye
[`backend/app/api/v1/endpoints/assets.py`](backend/app/api/v1/endpoints/assets.py), 278. és 280. sor:
```python
Asset.owner_person_id == current_user.id, # 278: HIBA - .id helyett .person_id kell
Asset.operator_person_id == current_user.id, # 280: HIBA - .id helyett .person_id kell
```
### Helyes megoldás
A [`GET /vehicles`](backend/app/api/v1/endpoints/assets.py:62-63) végpont mintája alapján:
```python
Asset.owner_person_id == current_user.person_id, # ✅
Asset.operator_person_id == current_user.person_id, # ✅
```
### Tesztelési eredmények
| Teszt | Eredmény | Státusz |
|-------|----------|---------|
| `current_user.id` = 28 | `Asset.owner_person_id(29) == 28` → false → 404 | ❌ |
| `current_user.person_id` = 29 | `Asset.owner_person_id(29) == 29` → true → 200 | ✅ (várt) |
---
## ✅ Backend-Adatbázis Kommunikáció
```json
GET /health {"status": "ok", "database": "connected"}
```
**Adatbázis kapcsolat rendben működik.**
---
## 📝 Javítási Terv
### 1. Backend javítás (PUT végpont)
**Fájl:** `backend/app/api/v1/endpoints/assets.py`
**Módosítandó sorok:** 278, 280
```python
# 278. sor HIBA:
Asset.owner_person_id == current_user.id,
# 278. sor JAVÍTVA:
Asset.owner_person_id == current_user.person_id,
# 280. sor HIBA:
Asset.operator_person_id == current_user.id,
# 280. sor JAVÍTVA:
Asset.operator_person_id == current_user.person_id,
```
### 2. Frontend ellenőrzés
A frontend kód (`VehicleFormModal.vue` és `vehicle.ts`) helyesen hívja a `PUT /assets/vehicles/{id}` végpontot. **Nem szorul javításra.**
### 3. Tesztelés javítás után
```bash
# 1. Bejelentkezés
curl -X POST https://app.servicefinder.hu/api/v1/auth/login \
-d "username=tester_pro@profibot.hu&password=Tesztelek99!"
# 2. Jármű lista lekérése
curl -H "Authorization: Bearer {token}" \
https://app.servicefinder.hu/api/v1/assets/vehicles
# 3. Jármű szerkesztése (az első jármű ID-jával)
curl -X PUT -H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"current_mileage": 50000}' \
https://app.servicefinder.hu/api/v1/assets/vehicles/{id}
# Várt eredmény: HTTP 200 + frissített jármű adatok
```
---
## 📊 Összefoglaló táblázat
| # | Hiba | Státusz | Javítás |
|---|------|---------|---------|
| 1 | uvicorn --reload nélkül fut, nem tölti be az új kódot | ✅ Javítva (restart) | `docker compose restart sf_api` |
| 2 | PUT végpontban `current_user.id` vs `current_user.person_id` mismatch | ❌ Javítandó | `assets.py:278,280` `.id``.person_id` |
| 3 | Adatbázis kapcsolat | ✅ Rendben | Health check OK |
| 4 | Frontend kód | ✅ Rendben | Nem szorul javításra |