Skip to content

feat(search-chips): 검색 키워드 바로가기 칩 관리 화면·감사 로그 라벨 #57

Description

@chanwoo7

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 릴리즈 뒤에 실행

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions