BE caquick-be #463(검색 진입 화면 키워드 바로가기 칩)의 관리자 화면. BE는 BE 범위만 진행해 관리자 화면은 이 이슈로 기록.
배경
- 검색 진입 화면 '인기 검색어' 아래 칩 중 '급상승'을 뺀 나머지는 누르면 그 키워드로 검색하는 바로가기
- 운영자가 배포 없이 칩을 추가·수정·삭제·정렬하고, 시즌 키워드(크리스마스·신년)는 노출 기간으로 자동 종료
- '급상승'은 구매자 FE 고정 요소라 관리 대상이 아님
BE API(search-admin.graphql, 모두 ADMIN 전용)
adminSearchKeywordChips: [AdminSearchKeywordChip!]! — 삭제 제외 전체(비활성·기간 밖 포함), 노출 순서(sortOrder·id)
adminCreateSearchKeywordChip(input: { keyword!, isActive = true, startsAt, endsAt }) — 새 칩은 맨 뒤
adminUpdateSearchKeywordChip(input: { chipId!, keyword, isActive, startsAt, endsAt }) — 보낸 필드만 변경, startsAt·endsAt에 null을 보내면 그 경계 제거
adminDeleteSearchKeywordChip(chipId: ID!): Boolean! — 삭제한 키워드로 새 칩 다시 생성 가능
adminReorderSearchKeywordChips(input: { chipIds: [ID!]! }) — 목록 전체 ID를 새 순서로. 화면을 연 사이 다른 관리자가 추가·삭제했으면 IDS_LENGTH_MISMATCH·INVALID_IDS(400) → 목록 재조회 안내
- 에러: KEYWORD_EMPTY·KEYWORD_TOO_LONG(키워드 1~200자, 앞뒤 공백 제거·연속 공백 1칸으로 저장), SEARCH_KEYWORD_CHIP_TAKEN(활성 칩과 키워드 중복, 대소문자 무시), INVALID_EXPOSURE_WINDOW(startsAt >= endsAt), SEARCH_KEYWORD_CHIP_NOT_FOUND
- 노출 규칙은 배너와 같음: 노출 여부 on + 시작 포함(<= now)·종료 제외(> now). bannerLiveStatus 판정 재사용 가능
할 일
- 칩 관리 화면: 목록(현재 노출 여부 표시), 생성·수정(키워드·노출 여부·기간), 삭제, 드래그 등 순서 변경
- 감사 로그:
src/features/audit-logs/meta.ts TARGET_TYPES에 SEARCH_KEYWORD_CHIP(라벨 예: '검색 칩') 추가 — 지금은 손으로 적은 배열이라 누락돼도 tsc가 잡지 못하고 원문으로 fallback, 필터 드롭다운에도 안 나옴. 순서 변경은 순서가 바뀐 칩마다 UPDATE 1건씩 남음
pnpm schema:pull(기본 ref main)은 BE 릴리즈 뒤에 실행
BE caquick-be #463(검색 진입 화면 키워드 바로가기 칩)의 관리자 화면. BE는 BE 범위만 진행해 관리자 화면은 이 이슈로 기록.
배경
BE API(search-admin.graphql, 모두 ADMIN 전용)
adminSearchKeywordChips: [AdminSearchKeywordChip!]!— 삭제 제외 전체(비활성·기간 밖 포함), 노출 순서(sortOrder·id)adminCreateSearchKeywordChip(input: { keyword!, isActive = true, startsAt, endsAt })— 새 칩은 맨 뒤adminUpdateSearchKeywordChip(input: { chipId!, keyword, isActive, startsAt, endsAt })— 보낸 필드만 변경, startsAt·endsAt에 null을 보내면 그 경계 제거adminDeleteSearchKeywordChip(chipId: ID!): Boolean!— 삭제한 키워드로 새 칩 다시 생성 가능adminReorderSearchKeywordChips(input: { chipIds: [ID!]! })— 목록 전체 ID를 새 순서로. 화면을 연 사이 다른 관리자가 추가·삭제했으면 IDS_LENGTH_MISMATCH·INVALID_IDS(400) → 목록 재조회 안내할 일
src/features/audit-logs/meta.tsTARGET_TYPES에SEARCH_KEYWORD_CHIP(라벨 예: '검색 칩') 추가 — 지금은 손으로 적은 배열이라 누락돼도 tsc가 잡지 못하고 원문으로 fallback, 필터 드롭다운에도 안 나옴. 순서 변경은 순서가 바뀐 칩마다 UPDATE 1건씩 남음pnpm schema:pull(기본 ref main)은 BE 릴리즈 뒤에 실행