[FAQ] 상품노출/진열
Slack QA 로그(원본 129건) 중 상품노출/진열 영역에서 반복 질문되거나 확정된 답변 10건을 정리했다. ⚠ 배지가 붙은 항목은 과거 오답/정정 이력이 있거나 아직 결론이 나지 않은 주제이니 답변을 그대로 신뢰하지 말고 표시된 대로 재검증할 것.
Q1. 상품 상세 구매 버튼이 BUY NOW/품절/판매시작전 등으로 바뀌는 기준이 뭐야?
섹션 제목: “Q1. 상품 상세 구매 버튼이 BUY NOW/품절/판매시작전 등으로 바뀌는 기준이 뭐야?”우선순위: 품절(모든 사이즈 재고없음)→오프라인전용(onlyOffline)→판매시작전(availableFrom이 미래)→그 외 BUY NOW. 상품에 미답변 질문이 있거나 텍스트가 BUY NOW가 아니면 버튼 비활성화. 장바구니 버튼도 동일 로직. (useProductOrder.tsx: purchaseButtonText/purchaseButtonDisabled)
출처 [[1]][[2]]
Q2. 재고 배치가 상품을 자동 노출/비노출 시킨다는데, 이미지 없는 상품도 노출돼?
섹션 제목: “Q2. 재고 배치가 상품을 자동 노출/비노출 시킨다는데, 이미지 없는 상품도 노출돼?”매일 02:00 배치(ProductBatchService.changeVisible)가 재고 유무로만 visible을 전환. 이미지 체크 없음 - 재고만 있으면 이미지 없어도 visible=true 됨. 프론트(ProductItem.tsx)도 이미지 체크 없이 thumbnailUrl을 그대로 렌더링. NK/NB/MJ/AS/VS/IO/CA 브랜드와 25FW/FA/WI/4S 시즌은 자동전환 제외. 재입고시 sort(진열순서) 값은 그대로 유지됨.
출처 [[55]][[64]][[130]]
Q3. category_sort 테이블에 상품 row가 없으면 그 카테고리에서 상품이 안 보여?
섹션 제목: “Q3. category_sort 테이블에 상품 row가 없으면 그 카테고리에서 상품이 안 보여?”그렇다. category_sort는 단순 정렬용이 아니라 ‘노출 화이트리스트’ 역할도 함 - 특정 카테고리 조합에 row가 없으면 상품이 실재해도 목록이 빈 결과로 반환됨. 신규상품은 두손 동기화배치(ProductSyncService.createCategorySort, isSort=false 대상)가 sort=0으로 자동 등록(메인단독/메인+브랜드/메인+서브+브랜드 3종 조합), 실제 진열순서는 어드민 수기입력으로 채워짐.
⚠주의: 같은 사실이 세션마다 다르게 답변된 적 있음(한 스레드에서는 “정렬만 관여, 노출과 무관”이라는 구버전 오답이 재발). 재질문 시 이 FAQ를 먼저 공유할 것
출처 [[44]][[79]][[87]] · 확인 필요 시 담당자: 박근태
Q4. 카테고리 관리에서 GROUP/CATEGORY 구분은 어떻게 동작해?
섹션 제목: “Q4. 카테고리 관리에서 GROUP/CATEGORY 구분은 어떻게 동작해?”CATEGORY=두손 카테고리코드로 자동매핑(categoryCodes 필드). GROUP=subgroup 테이블에 (categoryId, productId) 수동매핑, 관리자가 상품을 직접 등록(POST /v1/subcategories/subgroup, 삭제는 /subgroup/delete). 상위 메인카테고리는 둘 다 필수.
출처 [[24]][[25]][[105]]
Q5. PLP에서 상품을 사이즈별로 쪼개서 각각 보여줄 수 있어?
섹션 제목: “Q5. PLP에서 상품을 사이즈별로 쪼개서 각각 보여줄 수 있어?”현재는 productId 단위 페이징. SKU단위 전환은 백엔드 신규 엔드포인트(기존 API는 안 건드려도 됨)+프론트 신규 컴포넌트로 별도 화면 적용 시 약 2주 소요 추정.
⚠추정: 리소스 추정치는 적용 대상(웍스아웃 스토어 vs 별도 서비스)에 따라 크게 달라짐 - 질문 시 전제조건을 명확히 할 것. QueryDSL SKU기준 페이징/인덱스 가능여부는 검증 안됨
출처 [[106]]
Q6. 상품 이미지 파일명에 규칙이 있어? ({product-code}-{숫자} 형식)
섹션 제목: “Q6. 상품 이미지 파일명에 규칙이 있어? ({product-code}-{숫자} 형식)”있음. ProductBulkImageService.fetchImageType 기준 WORKSOUT: 0=HOVER, 1=THUMBNAIL(90번 있으면 예외), 279=DETAIL, 8089=FITTING, 90=THUMBNAIL(CA접두어 아니면), 99=SCHEME. GRAMICCI: 200=HOVER, 201=THUMBNAIL, 202~299=DETAIL. CARHARTT는 별도규칙 없이 WORKSOUT 규칙을 따름. 이 규칙은 벌크ZIP업로드와 PUT /v1/products/{id}/saveImages(직접업로드) 모두 적용됨(둘 다 ProductBulkImageService.commit 사용). DB 직접입력 시엔 규칙 미적용, type/sort 수동지정 필요. 범위밖 숫자(예: 1000)는 타입매핑 안됨(null). sort값(정렬순서)과 이미지번호(타입결정용 파일명 suffix)는 완전히 다른 필드.
⚠주의: 과거 두 차례(“파일명규칙 유무”, “saveImages 규칙적용여부”) “규칙 없다”는 오답이 나왔다가 사용자 반박으로 뒤집힌 이력 있음
출처 [[76]][[112]] · 확인 필요 시 담당자: 김규현/나원빈
Q7. 컬렉션 상품리스트 중간에 배너이미지를 끼워넣을 수 있어?
섹션 제목: “Q7. 컬렉션 상품리스트 중간에 배너이미지를 끼워넣을 수 있어?”collection_sort는 collection_id+product_id+sort 구조라 상품만 정렬 가능. 배너 삽입은 지금 당장 불가하고, ①collection_sort에 item_type 필드 확장 또는 ②별도 collection_banner 테이블 신설 중 하나로 스키마+API+프론트 로직 추가가 필요함.
⚠주의: 초기 문의에서는 worksout-kr 코드를 확인하지 않고 일반론으로 잘못된 확답을 준 적 있음. 재확인 답변([[62]])이 최종 근거
출처 [[16]][[17]][[62]]
Q8. 상품 상세 추천상품 노출 로직/알고리즘은?
섹션 제목: “Q8. 상품 상세 추천상품 노출 로직/알고리즘은?”우선순위: 같은카테고리+같은색상 > 같은카테고리만 > 같은색상만. 판매중/노출가능/브랜드활성화/사이트별노출설정 충족 상품만, 2차카테고리+색상 기준 최대30개 조회+재고정보 결합. 프론트는 /v2/products/recommend(baseProductId+sourceSite)로 조회, 5분 캐싱.
⚠추정 섞임: 정확한 가중치 로직은 스레드마다 확신도가 달랐음(한쪽은 확정답변, 다른쪽은 “더 봐야 안다”로 유보)
출처 [[34]][[92]] · 확인 필요 시 담당자: 유석진
Q9. 다른색상(otherColor) 상품 매칭 조건은?
섹션 제목: “Q9. 다른색상(otherColor) 상품 매칭 조건은?”brandId/seasonCode(productSecondName)/category2Code/productName/genderCode가 동일하고 productColor만 다른 상품. 웹은 재고>0 조건 포함, 앱은 재고조건 없음(재고 0이어도 다른색상 노출). revamp otherColor API는 위치 미확인.
출처 [[71]]
Q10. 상품정보고시는 어느 API에서 나와?
섹션 제목: “Q10. 상품정보고시는 어느 API에서 나와?”별도 API 없음. GET /v1/products/{productId}/detail 응답의 productInfo 필드(ProductInfoDto)에 포함되어 내려옴.
출처 [[9]]