Fix banner reorder API with proper request schema

- 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 <noreply@anthropic.com>
This commit is contained in:
AutonetSellCar Deploy
2025-12-31 16:21:05 +09:00
parent 3cf6fd2121
commit 3a4475ea28
3 changed files with 10 additions and 4 deletions

View File

@@ -12,6 +12,7 @@ from ..schemas.hero_banner import (
HeroBannerCreate, HeroBannerUpdate, HeroBannerResponse, HeroBannerCreate, HeroBannerUpdate, HeroBannerResponse,
HeroBannerListResponse, HeroBannerLocalizedResponse, HeroBannerListResponse, HeroBannerLocalizedResponse,
HeroBannerSettingsUpdate, HeroBannerSettingsResponse, HeroBannerSettingsUpdate, HeroBannerSettingsResponse,
BannerReorderRequest,
) )
from .auth import get_current_user from .auth import get_current_user
from ..models import User from ..models import User
@@ -325,7 +326,7 @@ def toggle_banner(
@router.put("/admin/reorder") @router.put("/admin/reorder")
def reorder_banners( def reorder_banners(
car_ids: List[int] = Body(...), request: BannerReorderRequest,
db: Session = Depends(get_db), db: Session = Depends(get_db),
current_user: User = Depends(get_admin_user) current_user: User = Depends(get_admin_user)
): ):
@@ -333,13 +334,13 @@ def reorder_banners(
car_ids: 배너 차량 ID 목록 (원하는 순서대로) 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() banner = db.query(HeroBanner).filter(HeroBanner.car_id == car_id).first()
if banner: if banner:
banner.display_order = order banner.display_order = order
db.commit() 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") @router.get("/admin/banner-cars")

View File

@@ -103,3 +103,8 @@ class HeroBannerLocalizedResponse(BaseModel):
class Config: class Config:
from_attributes = True from_attributes = True
# 배너 순서 재정렬 요청
class BannerReorderRequest(BaseModel):
car_ids: list[int]

View File

@@ -211,7 +211,7 @@ export const heroBannersApi = {
}, },
adminReorderBanners: async (carIds: number[]): Promise<{ message: string; count: number }> => { 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; return data;
}, },