fix: Reorder API routes and update main page layout

- Move /makers/ and /models/ routes before /{car_id} to fix route conflict
- Center Request Vehicle button, move PromoPreference to the right

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
AutonetSellCar Deploy
2026-01-12 23:48:06 +09:00
parent 2354ee8bbb
commit 3bd1e49699
2 changed files with 53 additions and 55 deletions

View File

@@ -122,6 +122,54 @@ def get_cars(
) )
# Makers - Must be defined before /{car_id} to avoid route conflict
@router.get("/makers/", response_model=List[CarMakerResponse])
def get_makers(db: Session = Depends(get_db)):
"""제조사 목록 조회"""
return db.query(CarMaker).all()
@router.post("/makers/", response_model=CarMakerResponse)
def create_maker(maker_data: CarMakerCreate, db: Session = Depends(get_db)):
"""제조사 등록"""
existing = db.query(CarMaker).filter(CarMaker.code == maker_data.code).first()
if existing:
return existing
maker = CarMaker(**maker_data.dict())
db.add(maker)
db.commit()
db.refresh(maker)
return maker
# Models - Must be defined before /{car_id} to avoid route conflict
@router.get("/models/", response_model=List[CarModelResponse])
def get_models(maker_id: Optional[int] = None, db: Session = Depends(get_db)):
"""모델 목록 조회"""
query = db.query(CarModel)
if maker_id:
query = query.filter(CarModel.maker_id == maker_id)
return query.all()
@router.post("/models/", response_model=CarModelResponse)
def create_model(model_data: CarModelCreate, db: Session = Depends(get_db)):
"""모델 등록"""
existing = db.query(CarModel).filter(
CarModel.code == model_data.code,
CarModel.maker_id == model_data.maker_id
).first()
if existing:
return existing
model = CarModel(**model_data.dict())
db.add(model)
db.commit()
db.refresh(model)
return model
@router.get("/{car_id}", response_model=CarResponse) @router.get("/{car_id}", response_model=CarResponse)
def get_car(car_id: int, admin: bool = Query(False), db: Session = Depends(get_db)): def get_car(car_id: int, admin: bool = Query(False), db: Session = Depends(get_db)):
"""차량 상세 조회""" """차량 상세 조회"""
@@ -295,54 +343,6 @@ def delete_car(car_id: int, db: Session = Depends(get_db)):
raise HTTPException(status_code=500, detail=f"Delete failed: {str(e)}") raise HTTPException(status_code=500, detail=f"Delete failed: {str(e)}")
# Makers
@router.get("/makers/", response_model=List[CarMakerResponse])
def get_makers(db: Session = Depends(get_db)):
"""제조사 목록 조회"""
return db.query(CarMaker).all()
@router.post("/makers/", response_model=CarMakerResponse)
def create_maker(maker_data: CarMakerCreate, db: Session = Depends(get_db)):
"""제조사 등록"""
existing = db.query(CarMaker).filter(CarMaker.code == maker_data.code).first()
if existing:
return existing
maker = CarMaker(**maker_data.dict())
db.add(maker)
db.commit()
db.refresh(maker)
return maker
# Models
@router.get("/models/", response_model=List[CarModelResponse])
def get_models(maker_id: Optional[int] = None, db: Session = Depends(get_db)):
"""모델 목록 조회"""
query = db.query(CarModel)
if maker_id:
query = query.filter(CarModel.maker_id == maker_id)
return query.all()
@router.post("/models/", response_model=CarModelResponse)
def create_model(model_data: CarModelCreate, db: Session = Depends(get_db)):
"""모델 등록"""
existing = db.query(CarModel).filter(
CarModel.code == model_data.code,
CarModel.maker_id == model_data.maker_id
).first()
if existing:
return existing
model = CarModel(**model_data.dict())
db.add(model)
db.commit()
db.refresh(model)
return model
# ==================== Soldout APIs ==================== # ==================== Soldout APIs ====================
@router.post("/{car_id}/soldout") @router.post("/{car_id}/soldout")

View File

@@ -47,20 +47,18 @@ export default function Home() {
<FilmStripSlider banners={banners} settings={bannerSettings} /> <FilmStripSlider banners={banners} settings={bannerSettings} />
<div className="container mx-auto px-4 py-4 sm:py-8"> <div className="container mx-auto px-4 py-4 sm:py-8">
<div className="flex flex-col lg:flex-row items-center justify-center gap-4 lg:gap-8"> {/* Request Vehicle Button - Centered */}
{/* Request Vehicle Button */} <div className="flex justify-center mb-6">
<Link <Link
href="/vehicle-request" href="/vehicle-request"
className="inline-block bg-yellow-500 text-white font-semibold px-6 py-2.5 sm:px-8 sm:py-3 rounded-lg hover:bg-yellow-600 transition shadow-lg text-sm sm:text-base" className="inline-block bg-yellow-500 text-white font-semibold px-6 py-2.5 sm:px-8 sm:py-3 rounded-lg hover:bg-yellow-600 transition shadow-lg text-sm sm:text-base"
> >
{t.requestVehicle} {t.requestVehicle}
</Link> </Link>
</div>
{/* Divider */} {/* Promo Preference - Right aligned */}
<div className="hidden lg:block w-px h-24 bg-white/30"></div> <div className="flex justify-center lg:justify-end">
<div className="lg:hidden w-32 h-px bg-white/30"></div>
{/* Promo Preference */}
<PromoPreference /> <PromoPreference />
</div> </div>
</div> </div>