From 3a4475ea28ca5c0386373cb7ba2db12735622cf8 Mon Sep 17 00:00:00 2001 From: AutonetSellCar Deploy Date: Wed, 31 Dec 2025 16:21:05 +0900 Subject: [PATCH] Fix banner reorder API with proper request schema MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create BannerReorderRequest Pydantic model for reorder endpoint - Update frontend to send car_ids wrapped in object - Fixes 422 Unprocessable Entity on reorder API 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- backend/app/api/hero_banners.py | 7 ++++--- backend/app/schemas/hero_banner.py | 5 +++++ frontend/src/lib/api.ts | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/app/api/hero_banners.py b/backend/app/api/hero_banners.py index 13dd731..d2d4e91 100644 --- a/backend/app/api/hero_banners.py +++ b/backend/app/api/hero_banners.py @@ -12,6 +12,7 @@ from ..schemas.hero_banner import ( HeroBannerCreate, HeroBannerUpdate, HeroBannerResponse, HeroBannerListResponse, HeroBannerLocalizedResponse, HeroBannerSettingsUpdate, HeroBannerSettingsResponse, + BannerReorderRequest, ) from .auth import get_current_user from ..models import User @@ -325,7 +326,7 @@ def toggle_banner( @router.put("/admin/reorder") def reorder_banners( - car_ids: List[int] = Body(...), + request: BannerReorderRequest, db: Session = Depends(get_db), current_user: User = Depends(get_admin_user) ): @@ -333,13 +334,13 @@ def reorder_banners( car_ids: 배너 ė°¨ëŸ‰ ID ëĒŠëĄ (ė›í•˜ëŠ” ėˆœė„œëŒ€ëĄœ) """ - for order, car_id in enumerate(car_ids): + for order, car_id in enumerate(request.car_ids): banner = db.query(HeroBanner).filter(HeroBanner.car_id == car_id).first() if banner: banner.display_order = order db.commit() - return {"message": "Banner order updated", "count": len(car_ids)} + return {"message": "Banner order updated", "count": len(request.car_ids)} @router.get("/admin/banner-cars") diff --git a/backend/app/schemas/hero_banner.py b/backend/app/schemas/hero_banner.py index 95a0f77..d81dfaf 100644 --- a/backend/app/schemas/hero_banner.py +++ b/backend/app/schemas/hero_banner.py @@ -103,3 +103,8 @@ class HeroBannerLocalizedResponse(BaseModel): class Config: from_attributes = True + + +# 배너 ėˆœė„œ ėžŦė •ë Ŧ ėš”ė˛­ +class BannerReorderRequest(BaseModel): + car_ids: list[int] diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index bbe987b..7835621 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -211,7 +211,7 @@ export const heroBannersApi = { }, adminReorderBanners: async (carIds: number[]): Promise<{ message: string; count: number }> => { - const { data } = await api.put('/hero-banners/admin/reorder', carIds); + const { data } = await api.put('/hero-banners/admin/reorder', { car_ids: carIds }); return data; },