feat: Add search/filter bar to admin cars page

- Backend: Add search (car name/plate number), color, year filters to GET /api/cars
- Frontend: Add filter bar with car name/plate, color, year range inputs
- Clear button resets all filters

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
AutonetSellCar Deploy
2026-04-02 14:54:01 +09:00
parent 234f91a14a
commit b17840ef75
2 changed files with 97 additions and 2 deletions

View File

@@ -64,6 +64,8 @@ def get_cars(
price_max: Optional[int] = None,
mileage_max: Optional[int] = None,
fuel: Optional[str] = None,
color: Optional[str] = None,
search: Optional[str] = None,
status: Optional[str] = None,
is_displayed: Optional[bool] = None,
admin: bool = Query(False, description="Admin mode - show all cars"),
@@ -85,6 +87,14 @@ def get_cars(
if is_displayed is not None and admin:
base_query = base_query.filter(Car.is_displayed == is_displayed)
# 통합 검색 (차량번호, 차량명)
if search:
search_term = f"%{search}%"
base_query = base_query.filter(
(Car.car_number.ilike(search_term)) |
(Car.car_name.ilike(search_term))
)
if maker_id:
base_query = base_query.filter(Car.maker_id == maker_id)
if model_id:
@@ -101,6 +111,8 @@ def get_cars(
base_query = base_query.filter(Car.mileage <= mileage_max)
if fuel:
base_query = base_query.filter(Car.fuel == fuel)
if color:
base_query = base_query.filter(Car.color.ilike(f"%{color}%"))
total = base_query.count()