MD-16 · 검색어 태그

검색어 태그 (상품명과 분리한 검색·기획 태그)

검색 키워드를 상품명에 끼워넣던 관행을 폐지하고, 상품과 별도로 부착·재사용하는 검색 태그를 신설한다. 자유입력 + 기존 태그 목록 조회로 표기 통일과 남발을 방지한다.

🟡 준비 필요 상품관리 검색·색인 신규 테이블
✏️ 기존 화면 수정 · 컬럼 추가
무엇 — 검색 키워드를 상품명에 끼워넣던 관행을 폐지하고, 상품과 별도로 부착·재사용하는 검색 태그를 신설한다. 자유입력 + 기존 태그 목록 조회로 표기 통일과 남발을 방지한다.📍 위치: 상품관리 › 공급사 상품 관리 › 편집

핵심 결정

태그 저장 위치
상품명(product_name)과 분리 — 신규 product_search_tag + seller_product_tag_map
입력 방식
자유입력 + 기존 등록 태그 목록 조회(사용빈도 노출)로 표기 통일·남발 방지
중복 차단
정규화 키(공백·대소문자 제거)로 기존 태그와 대조 후 재사용
노출 제어
태그 유형별 — SEARCH(색인 전용) / FILTER(기획전 필터) / BADGE(라벨 노출)
위치
공급사 상품 관리 › 편집에 태그 칸 신설 · 앱은 큐레이션/검색 반영(3순위)
01

화면 — 먼저 보기

이 티켓이 실제로 어떤 화면이 되는지부터

기존 상품명에 끼워넣은 검색 키워드를 태그로 옮기고 상품명을 정리하는 1회성 마이그레이션검색 색인 반영 시점은 착수 전 미팅에서 확정한다(현재 미정).
현행 화면 · 실제 캡처
현행 「상품 수정」 — 검색어 태그 추가
현행 「상품 수정」 — 검색어 태그 추가
변경안 · 이렇게 바뀜
상품관리 › 공급사 상품 관리 › 편집컬럼 추가
노출 ▾검색태그 유무 ▾🔍 상품명·히어로코드 검색태그 관리상품명 정리 일괄
히어로코드상품명공급사검색 태그 🆕노출수정일
HERO0012345국내산 삼겹살 1kg(주)한돈유통박스특가 · 여름추천노출2026-07-28
HERO0067890냉동 새우 500g오션푸드대용량 · 급냉노출2026-07-27
HERO0099001무항생제 계란 30구데일리팜(태그 없음)미노출2026-07-20

▲ 공급사 상품 관리 목록 — 바뀌는 컬럼 🆕 강조(실 데이터 예시)

1
편집 진입 — 공급사 상품 관리 목록에서 상품 편집을 열면, 상품명 아래에 신설된 '검색 태그' 칸이 보인다.
2
기존 태그 조회 — 태그 입력란을 누르면 등록된 태그 목록이 사용빈도·유형과 함께 뜬다. 통일성을 위해 기존 태그에서 먼저 고르도록 유도.
3
입력·중복 차단 — 자유입력하면 정규화 키로 기존 태그와 대조한다. 동일 태그면 재사용하고, 유사하면 후보를 제안해 신규 남발을 막는다.
4
상품명 정리 — 상품명에 박혀있던 검색 키워드를 지우고, 그 키워드를 태그로 대체한다. 원본은 original_product_name에 보존.
5
저장·색인 반영 — 저장 시 매핑을 갱신하고 검색 색인 큐에 등록한다. 반영 시점(즉시/배치)은 미팅 확정 사항.
6
앱 반영 — FILTER·BADGE 태그는 앱 검색과 기획전 필터에 노출되고, SEARCH 태그는 검색 결과 커버에만 쓰인다.
02

정책 / 정의

용어를 못 박고, 규칙을 명확히

