#320 (별칭 치환·초성 매칭) 을 고치면서 함께 확인된, 사용자가 바로 만나는 자동완성 결함 3건.
① 곡 제목 탭에서도 아티스트 자동완성이 뜬다 (버그)
apps/web/src/app/search/HomePage.tsx:324
{isFocusAuto && searchType !== 'number' && (
<SearchAutocomplete ... />
)}
드롭다운 조건이 searchType !== 'number' 뿐이라 'title' 탭에서도 아티스트 후보가 뜬다.
여기서 "원오크"를 고르면 handleSearch가 ONE OK ROCK 으로 치환하는데 searchType 은
'title' 그대로라 검색 결과 0건. #320에서 고친 치환 버그와 증상이 같다.
SearchType = 'all' | 'title' | 'artist' | 'number' (apps/web/src/types/song.ts:1)
- 방향:
'all' | 'artist' 일 때만 드롭다운을 띄우거나, 후보 선택 시 searchType 을 'artist' 로 함께 넘긴다
② 후보를 클릭해도 검색이 실행되지 않는다 (UX)
apps/web/src/app/search/HomePage.tsx:165
const handleAutocompleteClick = (term: string) => {
setSearch(term);
setIsFocusAuto(false);
};
입력창 값만 바뀌고 끝이라 사용자가 엔터나 검색 버튼을 한 번 더 눌러야 한다.
선택 즉시 검색이 나가야 한다. (setSearch 후 handleSearch 를 바로 호출하면
useDeferredValue 를 걷어낸 지금은 목록·입력값이 동기라 치환 판정이 어긋나지 않는다.)
③ 같은 아티스트가 여러 줄로 중복 노출된다 (UX)
apps/web/src/utils/getArtistAlias.ts:58
후보가 별칭 단위라 같은 공식 명칭이 여러 줄 잡힌다. 실제 사전으로 돌려본 결과:
"원오크" -> 원오크락, 원오크 (둘 다 ONE OK ROCK)
"ㅇ" -> 10칸 중 ONE OK ROCK 3줄(원오크락·원오크·원옥),
Aimer 2줄(에메·에이머) → 실제로 보이는 아티스트는 6명뿐
value(공식 명칭) 기준으로 접으면 같은 10칸에 아티스트 10명이 들어간다.
접을 때 어떤 라벨을 남길지는 ④(정렬)와 함께 정하는 게 좋다 — 입력과 가장 가까운 라벨.
작업 체크리스트
참고
#320 (별칭 치환·초성 매칭) 을 고치면서 함께 확인된, 사용자가 바로 만나는 자동완성 결함 3건.
① 곡 제목 탭에서도 아티스트 자동완성이 뜬다 (버그)
apps/web/src/app/search/HomePage.tsx:324드롭다운 조건이
searchType !== 'number'뿐이라'title'탭에서도 아티스트 후보가 뜬다.여기서 "원오크"를 고르면
handleSearch가ONE OK ROCK으로 치환하는데searchType은'title'그대로라 검색 결과 0건. #320에서 고친 치환 버그와 증상이 같다.SearchType = 'all' | 'title' | 'artist' | 'number'(apps/web/src/types/song.ts:1)'all' | 'artist'일 때만 드롭다운을 띄우거나, 후보 선택 시searchType을'artist'로 함께 넘긴다② 후보를 클릭해도 검색이 실행되지 않는다 (UX)
apps/web/src/app/search/HomePage.tsx:165입력창 값만 바뀌고 끝이라 사용자가 엔터나 검색 버튼을 한 번 더 눌러야 한다.
선택 즉시 검색이 나가야 한다. (
setSearch후handleSearch를 바로 호출하면useDeferredValue를 걷어낸 지금은 목록·입력값이 동기라 치환 판정이 어긋나지 않는다.)③ 같은 아티스트가 여러 줄로 중복 노출된다 (UX)
apps/web/src/utils/getArtistAlias.ts:58후보가 별칭 단위라 같은 공식 명칭이 여러 줄 잡힌다. 실제 사전으로 돌려본 결과:
value(공식 명칭) 기준으로 접으면 같은 10칸에 아티스트 10명이 들어간다.접을 때 어떤 라벨을 남길지는 ④(정렬)와 함께 정하는 게 좋다 — 입력과 가장 가까운 라벨.
작업 체크리스트
'title'/'number'탭에서 아티스트 자동완성 비노출 (또는 선택 시 검색 타입 전환)value기준 중복 제거 후 10개 슬라이스index대신value + label로 (SearchAutocomplete.tsx:28)참고
fix/320-autoCompleteMatching)