feat(cupang): 등록된 제품 수정 팝업
- 동작 열에 [수정] 버튼 → 제품명/제품코드/쿠팡상품코드 수정 팝업
- POST /cupang/api/products/{id}/edit (JSON), 제품코드 중복은 400
- 제품코드 변경 시 cupang_box_rules 의 product_code/스냅샷도 함께 이동
(같은 코드 규칙이 이미 있으면 이동하지 않음). 출고 라인은 과거 기록이라 유지
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -917,6 +917,31 @@ async def product_set_active(
|
||||
return RedirectResponse(url="/cupang/products", status_code=303)
|
||||
|
||||
|
||||
@router.post("/api/products/{product_id:int}/edit")
|
||||
async def product_edit(
|
||||
request: Request,
|
||||
product_id: int,
|
||||
payload: dict[str, Any] = Body(...),
|
||||
user: dict[str, Any] = Depends(_require_user),
|
||||
) -> JSONResponse:
|
||||
"""등록된 제품 수정. body: {product_name, product_code, coupang_item_code}."""
|
||||
store = _store(request)
|
||||
if store is None:
|
||||
raise HTTPException(status_code=503, detail="cupang_db 미설정")
|
||||
try:
|
||||
product = store.update_product(
|
||||
product_id=product_id,
|
||||
product_name=str(payload.get("product_name") or ""),
|
||||
product_code=str(payload.get("product_code") or ""),
|
||||
coupang_item_code=str(payload.get("coupang_item_code") or ""),
|
||||
)
|
||||
except KeyError:
|
||||
raise HTTPException(status_code=404, detail="제품을 찾을 수 없습니다.")
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc))
|
||||
return JSONResponse({"ok": True, "product": product})
|
||||
|
||||
|
||||
@router.post("/api/products/{product_id:int}/toggle")
|
||||
async def product_toggle_active(
|
||||
request: Request,
|
||||
|
||||
Reference in New Issue
Block a user