feat(cafe24): 편집기에서 상품명 수정

제목 옆 연필 버튼 → 입력칸 → 저장. 이름만 바꾸려고 카페24 관리자에 들어갈
필요가 없어진다.

- POST /cafe24/products/{no}/name (JSON) 추가. 쓰기 전에 카페24 현재값을 읽어
  이전 이름을 감사로그(rename_product)에 남긴다 - 되돌릴 revision 이 없으므로
  로그가 유일한 복구 단서다. 값이 같으면 호출하지 않는다.
- build_update_payload/update_product 에 product_name 추가(부분 수정이라
  상세설명·진열·판매는 그대로).
- 빈 값과 250자 초과는 서버에서 400. 화면도 maxlength 로 막는다.
- 평소에는 읽기 전용 제목이고 연필을 눌러야 입력칸이 된다 - 클릭 한 번으로
  실수로 고쳐지지 않게. Enter 저장, Esc 취소.
- 화면은 요청값이 아니라 카페24가 확인해 준 이름으로 다시 그리고, 왼쪽 목록의
  이름·정렬키(data-name)도 함께 갱신한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 18:35:37 +09:00
parent 5127600a3d
commit 3537e058b0
6 changed files with 219 additions and 4 deletions
+6 -1
View File
@@ -158,6 +158,7 @@ def build_update_payload(
*,
description: str | None = None,
mobile_description: str | None = None,
product_name: str | None = None,
display: bool | None = None,
selling: bool | None = None,
shop_no: int | None = None,
@@ -171,6 +172,8 @@ def build_update_payload(
request: dict[str, Any] = {}
if description is not None:
request["description"] = description
if product_name is not None:
request["product_name"] = product_name
if mobile_description is not None:
request["mobile_description"] = mobile_description
if display is not None:
@@ -189,11 +192,12 @@ def update_product(
*,
description: str | None = None,
mobile_description: str | None = None,
product_name: str | None = None,
display: bool | None = None,
selling: bool | None = None,
shop_no: int | None = None,
) -> dict[str, Any]:
"""상품 부분 수정. 상세설명·진열·판매를 한 번의 호출로 바꿀 수 있다.
"""상품 부분 수정. 상세설명·상품명·진열·판매를 한 번의 호출로 바꿀 수 있다.
바꿀 것이 하나도 없으면 호출하지 않고 빈 dict 를 돌려준다.
@@ -203,6 +207,7 @@ def update_product(
payload = build_update_payload(
description=description,
mobile_description=mobile_description,
product_name=product_name,
display=display,
selling=selling,
shop_no=shop_no,