용어 정의
용어정의
검색 태그상품명과 별도로 상품에 부착하는 키워드 라벨(예: 박스특가, 여름추천). 고객 검색어 커버와 기획전 필터에 사용.
태그 마스터등록된 태그의 원본 목록. 중복 판정·표기 통일·사용빈도 관리의 기준(product_search_tag).
정규화 키(normalized key)띄어쓰기·대소문자·양끝 공백을 제거한 중복 판정용 값. '박스 특가'와 '박스특가'를 동일 태그로 취급.
태그 유형SEARCH=검색 색인 전용(앱 미노출) / FILTER=기획전·검색 필터 노출 / BADGE=상품 라벨 노출. (가정) 미지정 시 SEARCH 기본.
히어로코드상품 식별 표준키. seller_product.hero_product_code, 태그 매핑의 상품 측 키.
상품명 정리검색용으로 product_name에 끼워넣은 키워드를 태그로 이관하고 상품명을 사람이 읽기 좋게 되돌리는 작업.
색인 반영 시점태그 변경이 앱 검색 결과에 반영되는 타이밍. 즉시/배치 여부 미팅 확정 필요(현재 미정).
정책 (규칙)
#규칙비고
1태그는 상품명에 저장하지 않고 별도 매핑 테이블로만 관리한다.상품명 오염(지저분함)의 근본 원인 제거. product_name은 순수 상품명만.
2신규 태그 입력 시 정규화 키로 기존 태그와 대조, 동일하면 기존 태그를 재사용한다.'박스특가' 중복 생성 차단. 대조 결과가 유사(부분일치)면 편집 화면에 후보 제안.
3표기 정리: 양끝 trim + 연속 공백 1개로 축약, 이모지·특수문자 제한.(가정) 허용 문자셋·최대 길이(50자)는 착수 전 확정.
4남발 방지: 편집 화면에서 기존 태그 목록·사용빈도를 먼저 노출한 뒤 자유입력을 허용한다.(가정) 상품당 태그 상한 10개. 미팅 논의 항목.
5태그 유형별 노출: SEARCH는 검색 색인만, FILTER/BADGE는 앱 노출까지 반영한다.세일즈 키워드는 검색 유도(SEARCH), 기획전 묶음은 FILTER로 운영.
6태그 저장 시 검색 색인 반영 시점을 정의한다.(가정) 저장 즉시 색인 큐 등록, 최대 N분 지연 반영. 확정 필요 — 티켓 논의사항.
7태그 비활성(use_yn='N') 시 신규 부착은 막고 기존 매핑은 유지한다.노출에서만 제외. 정리(하드 삭제)는 배치로 별도 처리(가정).
8태그 마스터 생성·병합·삭제는 MD 권한으로 제한한다.(가정) 무분별 신설 방지. 편집자는 기존 태그 선택 + 후보 제안까지만.
9기존 상품명 내 키워드 → 태그 이관은 1회성 스크립트 + 검수 후 상품명을 정리한다.이관 확인 전 상품명 수정 금지. 롤백 대비 original_product_name 보존.
03

ERD

데이터 구조 · 관계 · DDL

