admin frontend elkezdése, járművek tisztázása, frontend fejleszts

This commit is contained in:
Roo
2026-06-15 18:52:38 +00:00
parent ef8df9608c
commit 213ba3b0f1
80 changed files with 11615 additions and 2304 deletions

View File

@@ -0,0 +1,285 @@
# Gitea Kártyaállapot Elemzés & Programfejlesztési Áttekintés
**Dátum:** 2026-06-15 (Hétfő)
**Összehasonlítási alap:** [`docs/gitea_open_cards_summary_2026-06-09.md`](docs/gitea_open_cards_summary_2026-06-09.md)
**Lekért adatok:** Nyitott kártyák (62 db), Lezárt kártyák (~110+ db), Git log
---
## 1. Összesített Statisztika
### Alapadatok
| Mutató | 2026-06-09 | 2026-06-15 | Változás |
|--------|-----------|-----------|----------|
| **Összes nyitott kártya** | 63 | 62 | **-1** |
| **Összes lezárt kártya** | ~100+ | ~110+ | **+10+** |
| **Git commit-ek** | - | 3 új commit | `90e3173`, `0a3fd8d`, `ef8df96` |
| **Commit nélküli módosított fájlok** | - | **50+ fájl** | Uncommitted changes |
### Nyitott kártyák megoszlása mérföldkövenként
| Mérföldkő / Csoport | Jún. 9 | Jún. 15 | Változás |
|---------------------|--------|---------|----------|
| **Grafikai Komponensek & Frontend Skin Rendszer** | 4 | 4 | ±0 (belső csere) |
| **Frontend Architektúra 2.0 & Dinamikus Megjelenítés** | 20 | 20 | ±0 (belső csere) |
| **Phase 4: Testing & Deployment** | 7 | 7 | ±0 |
| **Phase 3: Advanced Features & Epic 11** | 6 | 6 | ±0 |
| **Phase 2: Dashboard & Analytics Wiring** | 6 | 6 | ±0 |
| **Phase 1: Core Functionality Fixes** | 4 | 3 | **-1** |
| **Egyéb / Nincs mérföldkő** | 16 | 16 | ±0 |
| **ÖSSZESEN** | **63** | **62** | **-1** |
---
## 2. Részletes Változások Június 9 → Június 15 Között
### 2.1 Lezárt Kártyák (Jelentősebbek)
Az alábbi kártyák kerültek lezárásra a vizsgált időszakban:
#### Újonnan létrehozott ÉS lezárt kártyák
| ID | Cím | Mérföldkő |
|----|-----|-----------|
| #261 | Frontend: Account Restore, Last Admin Warning | - |
| #260 | Identity-Preserving Soft Delete & Asset | - |
| #259 | Clean Odometer & Switcher Logic - Vehicle | - |
| #258 | Audit: Odometer rendszer duplikáció vizsgálat | - |
| #257 | Kettős Védelem (Double-Shield) Organization | - |
| #254 | Standard & Prémium Kártyavázak (Blueprints) | Grafikai Komponensek |
| #251 | Háttérkép: garage_private_default.png | Grafikai Komponensek |
| #237 | 1.1-A: Backend API endpoints visual_settings | Frontend Arch. 2.0 |
| #235 | 4.1: 'App Store' típusú kiterjedő kártya | Frontend Arch. 2.0 |
| #228 | 1.1: Adatbázis sémák bővítése vizuális konfighoz | Frontend Arch. 2.0 |
#### Phase 1-ben lezárt kártya
| ID | Cím | Megjegyzés |
|----|-----|------------|
| #144 | Fix Authentication Endpoint Mismatch | **Az egyetlen Phase 1 kártya, ami lezárásra került** |
#### NAV API & Backend infrastruktúra
| ID | Cím |
|----|-----|
| #223 | NAV API kapcsolat javítása - XML sablon |
| #222 | NAV API hibakezelés szétválasztása |
| #221 | NAV Online Számla API v3 Integráció |
#### Company Onboarding & Frontend
| ID | Cím |
|----|-----|
| #220 | Frontend: Company Onboarding 3-Step Wizard |
| #219 | Frontend: Cég Garázsa gomb a header-ben |
### 2.2 Új Nyitott Kártyák (A Két Időpont Között Jöttek Létre)
Ezek a kártyák a június 9-i listában még nem szerepeltek, most viszont nyitottak:
| ID | Cím | Mérföldkő |
|----|-----|-----------|
| #256 | Skin Rendszer Alapok - Dinamikus Háttérv | Grafikai |
| #255 | Lucide Ikonkészlet Integráció | Grafikai |
| #253 | Háttérkép: garage_theme_dark.png | Grafikai |
| #252 | Háttérkép: garage_company_clean.png | Grafikai |
| #250 | 4.2-A: ContextAlert.vue + useAlert | Frontend Arch 2.0 |
| #249 | 4.1-A: ExpansionCard.vue + animációk | Frontend Arch 2.0 |
| #248 | 3.2-B: AppThemeStore + apply | Frontend Arch 2.0 |
| #247 | 3.2-A: CSS Custom Properties | Frontend Arch 2.0 |
| #246 | 3.1-B: Hardcoded szövegek cseréje | Frontend Arch 2.0 |
| #245 | 3.1-A: Hiányzó i18n kulcsok felvétele | Frontend Arch 2.0 |
| #244 | 2.2-B: View-ok áthelyezése nested struktúrába | Frontend Arch 2.0 |
| #243 | 2.2-A: Route meta kiterjesztés | Frontend Arch 2.0 |
| #242 | 2.1-B: Layout-váltó gombok | Frontend Arch 2.0 |
| #241 | 2.1-A: Layout-ok átnevezése | Frontend Arch 2.0 |
| #240 | 1.2-B: Frontend useFeatureFlag() | Frontend Arch 2.0 |
| #239 | 1.2-A: Backend subscription_service | Frontend Arch 2.0 |
| #238 | 1.1-B: Frontend useVisualSettings() | Frontend Arch 2.0 |
**Fontos:** A Frontend Architektúra 2.0 kártyák NEM bővültek (20 → 20), hanem a nagyobb epikus kártyák (#228, #235, #237) lezárásra kerültek, és helyettük részletesebb alkártyák (#238-#250) nyíltak. Ez **tervszerű finomítás**, nem feladatbővülés.
---
## 3. Git Változások Elemzése
### 3.1 Commit-ek a Június 9 óta
| Commit | Dátum kb. | Üzenet | Értelmezés |
|--------|-----------|--------|------------|
| `90e3173` | 2026-06-10 | `frontend 2026-06-10 bontva a 2 felület` | Frontend szétválasztása B2C és B2B felületekre |
| `0a3fd8d` | 2026-06-11 | `Járműkezelés majdnem kész frontend` | Vehicle management frontend majdnem kész |
| `ef8df96` | 2026-06-12 | `egyedi jármű szerkesztés előtti mentés` | Egyedi jármű szerkesztés mentése |
### 3.2 Módosított Fájlok (Commitálva)
**Backend (modell/séma réteg):**
- `backend/app/models/vehicle/vehicle.py` — Vehicle modell változások
- `backend/app/models/vehicle/asset.py` — Asset modell változások
- `backend/app/models/vehicle/vehicle_definitions.py` — Definíciók
- `backend/app/models/identity/identity.py` — Identity modell
- `backend/app/models/core_logic.py` — Core logika
- `backend/app/models/marketplace/organization.py` — Organization
- `backend/app/schemas/asset.py`, `asset_cost.py`, `organization.py`, `user.py`
**Backend (szolgáltatások):**
- `backend/app/services/auth_service.py` — +264 sor (jelentős bővítés)
- `backend/app/services/asset_service.py` — +110 sor
- `backend/app/services/gamification_service.py` — +45 sor
- `backend/app/services/odometer_service.py` — Jelentős átírás (-220 sor)
**Backend (API végpontok):**
- `backend/app/api/v1/endpoints/admin.py` — +387 sor (jelentős admin API bővítés)
- `backend/app/api/v1/endpoints/organizations.py` — +355 sor
- `backend/app/api/v1/endpoints/auth.py`, `catalog.py`, `users.py`, `assets.py`, `expenses.py`
**Frontend:**
- `frontend/src/layouts/OrganizationLayout.vue`, `PrivateLayout.vue` — Layout átalakítások
- `frontend/src/views/DashboardView.vue` — Dashboard bővítés
- `frontend/src/views/ProfileView.vue` — Profil nézet
- `frontend/src/components/header/HeaderCompanySwitcher.vue`, `HeaderProfile.vue`
- `frontend/src/components/dashboard/VehicleFormModal.vue`, `PrivateVehicleManager.vue`, `ComplexExpenseModal.vue`, `SimpleFuelModal.vue`
- `frontend/src/components/vehicle/VehicleDetailModal.vue`
- `frontend/src/stores/auth.ts`, `cost.ts`
- `frontend/src/router/index.ts`
- `frontend/src/i18n/hu.ts`, `en.ts`
- `frontend/src/components/LoginModal.vue`
- `frontend/src/layouts/AdminLayout.vue`
### 3.3 Commit Nélküli Változások
A `git diff --stat` szerint **50+ fájl** módosult, de nincs commitolva. Ez jelentős mennyiségű munkát jelez, ami még nem került rögzítésre a Git történetben.
---
## 4. Programfejlesztési Állapot Értékelés
### 4.1 Erősségek ✅
1. **Jelentős backend előrelépés:** Az admin API (+387 sor), organization API (+355 sor) és auth service (+264 sor) jelentős bővítése.
2. **Frontend modularizáció:** A layout-ok szétválasztása (PrivateLayout, OrganizationLayout) és a hamburger menü bevezetése a privát nézetbe.
3. **NAV API integráció kész:** A NAV Online Számla v3 (#221, #222, #223) és a Company Onboarding (#220, #219) kártyák lezárása.
4. **Odometer duplikáció megszüntetve:** #258 (Audit) és #259 (Clean) lezárása.
5. **Skin rendszer alapjai:** #251 (garage_private_default.png) és #254 (Standard & Prémium kártyavázak) lezárása.
### 4.2 Gyengeségek ⚠️
1. **Frontend Architektúra 2.0 dominancia:** 20 nyitott kártya = a teljes nyitott készlet **32%-a**.
2. **Phase 2, 3, 4 érintetlen:** 19 kártya a Dashboard, Advanced Features és Testing mérföldkövekben — egyik sem lett lezárva.
3. **Kevés commit (3 db 5 nap alatt):** A sok módosított, de nem commitolt fájl kockázatot jelent.
4. **Egyéb / Nincs mérföldkő (16 kártya, 26%):** Számos fontos feladat nincs mérföldkőhöz rendelve.
### 4.3 Kockázatok 🔴
1. **Commit hiány:** Ha az 50+ módosított fájl elveszne, jelentős munka veszne oda.
2. **Frontend vs. Backend aszinkronitás:** A két réteg eltérő ütemben fejlődhet.
3. **Tesztelési adósság:** 7 Phase 4 kártya egyike sem kezdődött el.
### 4.4 Javaslatok 📋
1. **Git commit-ek rendszeresítése** napi legalább 1 commit a `main` branch-re.
2. **Phase 2 kártyák priorizálása:** Analytics Service (TCO/km) és Financial Dashboard (#147, #149, #152).
3. **Mérföldkő hozzárendelés** a 16 "Nincs mérföldkő" kártyához.
4. **Tesztelés beindítása:** Legalább 1-2 Phase 4 kártya (#159, #160) megkezdése.
---
## 5. Nyitott Kártyák Teljes Listája (62 db)
### Grafikai Komponensek & Frontend Skin Rendszer (4)
| ID | Cím |
|----|-----|
| #256 | Skin Rendszer Alapok - Dinamikus Háttérv |
| #255 | Lucide Ikonkészlet Integráció (lucide-vue) |
| #253 | Háttérkép: garage_theme_dark.png |
| #252 | Háttérkép: garage_company_clean.png (sf_public) |
### Frontend Architektúra 2.0 & Dinamikus Megjelenítési Rendszer (20)
| ID | Cím |
|----|-----|
| #250 | 4.2-A: ContextAlert.vue komponens + useAlert |
| #249 | 4.1-A: ExpansionCard.vue komponens + animációk |
| #248 | 3.2-B: AppThemeStore létrehozása + apply |
| #247 | 3.2-A: CSS Custom Properties + tailwind.config |
| #246 | 3.1-B: Hardcoded szövegek cseréje 5 komponensben |
| #245 | 3.1-A: Hiányzó i18n kulcsok felvétele |
| #244 | 2.2-B: View-ok áthelyezése nested struktúrába |
| #243 | 2.2-A: Route meta kiterjesztés + beforeE |
| #242 | 2.1-B: Layout-váltó gombok (Privát <-> Cég) |
| #241 | 2.1-A: Layout-ok átnevezése és `<slot />` |
| #240 | 1.2-B: Frontend useFeatureFlag() composable |
| #239 | 1.2-A: Backend subscription_service + |
| #238 | 1.1-B: Frontend useVisualSettings() composable |
| #236 | 4.2: Kontextuális Vészjelző Rendszer |
| #234 | 3.2: Tailwind CSS Változók és Témakezelő |
| #233 | 3.1: Jelenlegi állapot felmérése & Szövegek |
| #232 | 2.2: Vue Router átírás (Nested Routing) |
| #231 | 2.1: Független Layout komponensek felépítése |
| #230 | 1.3: Dinamikus és Statikus funkciókapcsolás |
| #229 | 1.2: Engedélyezési szintek és Funkciókapcsolás |
### Phase 4: Testing & Deployment (7)
| ID | Cím |
|----|-----|
| #165 | Production Deployment and Monitoring Setup |
| #164 | CI/CD Pipeline Setup (GitHub Actions) |
| #163 | Security Audit (Penetration Testing) |
| #162 | Accessibility Audit and Fixes (WCAG 2.1) |
| #161 | Performance Optimization (Bundle Size) |
| #160 | Implement Integration Tests (Playwright) |
| #159 | Write Unit Tests for Critical Components |
### Phase 3: Advanced Features & Epic 11 (6)
| ID | Cím |
|----|-----|
| #158 | Implement Advanced Search with Filters |
| #157 | Add Bulk Operations (Vehicle Import, Mass) |
| #156 | Implement Webhook and Notification System |
| #155 | Add Admin Control Panels |
| #154 | Implement Service Booking Flow |
| #153 | Complete Profile Selector (Private vs Co) |
### Phase 2: Dashboard & Analytics Wiring (6)
| ID | Cím |
|----|-----|
| #152 | Implement Historical Data (occurrence_date) |
| #151 | Connect User Management Table to Real Data |
| #150 | Wire Service Map with Real Provider Data |
| #149 | Implement Analytics Service (TCO/km Calc) |
| #148 | Connect Gamification Components to Real Data |
| #147 | Wire Financial Dashboard to Real Finance Data |
### Phase 1: Core Functionality Fixes (3)
| ID | Cím |
|----|-----|
| #146 | Implement Basic Error Handling in Frontend |
| #145 | Standardize API Base URL Usage in Frontend |
| #142 | Implement Catalog API Endpoints |
### Egyéb / Nincs mérföldkő (16)
| ID | Cím |
|----|-----|
| #227 | [FIX] NAV API v3 queryTaxpayer - .env query |
| #226 | Frontend: flag-icons CSS import hiba |
| #225 | Hiba: Frontend - flag-icons CSS import |
| #224 | Hiba: NAV API aláírás (INVALID_REQUEST) |
| #218 | Frontend: Cég létrehozás 3-lépéses Onboarding |
| #217 | Backend: Cég (Organization) CRUD API bővítés |
| #216 | Profil UI hiányosságok (Person & User autocomplete) |
| #175 | Advanced Analytics & Reporting Engine |
| #174 | Real-time Notification System |
| #173 | Service Finder Rendszer Áttekintő Dokumentum |
| #140 | Connect Service Moderation Map to Backend |
| #139 | Integrate Gamification Control Panel |
| #138 | Connect Financial Dashboard Tile to Finance API |
| #137 | Implement Real-time System Health Monitor |
| #136 | Implement AI Researcher Logs Backend & Frontend |
| #135 | Connect User Management Table to Real API |
---
## 6. Következtetés
**Összességében a projekt aktív fejlesztés alatt áll,** de a commit-ek gyakorisága és a Phase 2/3/4 kártyák érintetlensége aggodalomra ad okot. A Frontend Architektúra 2.0 dominálja a nyitott kártyákat (32%), ami stratégiai döntés — a B2C/B2B szétválasztás és a dinamikus megjelenítési rendszer alapvető fontosságú a termék jövője szempontjából.
**Főbb akciópontok:**
1. Git commit-ek rendszeresítése a kód biztonsága érdekében
2. Legalább 1 Phase 2 kártya megkezdése (pl. #149 Analytics Service vagy #147 Financial Dashboard)
3. A 16 "Nincs mérföldkő" kártya besorolása
4. Frontend Arch 2.0 alkártyák (20 db) szisztematikus lezárogatása

View File

@@ -0,0 +1,132 @@
# Odometer Rendszer Duplikáció Audit Jelentés
**Dátum:** 2026-06-12
**Auditor:** Rendszer-Architect
**Gitea Issue:** #258
## Összefoglaló
A vizsgálat feltárta, hogy az odometer (kilométeróra) adatok **több helyen és több formában** vannak tárolva a rendszerben, ami duplikációhoz és architekturális inkonzisztenciához vezet.
---
## 1. Összes Odometer-rel Kapcsolatos Elem
### 1.1 Különálló Táblák
| # | Tábla (Schema) | Modell | Fájl | Elsődleges Entitás |
|---|---|---|---|---|
| 1 | `vehicle.odometer_readings` | `OdometerReading` | `backend/app/models/vehicle/asset.py:347` | Asset (járműpéldány) |
| 2 | `vehicle.vehicle_odometer_states` | `VehicleOdometerState` | `backend/app/models/vehicle/vehicle.py:112` | VehicleModelDefinition (katalógus) |
| 3 | `vehicle.asset_telemetry` | `AssetTelemetry` (`current_mileage`) | `backend/app/models/vehicle/asset.py:338` | Asset (járműpéldány) |
### 1.2 Oszlopok Más Táblákban
| # | Tábla | Oszlop | Fájl |
|---|---|---|---|
| 4 | `vehicle.costs` | `odometer` | `backend/app/models/vehicle/vehicle.py:97` |
| 5 | `vehicle.asset_events` | `odometer_reading` | `backend/app/models/vehicle/asset.py:400` |
| 6 | `marketplace.costs` | `odometer_km` | `backend/app/models/marketplace/service.py:172` |
---
## 2. Részletes Elemzés
### 2.1 `OdometerReading` (asset.py:347)
- **Cél:** Km óra állás időbeli nyomonkövetése. Minden egyes leolvasás külön rekord.
- **Adatbázis séma:** `vehicle.odometer_readings(id, asset_id, reading, recorded_at, source, cost_id)`
- **Forrás:** `manual`, `api`, `telemetry`, `cost_entry`
- **Kötődés:** `vehicle.assets` (Asset) - **konkrét járműpéldány**
- **FK:** `odometer_readings_asset_id_fkey``vehicle.assets.id`
### 2.2 `VehicleOdometerState` (vehicle.py:112)
- **Cél:** Okos odometer - becsült aktuális km állás, napi átlag, konfidencia score.
- **Adatbázis séma:** `vehicle.vehicle_odometer_states(vehicle_id PK, last_recorded_odometer, last_recorded_date, daily_avg_distance, estimated_current_odometer, confidence_score, manual_override_avg)`
- **Kötődés:** `vehicle.vehicle_model_definitions` (VehicleModelDefinition) - **katalógusrekord**
- **FK:** `vehicle_odometer_states_vehicle_id_fkey``vehicle.vehicle_model_definitions.id`
- **Adatforrás:** Kizárólag a `VehicleCost.odometer` mezőből számol (`odometer_service.py:59-62`)
### 2.3 `AssetTelemetry.current_mileage` (asset.py:338)
- **Cél:** Telemetriai adat tárolása.
- **Kötődés:** `vehicle.assets` (Asset) - **konkrét járműpéldány**
- **Nincs integrálva** sem az `OdometerReading`, sem a `VehicleOdometerState` rendszerrel.
### 2.4 `VehicleCost.odometer` (vehicle.py:97)
- **Cél:** Költségbejegyzéshez tartozó km állás (NOT NULL).
- **Kötődés:** `vehicle.vehicle_model_definitions` (VehicleModelDefinition)
- **Funkció:** Ez az adatforrása a `VehicleOdometerState` számításnak.
### 2.5 `AssetEvent.odometer_reading` (asset.py:400)
- **Cél:** Digitális szervizkönyv eseményhez tartozó km állás.
- **Kötődés:** `vehicle.assets` (Asset)
- **Nincs integrálva** semmilyen más odometer rendszerrel.
### 2.6 `marketplace.costs.odometer_km`
- **Cél:** Marketplace szolgáltatás árához tartozó km állás.
- **Teljesen elkülönült** rendszer.
---
## 3. A Duplikáció Leírása
### 3.1 Két Párhuzamos Odometer Rendszer
#### A) Asset-alapú Odometer Rendszer (komplett, de kihasználatlan)
- **Tábla:** `vehicle.odometer_readings`
- **Használat:** Csak `expenses.py:108-127` hoz létre `OdometerReading` rekordot költség rögzítésekor.
- **Kötődés:** `Asset` (konkrét jármű)
- **Státusz:** Létezik, de **nincs kihasználva** a VehicleOdometerState számára.
#### B) Vehicle-definition-alapú Odometer Rendszer (aktív, de hibás)
- **Tábla:** `vehicle.vehicle_odometer_states`
- **Service:** `odometer_service.py` - teljes funkcionalitás
- **Kötődés:** `VehicleModelDefinition` (katalógusrekord)
- **Adatforrás:** `VehicleCost.odometer` (szintén vehicle-definition-hez kötött)
- **Státusz:** Működik, de **architekturálisan hibás**, mert egy katalógusrekordhoz rendel km állást.
### 3.2 Architekturális Következmények
1. **Adatvesztés:** Az Asset-hez tartozó `OdometerReading` adatok nincsenek felhasználva a VehicleOdometerState számításban.
2. **Inkonzisztens adat:** Telemetriából vagy manuális bevitelből származó km adatok nem kerülnek be a VehicleOdometerState-ba.
3. **Entitás zavar:** A `VehicleModelDefinition` egy katalógusrekord, aminek NINCS km óra állása.
4. **Több forrás, nincs szinkron:** AssetTelemetry, OdometerReading, AssetEvent mind Asset-hez kötött, de nincsenek szinkronizálva.
---
## 4. Mermaid Diagram
```mermaid
graph TD
subgraph "ASSET-alapú (konkrét jármű)"
A[Asset] --> OR[OdometerReading<br/>vehicle.odometer_readings]
A --> AT[AssetTelemetry<br/>current_mileage]
A --> AE[AssetEvent<br/>odometer_reading]
end
subgraph "VEHICLE-DEFINITION-alapú (katalógus)"
VMD[VehicleModelDefinition] --> VOS[VehicleOdometerState<br/>vehicle.vehicle_odometer_states]
VMD --> VC[VehicleCost<br/>odometer]
end
subgraph "SZOLGÁLTATÁS"
OS[OdometerService<br/>odometer_service.py] -->|számol| VC
OS -.->|NEM használja| OR
end
subgraph "MARKETPLACE (elkülönült)"
MC[Marketplace Cost<br/>odometer_km]
end
style VOS fill:#f96,stroke:#333,stroke-width:2px
style OR fill:#9cf,stroke:#333,stroke-width:2px
style OS fill:#ff9,stroke:#333,stroke-width:2px
```
---
## 5. Javaslat
1. A `VehicleOdometerState`-ot át kell kötni az `Asset` entitáshoz.
2. Az `OdometerService`-nek az `OdometerReading` táblából kellene számolnia.
3. Az `AssetTelemetry.current_mileage` és `AssetEvent.odometer_reading` integrálni kell az `OdometerReading` rendszerbe.
4. A `marketplace.costs.odometer_km` egységesítése.