Skip to content

fix(web): explore 필터 interim 정직화 — 무효 정렬 숨김·칩 desync·CategoryFilter 재배선·드롭다운 크롬 (#843)#880

Merged
thxforall merged 2 commits into
devfrom
feat/843-explore-filter-interim
Jul 10, 2026
Merged

fix(web): explore 필터 interim 정직화 — 무효 정렬 숨김·칩 desync·CategoryFilter 재배선·드롭다운 크롬 (#843)#880
thxforall merged 2 commits into
devfrom
feat/843-explore-filter-interim

Conversation

@thxforall

Copy link
Copy Markdown
Contributor

Closes #843

요약

Explore 필터 interim 정직화 (FE-only, BE 비종속). PRD #825 / D-EXPLORE #797.
mode-aware sort(무효 정렬 숨김) · 스타일 칩 desync 제거(query 파생) · CategoryFilter 재배선 · editorial 칩 dead-end 제거 · 검색 드롭다운 이중크롬 제거 + a11y.

이 브랜치는 이전에 구현·2축 리뷰까지 끝났으나 base가 stale해져 재통합했다. 아래는 재머지(dev 최신화) 내역이며, #843 코드 델타 자체는 원 SHIP 커밋(40de9c8f)과 byte-identical이다.

Stale base 재머지 (dev #863 / #857 / #827 / #766 / #766 위)

#857과 직교 (seed 게이팅 미변경)

  • perf(web): explore browse 첫 페이지 SSR seed로 첫 페인트 당김 (#856) #857/#863의 seed 게이팅(useExploreData.ts: browseSort = activeSort === "popular" ? "popular" : "recent", initialItemsbrowseSort === "recent"일 때만 seed)은 dev 것 그대로 유지. #843은 훅을 건드리지 않음.
  • #843의 coerceSortForMode(activeSort, mode)표시 레이어 전용(<select>가 mode가 못 지키는 sort를 노출하지 않게 coerce). 훅의 fetch/seed는 raw activeSort를 읽음 → 두 레이어 직교, 상호 정합.

#844와 공유 파일 (나중 머지 시 rebase 필요)

검증 (실측)

  • bun run generate:api (orval v8.5.3, offline openapi.json 소비) → OK
  • rm -rf .next && bun run tsc --noEmit0 errors
  • 변경 6파일 타겟 eslint0 (dev baseline 전체 lint는 사전에러 있어 미실행)
  • vitest: exploreFilters.test.ts + explore-seed-sort.test.ts17 passed · messages-parity.test.ts(i18n 카탈로그 정합) → pass
  • mp-review 2축: Standards SHIP · Spec SHIP (hard blocker 없음)

변경 파일 (6)

  • explore/ExploreClient.tsx — mode-aware sort + coerceSortForMode + CategoryFilter 배선 + 이중크롬 제거 + combobox a11y
  • explore/exploreFilters.ts (신규) + __tests__/exploreFilters.test.ts (신규, 15케이스)
  • explore/CategoryFilter.tsx — dead store-write → controlled canned-query 팔레트
  • explore/SortDropdown.tsxoptions prop 추가
  • search/SearchSuggestions.tsx — listbox id/aria-label (feat(#765): feat(web): explore 검색 서제스천에 엔티티 히트 통합 (/search/entities 소비) #766 엔티티 히트 위에 델타만)

🤖 Generated with Claude Code

thxforall and others added 2 commits July 9, 2026 22:15
…배선·드롭다운 크롬 (#843)

BE 비종속 FE 정직화 (PRD #825 / D-EXPLORE #797). 서버 facet 소비는 graduated(#799/#851/#842).

- 정렬(crit1): mode-aware 옵션 — browse는 solution_count 숨김(useInfinitePosts 미지원, 무성 no-op),
  search만 노출(service.rs가 실제 지원). search→browse 전환 시 coerceSortForMode로 표시값 정합.
- 스타일 칩 desync(crit2): activeStyle을 query에서 파생(단일 소스). 자유 입력·서제스천 선택으로
  query가 갈라지면 하이라이트 자동 해제 → stale-highlight 제거.
- CategoryFilter(crit3): 아무도 안 읽던 useFilterStore write(죽은 컴포넌트)를 controlled
  canned-query 팔레트로 재배선 + 마운트. 파생 하이라이트, 빈 결과는 기존 recovery 상태로.
- editorial 칩(crit4): 라벨=canned query 유지, 파생 하이라이트로 dead-end 구조적 제거.
- 검색 드롭다운(crit5): ExploreClient wrapper 카드 + SearchSuggestions 자체 카드 이중크롬 제거
  (단일 크롬). input을 combobox(aria-expanded/controls/autocomplete)로, listbox에 id/aria-label.

canned query 값은 product/editorial 결정(라벨=title/artist/group 텍스트 검색, 결과 충만도는
라이브 인덱스 콘텐츠 의존). TDD: exploreFilters 순수 로직 15 케이스.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@thxforall thxforall added the bump:patch Bug fixes / internal refactor label Jul 10, 2026
@vercel

vercel Bot commented Jul 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
decoded-app Ready Ready Preview, Comment Jul 10, 2026 7:11am

@thxforall thxforall moved this from Todo to In Progress in decoded-monorepo Jul 10, 2026
@thxforall
thxforall marked this pull request as ready for review July 10, 2026 16:39
@thxforall
thxforall merged commit 4414382 into dev Jul 10, 2026
11 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in decoded-monorepo Jul 10, 2026
@thxforall thxforall moved this from Done to In Progress in decoded-monorepo Jul 10, 2026
@thxforall thxforall moved this from In Progress to Done in decoded-monorepo Jul 10, 2026
github-actions Bot pushed a commit that referenced this pull request Jul 10, 2026
thxforall added a commit that referenced this pull request Jul 10, 2026
explore surface의 하드코딩 영문을 useTranslations("Explore")로 배선
(#838 홈 baseline 패턴 복제). messages/{ko,en}.json에 Explore 네임스페이스
신설(ko는 실제 한국어 초안), 키셋 1:1 파리티 + ICU 보간 정적 테스트를
i18n/__tests__에 추가. explore는 CSR(client mutator가 URL locale 추종)
이라 RSC serverApiGet locale 전달 스텝은 불필요(홈 전용 갭).

배선: ExploreClient(헤더/검색/에러·엠프티 상태/로딩), EntityTabBar(탭
라벨+aria), ComingSoonState(타이틀/설명/배지), SortDropdown(정렬 라벨),
ExploreCardCell(alt/스팟 aria, ICU plural). 엠프티 상태 동적 카피는 ICU
이스케이프 함정을 피해 곡선따옴표(‘{query}’) 사용 + 보간 테스트로 가드.

스코프 결정:
- STYLE_TAXONOMY 스타일칩/POPULAR_SEARCH_TAGS는 미번역 — 라벨이 검색
  쿼리로 그대로 주입(setQuery)되는 검색 토큰/고유명사라 번역 시 백엔드
  검색 동작이 바뀜.
- SearchSuggestions(전역 검색 드롭다운)는 이번 스코프 제외 — 비지역화
  루트 레이아웃 Header에도 마운트되어 NextIntlClientProvider 밖이라
  useTranslations 배선 시 전역 크래시. 셸 프로바이더 커버리지 후속 필요.

#880(#843 explore 필터 interim)과 ExploreClient.tsx·SortDropdown.tsx
공유 — 문자열만 t() 교체, 필터 로직/SORT_OPTIONS 상수 shape 미변경
(나중 머지 rebase 최소화).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cocoyoon
cocoyoon deleted the feat/843-explore-filter-interim branch July 11, 2026 10:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump:patch Bug fixes / internal refactor

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant