feat(cupang): 설정 화면 2열 개편 — itemcode 다중선택 등록 + 활성/삭제
- 수동 등록 카드 제거
- 왼쪽: itemcode_db 전체 목록(낱개+세트) 다중선택, 등록된 항목 진회색+흰글씨
/cupang/api/products/all + /cupang/products/bulk(JSON 일괄 upsert)
- 오른쪽: 등록 제품명 목록 — 제품명/코드/상태 + 활성·비활성 토글 + 완전삭제
/products/{id}/active (토글), /products/{id}/delete (hard delete)
- ItemcodeReader.list_all 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -114,9 +114,17 @@ class ItemcodeReader:
|
||||
비활성 상태이거나 조회 실패 시 빈 리스트(예외 비전파 — UI 는 수동 입력 폴백).
|
||||
"""
|
||||
q = (query or "").strip()
|
||||
if not self.enabled or not self._pool or not self._sql or not q:
|
||||
if not q:
|
||||
return []
|
||||
return self._run(f"%{q}%", limit)
|
||||
|
||||
def list_all(self, *, limit: int = 2000) -> list[dict[str, Any]]:
|
||||
"""전체 상품 목록(낱개+세트). 설정 화면 왼쪽 리스트용."""
|
||||
return self._run("%", limit)
|
||||
|
||||
def _run(self, like: str, limit: int) -> list[dict[str, Any]]:
|
||||
if not self.enabled or not self._pool or not self._sql:
|
||||
return []
|
||||
like = f"%{q}%"
|
||||
try:
|
||||
with self._pool.connection() as conn:
|
||||
rows = conn.execute(
|
||||
|
||||
Reference in New Issue
Block a user