product_search_tag 신규
idPK bigserial
tag_namevarchar(50)
normalized_keyvarchar(50)
tag_typevarchar(10)
use_ynchar(1)
product_countinteger
created_byvarchar(100)
created_attimestamp
검색 태그 마스터. 표시명·정규화 키·유형·사용빈도 관리, 중복 및 표기 통일의 단일 기준.
seller_product_tag_map 신규
idPK bigserial
hero_product_codeFK varchar(100)
tag_idFK bigint
sort_orderinteger
created_byvarchar(100)
created_attimestamp
상품↔태그 N:M 매핑. 히어로코드 기준으로 상품에 부착된 태그 연결.
seller_product WRITE
hero_product_codePK varchar(100)
product_codevarchar(30)
product_nametext
original_product_nametext
open_ynvarchar(1)
기존 공급사 상품. 태그 이관 후 product_name 정리(UPDATE) 대상. 스키마 변경 없음.
seller_product_tag_map.hero_product_code → seller_product.hero_product_code (N:1)
seller_product_tag_map.tag_id → product_search_tag.id (N:1)
seller_product ↔ product_search_tag = seller_product_tag_map 경유 N:M
-- 검색 태그 마스터 (신규)
CREATE TABLE product_search_tag (
    id              BIGSERIAL   PRIMARY KEY,                 -- 태그 식별자
    tag_name        VARCHAR(50) NOT NULL,                    -- 표시용 태그명 (예: 박스특가, 여름추천)
    normalized_key  VARCHAR(50) NOT NULL,                    -- 정규화 키 (공백·대소문자 제거) — 중복 판정용
    tag_type        VARCHAR(10) NOT NULL DEFAULT 'SEARCH',   -- 유형: SEARCH(색인전용)/FILTER(기획필터)/BADGE(라벨노출)
    use_yn          CHAR(1)     NOT NULL DEFAULT 'Y',        -- 사용 여부 Y/N
    product_count   INTEGER     NOT NULL DEFAULT 0,          -- 연결 상품 수 (남발 판단용 캐시)
    created_by      VARCHAR(100),                            -- 생성자(MD)
    created_at      TIMESTAMP   NOT NULL DEFAULT now(),      -- 생성일시
    updated_at      TIMESTAMP,                               -- 수정일시
    CONSTRAINT uq_search_tag_norm UNIQUE (normalized_key)    -- 정규화 키 유일 → 중복 태그 생성 차단
);
COMMENT ON TABLE product_search_tag IS '검색 태그 마스터: 상품명과 분리된 검색·기획 키워드';

-- 상품↔태그 매핑 (신규, N:M)
CREATE TABLE seller_product_tag_map (
    id                BIGSERIAL    PRIMARY KEY,              -- 매핑 식별자
    hero_product_code VARCHAR(100) NOT NULL,                 -- 상품 히어로코드
    tag_id            BIGINT       NOT NULL,                 -- 태그 id
    sort_order        INTEGER      NOT NULL DEFAULT 0,       -- 상품 내 태그 노출 순서
    created_by        VARCHAR(100),                          -- 부착자
    created_at        TIMESTAMP    NOT NULL DEFAULT now(),   -- 부착일시
    CONSTRAINT uq_sp_tag UNIQUE (hero_product_code, tag_id), -- 동일 상품 중복 부착 방지
    CONSTRAINT fk_sptag_product FOREIGN KEY (hero_product_code)
        REFERENCES seller_product (hero_product_code),
    CONSTRAINT fk_sptag_tag FOREIGN KEY (tag_id)
        REFERENCES product_search_tag (id)
);
CREATE INDEX idx_sptag_tag  ON seller_product_tag_map (tag_id);            -- 태그별 상품 역조회
CREATE INDEX idx_sptag_hero ON seller_product_tag_map (hero_product_code); -- 상품별 태그 조회
COMMENT ON TABLE seller_product_tag_map IS '공급사 상품 ↔ 검색 태그 매핑';

-- 기존 상품명 정리 (스키마 변경 없음, 이관 후 UPDATE 예시)
-- UPDATE seller_product SET product_name = :cleaned WHERE hero_product_code = :code; -- 키워드 제거·정리
04

화면 상세 — 세부 표·규칙

목록 외 품목표·모달·규칙 등 세부 화면

편집 모달 — 검색 태그 입력 + 기존 등록 태그 목록 조회
등록 태그유형연결 상품수상태
박스특가BADGE128사용
여름추천FILTER34사용
박스 특가SEARCH0병합대상(→박스특가)
자유입력 칸 + 이 목록에서 선택. 사용빈도 높은 태그를 상단 노출해 통일성 유도. '박스 특가'는 정규화 시 '박스특가'와 동일 판정되어 병합 후보로 표시.
태그 정규화·노출 규칙표
입력 예시정규화 결과판정노출
'박스 특가 '박스특가기존 태그 재사용유형 따름
'여름추천'여름추천기존 태그 재사용FILTER=앱 필터 노출
'신상'신상신규 생성(MD 승인)기본 SEARCH(앱 미노출)
양끝 trim·연속공백 축약·대소문자 통일 후 normalized_key로 대조. (가정) 최대 50자, 특수문자·이모지 제한, 상품당 10개 상한 — 착수 전 확정.