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

@@ -100,4 +100,67 @@ async def list_body_types(
"name_hu": r.name_hu,
}
for r in rows
]
]
# ═══════════════════════════════════════════════════════════════════════════════
# NEW: Cascading Catalog Endpoints for Vehicle Wizard (Drill-down UI)
# ═══════════════════════════════════════════════════════════════════════════════
@router.get("/brands", response_model=List[str])
async def list_catalog_brands(
vehicle_class: Optional[str] = Query(None, description="Szűrés járműosztályra (pl. personal, motorcycle)"),
q: Optional[str] = Query(None, description="Keresési szöveg (autocomplete)"),
db: AsyncSession = Depends(get_db),
current_user = Depends(deps.get_current_user)
):
"""Márkák listája a vehicle_model_definitions táblából, autocomplete-hez.
GET /catalog/brands?class=personal&q=bmw
"""
return await AssetService.get_catalog_brands(db, vehicle_class, q)
@router.get("/brands/{brand}/models")
async def list_catalog_models(
brand: str,
vehicle_class: Optional[str] = Query(None, description="Szűrés járműosztályra"),
db: AsyncSession = Depends(get_db),
current_user = Depends(deps.get_current_user)
):
"""Adott márkához tartozó modellek listája.
GET /catalog/brands/BMW/models
"""
if not brand or brand.strip() == "":
return []
return await AssetService.get_catalog_models(db, brand, vehicle_class)
@router.get("/brands/{brand}/models/{model}/years")
async def list_catalog_years(
brand: str,
model: str,
db: AsyncSession = Depends(get_db),
current_user = Depends(deps.get_current_user)
):
"""Adott márkához és modellhez tartozó elérhető évjáratok.
GET /catalog/brands/BMW/models/X5/years
"""
if not brand or not model or brand.strip() == "" or model.strip() == "":
return []
return await AssetService.get_catalog_years(db, brand, model)
@router.get("/brands/{brand}/models/{model}/trims")
async def list_catalog_trims(
brand: str,
model: str,
year: Optional[int] = Query(None, description="Szűrés évjáratra"),
db: AsyncSession = Depends(get_db),
current_user = Depends(deps.get_current_user)
):
"""Adott márkához, modellhez és opcionális évjárathoz tartozó felszereltségek/motorváltozatok.
GET /catalog/brands/BMW/models/X5/trims?year=2023
"""
if not brand or not model or brand.strip() == "" or model.strip() == "":
return []
return await AssetService.get_catalog_trims(db, brand, model, year)